mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
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: aa310d2a5e ("FROMLIST: drm/rockchip: add transfer function for cdn-dp")
Signed-off-by: Zhang Yubing <yubing.zhang@rock-chips.com>
Change-Id: Ibc78b0ec26a0caa32d17bd87d9cb6e134a4aadc6
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user