drm/i915/ddi: refactor intel_ddi_connector_get_hw_state()
authorJani Nikula <jani.nikula@intel.com>
Wed, 20 Nov 2024 12:43:18 +0000 (14:43 +0200)
committerJani Nikula <jani.nikula@intel.com>
Fri, 22 Nov 2024 11:36:59 +0000 (13:36 +0200)
Refactor the switch-case into an if-ladder similar to
intel_ddi_read_func_ctl() for clarity.

This highlights how TRANS_DDI_MODE_SELECT_FDI_OR_128B132B works on
different platforms.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/191f0210d720f3113a092e1ef0c7996a7dee85a0.1732106557.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_ddi.c

index 607c983f07efb461d6ff0d04d0baa6ce4d4af34d..33628cbc0f72ffb7c903a099b26681d2383334c1 100644 (file)
@@ -723,7 +723,7 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
        enum transcoder cpu_transcoder;
        intel_wakeref_t wakeref;
        enum pipe pipe = 0;
-       u32 tmp;
+       u32 ddi_mode;
        bool ret;
 
        wakeref = intel_display_power_get_if_enabled(dev_priv,
@@ -741,38 +741,26 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
        else
                cpu_transcoder = (enum transcoder) pipe;
 
-       tmp = intel_de_read(dev_priv,
-                           TRANS_DDI_FUNC_CTL(dev_priv, cpu_transcoder));
+       ddi_mode = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(dev_priv, cpu_transcoder)) &
+               TRANS_DDI_MODE_SELECT_MASK;
 
-       switch (tmp & TRANS_DDI_MODE_SELECT_MASK) {
-       case TRANS_DDI_MODE_SELECT_HDMI:
-       case TRANS_DDI_MODE_SELECT_DVI:
+       if (ddi_mode == TRANS_DDI_MODE_SELECT_HDMI ||
+           ddi_mode == TRANS_DDI_MODE_SELECT_DVI) {
                ret = type == DRM_MODE_CONNECTOR_HDMIA;
-               break;
-
-       case TRANS_DDI_MODE_SELECT_DP_SST:
+       } else if (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && !HAS_DP20(display)) {
+               ret = type == DRM_MODE_CONNECTOR_VGA;
+       } else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_SST) {
                ret = type == DRM_MODE_CONNECTOR_eDP ||
-                     type == DRM_MODE_CONNECTOR_DisplayPort;
-               break;
-
-       case TRANS_DDI_MODE_SELECT_DP_MST:
-               /* if the transcoder is in MST state then
-                * connector isn't connected */
+                       type == DRM_MODE_CONNECTOR_DisplayPort;
+       } else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_MST ||
+                  (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && HAS_DP20(display))) {
+               /*
+                * If the transcoder is in MST state then connector isn't
+                * connected.
+                */
                ret = false;
-               break;
-
-       case TRANS_DDI_MODE_SELECT_FDI_OR_128B132B:
-               if (HAS_DP20(display))
-                       /* 128b/132b */
-                       ret = false;
-               else
-                       /* FDI */
-                       ret = type == DRM_MODE_CONNECTOR_VGA;
-               break;
-
-       default:
+       } else {
                ret = false;
-               break;
        }
 
 out: