Hi Sakari,
I love your patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[cannot apply to rockchip/for-next tegra/for-next v5.13-rc7 next-20210622]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Sakari-Ailus/V4L2-driver-documen...
base:
git://linuxtv.org/media_tree.git master
config: sparc-allyesconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/0day-ci/linux/commit/922378435e59e00aef32ba7590991f0e9...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Sakari-Ailus/V4L2-driver-documentation-v4l2-async-improvements/20210622-192925
git checkout 922378435e59e00aef32ba7590991f0e9b24acac
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sparc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/media/platform/atmel/atmel-sama7g5-isc.c: In function
'microchip_xisc_probe':
> drivers/media/platform/atmel/atmel-sama7g5-isc.c:511:9: error:
implicit declaration of function 'v4l2_async_nf_add_fwnode_remote_subdev'; did you
mean 'v4l2_async_nf_add_fwnode_remote'? [-Werror=implicit-function-declaration]
511 | asd = v4l2_async_nf_add_fwnode_remote_subdev(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| v4l2_async_nf_add_fwnode_remote
> drivers/media/platform/atmel/atmel-sama7g5-isc.c:514:6: error:
expected expression before 'struct'
514 | struct
v4l2_async_subdev);
| ^~~~~~
cc1: some warnings being treated as errors
vim +511 drivers/media/platform/atmel/atmel-sama7g5-isc.c
373
374 static int microchip_xisc_probe(struct platform_device *pdev)
375 {
376 struct device *dev = &pdev->dev;
377 struct isc_device *isc;
378 struct resource *res;
379 void __iomem *io_base;
380 struct isc_subdev_entity *subdev_entity;
381 int irq;
382 int ret;
383 u32 ver;
384
385 isc = devm_kzalloc(dev, sizeof(*isc), GFP_KERNEL);
386 if (!isc)
387 return -ENOMEM;
388
389 platform_set_drvdata(pdev, isc);
390 isc->dev = dev;
391
392 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
393 io_base = devm_ioremap_resource(dev, res);
394 if (IS_ERR(io_base))
395 return PTR_ERR(io_base);
396
397 isc->regmap = devm_regmap_init_mmio(dev, io_base, &isc_regmap_config);
398 if (IS_ERR(isc->regmap)) {
399 ret = PTR_ERR(isc->regmap);
400 dev_err(dev, "failed to init register map: %d\n", ret);
401 return ret;
402 }
403
404 irq = platform_get_irq(pdev, 0);
405 if (irq < 0)
406 return irq;
407
408 ret = devm_request_irq(dev, irq, isc_interrupt, 0,
409 "microchip-sama7g5-xisc", isc);
410 if (ret < 0) {
411 dev_err(dev, "can't register ISR for IRQ %u (ret=%i)\n",
412 irq, ret);
413 return ret;
414 }
415
416 isc->gamma_table = isc_sama7g5_gamma_table;
417 isc->gamma_max = 0;
418
419 isc->max_width = ISC_SAMA7G5_MAX_SUPPORT_WIDTH;
420 isc->max_height = ISC_SAMA7G5_MAX_SUPPORT_HEIGHT;
421
422 isc->config_dpc = isc_sama7g5_config_dpc;
423 isc->config_csc = isc_sama7g5_config_csc;
424 isc->config_cbc = isc_sama7g5_config_cbc;
425 isc->config_cc = isc_sama7g5_config_cc;
426 isc->config_gam = isc_sama7g5_config_gam;
427 isc->config_rlp = isc_sama7g5_config_rlp;
428 isc->config_ctrls = isc_sama7g5_config_ctrls;
429
430 isc->adapt_pipeline = isc_sama7g5_adapt_pipeline;
431
432 isc->offsets.csc = ISC_SAMA7G5_CSC_OFFSET;
433 isc->offsets.cbc = ISC_SAMA7G5_CBC_OFFSET;
434 isc->offsets.sub422 = ISC_SAMA7G5_SUB422_OFFSET;
435 isc->offsets.sub420 = ISC_SAMA7G5_SUB420_OFFSET;
436 isc->offsets.rlp = ISC_SAMA7G5_RLP_OFFSET;
437 isc->offsets.his = ISC_SAMA7G5_HIS_OFFSET;
438 isc->offsets.dma = ISC_SAMA7G5_DMA_OFFSET;
439 isc->offsets.version = ISC_SAMA7G5_VERSION_OFFSET;
440 isc->offsets.his_entry = ISC_SAMA7G5_HIS_ENTRY_OFFSET;
441
442 isc->controller_formats = sama7g5_controller_formats;
443 isc->controller_formats_size = ARRAY_SIZE(sama7g5_controller_formats);
444 isc->formats_list = sama7g5_formats_list;
445 isc->formats_list_size = ARRAY_SIZE(sama7g5_formats_list);
446
447 /* sama7g5-isc RAM access port is full AXI4 - 32 bits per beat */
448 isc->dcfg = ISC_DCFG_YMBSIZE_BEATS32 | ISC_DCFG_CMBSIZE_BEATS32;
449
450 ret = isc_pipeline_init(isc);
451 if (ret)
452 return ret;
453
454 isc->hclock = devm_clk_get(dev, "hclock");
455 if (IS_ERR(isc->hclock)) {
456 ret = PTR_ERR(isc->hclock);
457 dev_err(dev, "failed to get hclock: %d\n", ret);
458 return ret;
459 }
460
461 ret = clk_prepare_enable(isc->hclock);
462 if (ret) {
463 dev_err(dev, "failed to enable hclock: %d\n", ret);
464 return ret;
465 }
466
467 ret = isc_clk_init(isc);
468 if (ret) {
469 dev_err(dev, "failed to init isc clock: %d\n", ret);
470 goto unprepare_hclk;
471 }
472
473 isc->ispck = isc->isc_clks[ISC_ISPCK].clk;
474
475 ret = clk_prepare_enable(isc->ispck);
476 if (ret) {
477 dev_err(dev, "failed to enable ispck: %d\n", ret);
478 goto unprepare_hclk;
479 }
480
481 /* ispck should be greater or equal to hclock */
482 ret = clk_set_rate(isc->ispck, clk_get_rate(isc->hclock));
483 if (ret) {
484 dev_err(dev, "failed to set ispck rate: %d\n", ret);
485 goto unprepare_clk;
486 }
487
488 ret = v4l2_device_register(dev, &isc->v4l2_dev);
489 if (ret) {
490 dev_err(dev, "unable to register v4l2 device.\n");
491 goto unprepare_clk;
492 }
493
494 ret = xisc_parse_dt(dev, isc);
495 if (ret) {
496 dev_err(dev, "fail to parse device tree\n");
497 goto unregister_v4l2_device;
498 }
499
500 if (list_empty(&isc->subdev_entities)) {
501 dev_err(dev, "no subdev found\n");
502 ret = -ENODEV;
503 goto unregister_v4l2_device;
504 }
505
506 list_for_each_entry(subdev_entity, &isc->subdev_entities, list) {
507 struct v4l2_async_subdev *asd;
508
509 v4l2_async_nf_init(&subdev_entity->notifier);
510
511 asd = v4l2_async_nf_add_fwnode_remote_subdev(
512 &subdev_entity->notifier,
513 of_fwnode_handle(subdev_entity->epn),
514 struct v4l2_async_subdev);
515
516 of_node_put(subdev_entity->epn);
517 subdev_entity->epn = NULL;
518
519 if (IS_ERR(asd)) {
520 ret = PTR_ERR(asd);
521 goto cleanup_subdev;
522 }
523
524 subdev_entity->notifier.ops = &isc_async_ops;
525
526 ret = v4l2_async_nf_register(&isc->v4l2_dev,
527 &subdev_entity->notifier);
528 if (ret) {
529 dev_err(dev, "fail to register async notifier\n");
530 goto cleanup_subdev;
531 }
532
533 if (video_is_registered(&isc->video_dev))
534 break;
535 }
536
537 pm_runtime_set_active(dev);
538 pm_runtime_enable(dev);
539 pm_request_idle(dev);
540
541 regmap_read(isc->regmap, ISC_VERSION + isc->offsets.version, &ver);
542 dev_info(dev, "Microchip XISC version %x\n", ver);
543
544 return 0;
545
546 cleanup_subdev:
547 isc_subdev_cleanup(isc);
548
549 unregister_v4l2_device:
550 v4l2_device_unregister(&isc->v4l2_dev);
551
552 unprepare_clk:
553 clk_disable_unprepare(isc->ispck);
554 unprepare_hclk:
555 clk_disable_unprepare(isc->hclock);
556
557 isc_clk_cleanup(isc);
558
559 return ret;
560 }
561
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org