summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/dc/dio/dcn30
diff options
context:
space:
mode:
authorIan Chen <ian.chen@amd.com>2026-04-15 11:25:22 +0800
committerAlex Deucher <alexander.deucher@amd.com>2026-05-05 09:56:52 -0400
commitebb884dbb04785e8828400a8f373dd3043d6f4ae (patch)
tree75fdf47d339d0e4a796990b8f74c5146aa1a6bbd /drivers/gpu/drm/amd/display/dc/dio/dcn30
parent35a8ecb704938596fd655c25dca4234ee5cc031f (diff)
downloadlinux-next-ebb884dbb04785e8828400a8f373dd3043d6f4ae.tar.gz
linux-next-ebb884dbb04785e8828400a8f373dd3043d6f4ae.zip
drm/amd/display: Skip HDR metadata update when Smart Power OLED enabled
[Why & How] While smart power oled is enabled, the infopacket contents are tied to the frame histogram, so it does not need driver side to update the hdr metadata. Reviewed-by: Aric Cyr <aric.cyr@amd.com> Reviewed-by: Anthony Koo <anthony.koo@amd.com> Signed-off-by: Ian Chen <ian.chen@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/dio/dcn30')
-rw-r--r--drivers/gpu/drm/amd/display/dc/dio/dcn30/dcn30_dio_stream_encoder.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dio/dcn30/dcn30_dio_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dio/dcn30/dcn30_dio_stream_encoder.c
index e93be7b6d9b0..c14fb51c2611 100644
--- a/drivers/gpu/drm/amd/display/dc/dio/dcn30/dcn30_dio_stream_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dio/dcn30/dcn30_dio_stream_encoder.c
@@ -470,7 +470,11 @@ void enc3_stream_encoder_update_dp_info_packets(
&info_frame->spd,
true);
}
- if (info_frame->hdrsmd.valid) {
+ /* While smart power oled is enabled DMUB is scanning the contents of each frame
+ * and updating the HDR infopacket contents. Therefore we transition the infopacket
+ * programming control to DMUB while Smart Power OLED is enabled.
+ */
+ if (info_frame->hdrsmd.valid && !info_frame->firmware_controlled_hdr_info_packet) {
enc->vpg->funcs->update_generic_info_packet(
enc->vpg,
3, /* packetIndex */