[PATCH v5 3/4] drm/bridge: anx7625: Support reading edid through aux channel

kernel test robot lkp at intel.com
Thu Jan 20 04:29:04 UTC 2022


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@intel.com/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 at intel.com>

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@lists.01.org


More information about the dri-devel mailing list