From ba59aea9c573c00e10a998cc1cea68d544eab45a Mon Sep 17 00:00:00 2001 From: Zhang Yubing Date: Tue, 5 Sep 2023 09:49:19 +0800 Subject: [PATCH] drm/rockchip: cdn-dp: fix aux register failed issue when register dp aux, the aux's drm_dev will be verified first. if it is null, a issue will happen as follow: [ 3.155605][ T58] WARNING: CPU: 1 PID: 58 at drivers/gpu/drm/display/drm_dp_helper.c:2097 drm_dp_aux_register+0x104/0x114 [ 3.155676][ T58] Modules linked in: [ 3.155720][ T58] CPU: 1 PID: 58 Comm: kworker/u12:2 Not tainted 6.1.25 #301 [ 3.155763][ T58] Hardware name: Rockchip RK3399 EVB IND LPDDR4 Board edp (Android) (DT) [ 3.155799][ T58] Workqueue: events_unbound deferred_probe_work_func [ 3.155856][ T58] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 3.155900][ T58] pc : drm_dp_aux_register+0x104/0x114 [ 3.155946][ T58] lr : cdn_dp_bind+0x268/0x3d0 [ 3.155991][ T58] sp : ffffffc00a7e3980 [ 3.156020][ T58] x29: ffffffc00a7e3980 x28: ffffff800334b3d0 x27: ffffff800334b3c8 [ 3.156082][ T58] x26: 0000000000000001 x25: 0000000000000003 x24: ffffff8002c48040 [ 3.156141][ T58] x23: ffffff8003348ac0 x22: ffffff8003348080 x21: ffffff8002e9d410 [ 3.156201][ T58] x20: ffffff8005923000 x19: ffffff8002c48968 x18: ffffffc00a7650b0 [ 3.156260][ T58] x17: 706968636b636f72 x16: 00000000000000a4 x15: ffffffc00c000000 [ 3.156319][ T58] x14: 0000000000000000 x13: 0000000000000030 x12: 000000000000014a [ 3.156378][ T58] x11: 0000000000000000 x10: 0000000000000001 x9 : ffffffc00996b8a1 [ 3.156437][ T58] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000008062743635 [ 3.156495][ T58] x5 : 0000000000000008 x4 : ffffffc0098e1c5d x3 : ffffff8002e9d718 [ 3.156554][ T58] x2 : ffffff8002e9d718 x1 : 0000000000000000 x0 : ffffff8002c48968 [ 3.156614][ T58] Call trace: [ 3.156643][ T58] drm_dp_aux_register+0x104/0x114 [ 3.156693][ T58] cdn_dp_bind+0x268/0x3d0 [ 3.156738][ T58] component_bind_all+0x130/0x25c [ 3.156786][ T58] rockchip_drm_bind+0x164/0x298 [ 3.156832][ T58] try_to_bring_up_aggregate_device+0x168/0x1b4 [ 3.156880][ T58] __component_add+0xd0/0x17c [ 3.156925][ T58] component_add+0x14/0x20 [ 3.156969][ T58] rockchip_dp_probe+0x36c/0x3d4 [ 3.157013][ T58] platform_probe+0xa8/0xd0 [ 3.157062][ T58] call_driver_probe+0x38/0xa8 [ 3.157107][ T58] really_probe+0x148/0x28c [ 3.157151][ T58] __driver_probe_device+0xb4/0xe0 [ 3.157195][ T58] driver_probe_device+0x44/0x210 [ 3.157239][ T58] __device_attach_driver+0x12c/0x154 [ 3.157284][ T58] bus_for_each_drv+0x84/0xd0 [ 3.157325][ T58] __device_attach+0xf0/0x170 [ 3.157368][ T58] device_initial_probe+0x14/0x20 [ 3.157412][ T58] bus_probe_device+0x34/0x98 [ 3.157454][ T58] deferred_probe_work_func+0x7c/0xd8 [ 3.157499][ T58] process_one_work+0x1a8/0x3b8 [ 3.157552][ T58] worker_thread+0x300/0x430 [ 3.157601][ T58] kthread+0xec/0x1b8 [ 3.157646][ T58] ret_from_fork+0x10/0x20 To avoid this issue, assignment the drm_dev before register dp aux. Fixes: aa310d2a5e0c ("FROMLIST: drm/rockchip: add transfer function for cdn-dp") Signed-off-by: Zhang Yubing Change-Id: Ibc78b0ec26a0caa32d17bd87d9cb6e134a4aadc6 --- drivers/gpu/drm/rockchip/cdn-dp-core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index 878ad7076407..4d8c81447013 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -1055,6 +1055,7 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) dp->aux.name = "DP-AUX"; dp->aux.transfer = cdn_dp_aux_transfer; dp->aux.dev = dev; + dp->aux.drm_dev = drm_dev; ret = drm_dp_aux_register(&dp->aux); if (ret)