Re: [PATCH v2 10/11] [media] marvell-ccic: use async notifier to get the sensor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Lubomir,

I love your patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.20-rc1 next-20181112]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Lubomir-Rintel/media-make-Marvell-camera-work-on-DT-based-OLPC-XO-1-75/20181112-163212
base:   git://linuxtv.org/media_tree.git master
config: x86_64-randconfig-x003-11121005 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: the linux-review/Lubomir-Rintel/media-make-Marvell-camera-work-on-DT-based-OLPC-XO-1-75/20181112-163212 HEAD e78fa6428e22bbc61543f031695ad6f204f32344 builds fine.
      It only hurts bisectibility.

All error/warnings (new ones prefixed by >>):

   drivers/media/platform/marvell-ccic/cafe-driver.c: In function 'cafe_pci_probe':
>> drivers/media/platform/marvell-ccic/cafe-driver.c:563:2: error: implicit declaration of function 'cafe_shutdown'; did you mean 'mccic_shutdown'? [-Werror=implicit-function-declaration]
     cafe_shutdown(cam);
     ^~~~~~~~~~~~~
     mccic_shutdown
   drivers/media/platform/marvell-ccic/cafe-driver.c: At top level:
>> drivers/media/platform/marvell-ccic/cafe-driver.c:583:13: warning: conflicting types for 'cafe_shutdown'
    static void cafe_shutdown(struct cafe_camera *cam)
                ^~~~~~~~~~~~~
>> drivers/media/platform/marvell-ccic/cafe-driver.c:583:13: error: static declaration of 'cafe_shutdown' follows non-static declaration
   drivers/media/platform/marvell-ccic/cafe-driver.c:563:2: note: previous implicit declaration of 'cafe_shutdown' was here
     cafe_shutdown(cam);
     ^~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +563 drivers/media/platform/marvell-ccic/cafe-driver.c

   481	
   482	/* -------------------------------------------------------------------------- */
   483	/*
   484	 * PCI interface stuff.
   485	 */
   486	
   487	static int cafe_pci_probe(struct pci_dev *pdev,
   488			const struct pci_device_id *id)
   489	{
   490		int ret;
   491		struct cafe_camera *cam;
   492		struct mcam_camera *mcam;
   493	
   494		/*
   495		 * Start putting together one of our big camera structures.
   496		 */
   497		ret = -ENOMEM;
   498		cam = kzalloc(sizeof(struct cafe_camera), GFP_KERNEL);
   499		if (cam == NULL)
   500			goto out;
   501		cam->pdev = pdev;
   502		mcam = &cam->mcam;
   503		mcam->chip_id = MCAM_CAFE;
   504		spin_lock_init(&mcam->dev_lock);
   505		init_waitqueue_head(&cam->smbus_wait);
   506		mcam->plat_power_up = cafe_ctlr_power_up;
   507		mcam->plat_power_down = cafe_ctlr_power_down;
   508		mcam->dev = &pdev->dev;
   509		snprintf(mcam->bus_info, sizeof(mcam->bus_info), "PCI:%s", pci_name(pdev));
   510		/*
   511		 * Vmalloc mode for buffers is traditional with this driver.
   512		 * We *might* be able to run DMA_contig, especially on a system
   513		 * with CMA in it.
   514		 */
   515		mcam->buffer_mode = B_vmalloc;
   516		/*
   517		 * Get set up on the PCI bus.
   518		 */
   519		ret = pci_enable_device(pdev);
   520		if (ret)
   521			goto out_free;
   522		pci_set_master(pdev);
   523	
   524		ret = -EIO;
   525		mcam->regs = pci_iomap(pdev, 0, 0);
   526		if (!mcam->regs) {
   527			printk(KERN_ERR "Unable to ioremap cafe-ccic regs\n");
   528			goto out_disable;
   529		}
   530		mcam->regs_size = pci_resource_len(pdev, 0);
   531		ret = request_irq(pdev->irq, cafe_irq, IRQF_SHARED, "cafe-ccic", cam);
   532		if (ret)
   533			goto out_iounmap;
   534	
   535		/*
   536		 * Initialize the controller and leave it powered up.  It will
   537		 * stay that way until the sensor driver shows up.
   538		 */
   539		cafe_ctlr_init(mcam);
   540		cafe_ctlr_power_up(mcam);
   541		/*
   542		 * Set up I2C/SMBUS communications.  We have to drop the mutex here
   543		 * because the sensor could attach in this call chain, leading to
   544		 * unsightly deadlocks.
   545		 */
   546		ret = cafe_smbus_setup(cam);
   547		if (ret)
   548			goto out_pdown;
   549	
   550		mcam->asd.match_type = V4L2_ASYNC_MATCH_I2C;
   551		mcam->asd.match.i2c.adapter_id = i2c_adapter_id(cam->i2c_adapter);
   552		mcam->asd.match.i2c.address = ov7670_info.addr;
   553	
   554		ret = mccic_register(mcam);
   555		if (ret)
   556			goto out_smbus_shutdown;
   557	
   558		if (i2c_new_device(cam->i2c_adapter, &ov7670_info)) {
   559			cam->registered = 1;
   560			return 0;
   561		}
   562	
 > 563		cafe_shutdown(cam);
   564	out_smbus_shutdown:
   565		cafe_smbus_shutdown(cam);
   566	out_pdown:
   567		cafe_ctlr_power_down(mcam);
   568		free_irq(pdev->irq, cam);
   569	out_iounmap:
   570		pci_iounmap(pdev, mcam->regs);
   571	out_disable:
   572		pci_disable_device(pdev);
   573	out_free:
   574		kfree(cam);
   575	out:
   576		return ret;
   577	}
   578	
   579	
   580	/*
   581	 * Shut down an initialized device
   582	 */
 > 583	static void cafe_shutdown(struct cafe_camera *cam)
   584	{
   585		mccic_shutdown(&cam->mcam);
   586		cafe_smbus_shutdown(cam);
   587		free_irq(cam->pdev->irq, cam);
   588		pci_iounmap(cam->pdev, cam->mcam.regs);
   589	}
   590	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux