drm/amd/display: Fix wrong handling for AUX_DEFER case
authorWayne Lin <Wayne.Lin@amd.com>
Sun, 20 Apr 2025 11:22:14 +0000 (19:22 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 May 2025 17:26:43 +0000 (13:26 -0400)
commit3637e457eb0000bc37d8bbbec95964aad2fb29fd
treec0ad9a4a01395fc1c81d22ed4e04678c0af21536
parent9b540e3fe6796fec4fb1344f3be8952fc2f084d4
drm/amd/display: Fix wrong handling for AUX_DEFER case

[Why]
We incorrectly ack all bytes get written when the reply actually is defer.
When it's defer, means sink is not ready for the request. We should
retry the request.

[How]
Only reply all data get written when receive I2C_ACK|AUX_ACK. Otherwise,
reply the number of actual written bytes received from the sink.
Add some messages to facilitate debugging as well.

Fixes: ad6756b4d773 ("drm/amd/display: Shift dc link aux to aux_payload")
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Ray Wu <ray.wu@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c