drm/i915/dsi: refactor dsi get hw state readout
authorJani Nikula <jani.nikula@intel.com>
Tue, 15 Mar 2016 19:51:11 +0000 (21:51 +0200)
committerJani Nikula <jani.nikula@intel.com>
Wed, 16 Mar 2016 16:10:34 +0000 (18:10 +0200)
Make the code easier to read and update. No functional changes.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/04b20a9be6a9481ca2eb2a42cdcdc27358152e5f.1458070700.git.jani.nikula@intel.com
drivers/gpu/drm/i915/intel_dsi.c

index ea78b0b..3260665 100644 (file)
@@ -667,7 +667,7 @@ static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
        struct drm_device *dev = encoder->base.dev;
        enum intel_display_power_domain power_domain;
        enum port port;
-       bool ret;
+       bool active = false;
 
        DRM_DEBUG_KMS("\n");
 
@@ -675,38 +675,39 @@ static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
        if (!intel_display_power_get_if_enabled(dev_priv, power_domain))
                return false;
 
-       ret = false;
-
        /* XXX: this only works for one DSI output */
        for_each_dsi_port(port, intel_dsi->ports) {
                i915_reg_t ctrl_reg = IS_BROXTON(dev) ?
                        BXT_MIPI_PORT_CTRL(port) : MIPI_PORT_CTRL(port);
-               u32 dpi_enabled, func;
-
-               func = I915_READ(MIPI_DSI_FUNC_PRG(port));
-               dpi_enabled = I915_READ(ctrl_reg) & DPI_ENABLE;
+               bool enabled = I915_READ(ctrl_reg) & DPI_ENABLE;
 
                /* Due to some hardware limitations on BYT, MIPI Port C DPI
                 * Enable bit does not get set. To check whether DSI Port C
                 * was enabled in BIOS, check the Pipe B enable bit
                 */
                if (IS_VALLEYVIEW(dev) && port == PORT_C)
-                       dpi_enabled = I915_READ(PIPECONF(PIPE_B)) &
-                                                       PIPECONF_ENABLE;
+                       enabled = I915_READ(PIPECONF(PIPE_B)) & PIPECONF_ENABLE;
 
-               if (dpi_enabled || (func & CMD_MODE_DATA_WIDTH_MASK)) {
-                       if (I915_READ(MIPI_DEVICE_READY(port)) & DEVICE_READY) {
-                               *pipe = port == PORT_A ? PIPE_A : PIPE_B;
-                               ret = true;
-
-                               goto out;
-                       }
+               /* Try command mode if video mode not enabled */
+               if (!enabled) {
+                       u32 tmp = I915_READ(MIPI_DSI_FUNC_PRG(port));
+                       enabled = tmp & CMD_MODE_DATA_WIDTH_MASK;
                }
+
+               if (!enabled)
+                       continue;
+
+               if (!(I915_READ(MIPI_DEVICE_READY(port)) & DEVICE_READY))
+                       continue;
+
+               *pipe = port == PORT_A ? PIPE_A : PIPE_B;
+               active = true;
+               break;
        }
-out:
+
        intel_display_power_put(dev_priv, power_domain);
 
-       return ret;
+       return active;
 }
 
 static void intel_dsi_get_config(struct intel_encoder *encoder,