Re: [PATCH v5 3/4] drm/bridge: anx7625: Support reading edid through aux channel
From: kernel test robot
Date: Wed Jan 19 2022 - 23:29:55 EST
Hi Hsin-Yi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
[cannot apply to drm/drm-next robh/for-next drm-intel/for-linux-next v5.16 next-20220118]
[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/Hsin-Yi-Wang/drm-bridge-anx7625-send-DPCD-command-to-downstream/20220119-231952
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-r024-20220117 (https://download.01.org/0day-ci/archive/20220120/202201201223.sts9AtBC-lkp@xxxxxxxxx/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/61809df270082584886188b067ee19744f4b35e1
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Hsin-Yi-Wang/drm-bridge-anx7625-send-DPCD-command-to-downstream/20220119-231952
git checkout 61809df270082584886188b067ee19744f4b35e1
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_i2c_probe':
>> drivers/gpu/drm/bridge/analogix/anx7625.c:2648: undefined reference to `devm_of_dp_aux_populate_ep_devices'
vim +2648 drivers/gpu/drm/bridge/analogix/anx7625.c
2574
2575 static int anx7625_i2c_probe(struct i2c_client *client,
2576 const struct i2c_device_id *id)
2577 {
2578 struct anx7625_data *platform;
2579 struct anx7625_platform_data *pdata;
2580 int ret = 0;
2581 struct device *dev = &client->dev;
2582
2583 if (!i2c_check_functionality(client->adapter,
2584 I2C_FUNC_SMBUS_I2C_BLOCK)) {
2585 DRM_DEV_ERROR(dev, "anx7625's i2c bus doesn't support\n");
2586 return -ENODEV;
2587 }
2588
2589 platform = devm_kzalloc(dev, sizeof(*platform), GFP_KERNEL);
2590 if (!platform) {
2591 DRM_DEV_ERROR(dev, "fail to allocate driver data\n");
2592 return -ENOMEM;
2593 }
2594
2595 pdata = &platform->pdata;
2596
2597 platform->client = client;
2598 i2c_set_clientdata(client, platform);
2599
2600 pdata->supplies[0].supply = "vdd10";
2601 pdata->supplies[1].supply = "vdd18";
2602 pdata->supplies[2].supply = "vdd33";
2603 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(pdata->supplies),
2604 pdata->supplies);
2605 if (ret) {
2606 DRM_DEV_ERROR(dev, "fail to get power supplies: %d\n", ret);
2607 return ret;
2608 }
2609 anx7625_init_gpio(platform);
2610
2611 mutex_init(&platform->lock);
2612 mutex_init(&platform->hdcp_wq_lock);
2613
2614 INIT_DELAYED_WORK(&platform->hdcp_work, hdcp_check_work_func);
2615 platform->hdcp_workqueue = create_workqueue("hdcp workqueue");
2616 if (!platform->hdcp_workqueue) {
2617 dev_err(dev, "fail to create work queue\n");
2618 ret = -ENOMEM;
2619 return ret;
2620 }
2621
2622 platform->pdata.intp_irq = client->irq;
2623 if (platform->pdata.intp_irq) {
2624 INIT_WORK(&platform->work, anx7625_work_func);
2625 platform->workqueue = alloc_workqueue("anx7625_work",
2626 WQ_FREEZABLE | WQ_MEM_RECLAIM, 1);
2627 if (!platform->workqueue) {
2628 DRM_DEV_ERROR(dev, "fail to create work queue\n");
2629 ret = -ENOMEM;
2630 goto free_hdcp_wq;
2631 }
2632
2633 ret = devm_request_threaded_irq(dev, platform->pdata.intp_irq,
2634 NULL, anx7625_intr_hpd_isr,
2635 IRQF_TRIGGER_FALLING |
2636 IRQF_ONESHOT,
2637 "anx7625-intp", platform);
2638 if (ret) {
2639 DRM_DEV_ERROR(dev, "fail to request irq\n");
2640 goto free_wq;
2641 }
2642 }
2643
2644 platform->aux.name = "anx7625-aux";
2645 platform->aux.dev = dev;
2646 platform->aux.transfer = anx7625_aux_transfer;
2647 drm_dp_aux_init(&platform->aux);
> 2648 devm_of_dp_aux_populate_ep_devices(&platform->aux);
2649
2650 ret = anx7625_parse_dt(dev, pdata);
2651 if (ret) {
2652 if (ret != -EPROBE_DEFER)
2653 DRM_DEV_ERROR(dev, "fail to parse DT : %d\n", ret);
2654 return ret;
2655 }
2656
2657 if (anx7625_register_i2c_dummy_clients(platform, client) != 0) {
2658 ret = -ENOMEM;
2659 DRM_DEV_ERROR(dev, "fail to reserve I2C bus.\n");
2660 goto free_wq;
2661 }
2662
2663 pm_runtime_enable(dev);
2664 pm_runtime_set_autosuspend_delay(dev, 1000);
2665 pm_runtime_use_autosuspend(dev);
2666 pm_suspend_ignore_children(dev, true);
2667 ret = devm_add_action_or_reset(dev, anx7625_runtime_disable, dev);
2668 if (ret)
2669 return ret;
2670
2671 if (!platform->pdata.low_power_mode) {
2672 anx7625_disable_pd_protocol(platform);
2673 pm_runtime_get_sync(dev);
2674 }
2675
2676 /* Add work function */
2677 if (platform->pdata.intp_irq)
2678 queue_work(platform->workqueue, &platform->work);
2679
2680 platform->bridge.funcs = &anx7625_bridge_funcs;
2681 platform->bridge.of_node = client->dev.of_node;
2682 if (!anx7625_of_panel_on_aux_bus(&client->dev))
2683 platform->bridge.ops |= DRM_BRIDGE_OP_EDID;
2684 if (!platform->pdata.panel_bridge)
2685 platform->bridge.ops |= DRM_BRIDGE_OP_HPD |
2686 DRM_BRIDGE_OP_DETECT;
2687 platform->bridge.type = platform->pdata.panel_bridge ?
2688 DRM_MODE_CONNECTOR_eDP :
2689 DRM_MODE_CONNECTOR_DisplayPort;
2690
2691 drm_bridge_add(&platform->bridge);
2692
2693 if (!platform->pdata.is_dpi) {
2694 ret = anx7625_attach_dsi(platform);
2695 if (ret) {
2696 DRM_DEV_ERROR(dev, "Fail to attach to dsi : %d\n", ret);
2697 goto unregister_bridge;
2698 }
2699 }
2700
2701 if (platform->pdata.audio_en)
2702 anx7625_register_audio(dev, platform);
2703
2704 DRM_DEV_DEBUG_DRIVER(dev, "probe done\n");
2705
2706 return 0;
2707
2708 unregister_bridge:
2709 drm_bridge_remove(&platform->bridge);
2710
2711 if (!platform->pdata.low_power_mode)
2712 pm_runtime_put_sync_suspend(&client->dev);
2713
2714 anx7625_unregister_i2c_dummy_clients(platform);
2715
2716 free_wq:
2717 if (platform->workqueue)
2718 destroy_workqueue(platform->workqueue);
2719
2720 free_hdcp_wq:
2721 if (platform->hdcp_workqueue)
2722 destroy_workqueue(platform->hdcp_workqueue);
2723
2724 return ret;
2725 }
2726
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx