]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/hdmi: add debugfs to contorl HDMI bpc
authorLee Shawn C <shawn.c.lee@intel.com>
Mon, 1 Sep 2025 05:57:20 +0000 (05:57 +0000)
committerImre Deak <imre.deak@intel.com>
Tue, 2 Sep 2025 10:43:34 +0000 (13:43 +0300)
While performing HDMI compliance testing, test equipment may request
different bpc output for signal measurement. However, display driver
typically determines the maximum available bpc based on HW bandwidth.
This change leverages the existing debugfs (intel_force_link_bpp)
to manage HDMI bpc, and making it easier to pass HDMI CTS.

v2: Using exist variable max_requested_bpc.
v3: Extend intel_force_link_bpp to support HDMI as suggested by Imre.
v4: Update commit message suggested by Jani.
v5: Remove unused header file.

Cc: Shankar Uma <uma.shankar@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250901055721.219995-2-shawn.c.lee@intel.com
drivers/gpu/drm/i915/display/g4x_hdmi.c
drivers/gpu/drm/i915/display/intel_hdmi.c
drivers/gpu/drm/i915/display/intel_link_bw.c

index 108ebd97f9e44bf40b201a00f2df6c8b2ffbd19a..f6e2d1ed56397ea70c2fcde4dbd451aa1ca3b460 100644 (file)
@@ -20,7 +20,6 @@
 #include "intel_dp_aux.h"
 #include "intel_dpio_phy.h"
 #include "intel_encoder.h"
-#include "intel_fdi.h"
 #include "intel_fifo_underrun.h"
 #include "intel_hdmi.h"
 #include "intel_hotplug.h"
@@ -136,11 +135,8 @@ static int g4x_hdmi_compute_config(struct intel_encoder *encoder,
        struct intel_atomic_state *state = to_intel_atomic_state(crtc_state->uapi.state);
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 
-       if (HAS_PCH_SPLIT(display)) {
+       if (HAS_PCH_SPLIT(display))
                crtc_state->has_pch_encoder = true;
-               if (!intel_fdi_compute_pipe_bpp(crtc_state))
-                       return -EINVAL;
-       }
 
        if (display->platform.g4x)
                crtc_state->has_hdmi_sink = g4x_compute_has_hdmi_sink(state, crtc);
index cbee628eb26b71769b6a12c61a5fe12e4d13c565..027e8ed0cea811ed40b9cf8568772d664105fa09 100644 (file)
@@ -55,6 +55,7 @@
 #include "intel_display_regs.h"
 #include "intel_display_types.h"
 #include "intel_dp.h"
+#include "intel_fdi.h"
 #include "intel_gmbus.h"
 #include "intel_hdcp.h"
 #include "intel_hdcp_regs.h"
@@ -2345,6 +2346,9 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
        if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK)
                pipe_config->pixel_multiplier = 2;
 
+       if (!intel_fdi_compute_pipe_bpp(pipe_config))
+               return -EINVAL;
+
        pipe_config->has_audio =
                intel_hdmi_has_audio(encoder, pipe_config, conn_state) &&
                intel_audio_compute_config(encoder, pipe_config, conn_state);
index 3caef7f9c7c47f53d29703db1ff79420738d15f6..d194a366ff10119598cb12c84f786b2822062697 100644 (file)
@@ -449,6 +449,7 @@ void intel_link_bw_connector_debugfs_add(struct intel_connector *connector)
        switch (connector->base.connector_type) {
        case DRM_MODE_CONNECTOR_DisplayPort:
        case DRM_MODE_CONNECTOR_eDP:
+       case DRM_MODE_CONNECTOR_HDMIA:
                break;
        case DRM_MODE_CONNECTOR_VGA:
        case DRM_MODE_CONNECTOR_SVIDEO:
@@ -457,11 +458,6 @@ void intel_link_bw_connector_debugfs_add(struct intel_connector *connector)
                if (HAS_FDI(display))
                        break;
 
-               return;
-       case DRM_MODE_CONNECTOR_HDMIA:
-               if (HAS_FDI(display) && !HAS_DDI(display))
-                       break;
-
                return;
        default:
                return;