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:
Zhang Yubing
2023-09-05 09:49:19 +08:00
committed by Tao Huang
parent e2f3daffbb
commit ba59aea9c5

View File

@@ -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)