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-documentation-v4l2-async-improvements/20210622-192925 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/922378435e59e00aef32ba7590991f0e9b24acac 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 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