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