drm/gma500: Stop using mode->private_flags
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Apr 2020 17:19:38 +0000 (20:19 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 27 May 2020 11:31:42 +0000 (14:31 +0300)
gma500 only uses mode->private_flags to convey the sdvo pixel
multiplier from the encoder .mode_fixup() hook to the encoder
.mode_set() hook. Those always seems get called as a pair so
let's just stuff the pixel multiplier into the encoder itself
as there are no state objects we could use in this non-atomic
driver.

Paves the way for nuking mode->private_flag.

Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
CC: Sam Ravnborg <sam@ravnborg.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200428171940.19552-15-ville.syrjala@linux.intel.com
drivers/gpu/drm/gma500/psb_intel_drv.h
drivers/gpu/drm/gma500/psb_intel_sdvo.c

index fb601983cef0f8e79245b48d3545f2790a9d2790..3dd5718c3e31575c3d5057cab63715145e00bbbd 100644 (file)
 #define INTEL_OUTPUT_DISPLAYPORT 9
 #define INTEL_OUTPUT_EDP 10
 
-#define INTEL_MODE_PIXEL_MULTIPLIER_SHIFT (0x0)
-#define INTEL_MODE_PIXEL_MULTIPLIER_MASK (0xf << INTEL_MODE_PIXEL_MULTIPLIER_SHIFT)
-
-static inline void
-psb_intel_mode_set_pixel_multiplier(struct drm_display_mode *mode,
-                               int multiplier)
-{
-       mode->clock *= multiplier;
-       mode->private_flags |= multiplier;
-}
-
-static inline int
-psb_intel_mode_get_pixel_multiplier(const struct drm_display_mode *mode)
-{
-       return (mode->private_flags & INTEL_MODE_PIXEL_MULTIPLIER_MASK)
-              >> INTEL_MODE_PIXEL_MULTIPLIER_SHIFT;
-}
-
-
 /*
  * Hold information useally put on the device driver privates here,
  * since it needs to be shared across multiple of devices drivers privates.
index 68fb3d7c172b276f63ffcbfaa2e77451ad525755..06e44f47e73ed08763b1961be2b8e552d44264a2 100644 (file)
@@ -132,6 +132,8 @@ struct psb_intel_sdvo {
        /* DDC bus used by this SDVO encoder */
        uint8_t ddc_bus;
 
+       u8 pixel_multiplier;
+
        /* Input timings for adjusted_mode */
        struct psb_intel_sdvo_dtd input_dtd;
 
@@ -928,7 +930,6 @@ static bool psb_intel_sdvo_mode_fixup(struct drm_encoder *encoder,
                                  struct drm_display_mode *adjusted_mode)
 {
        struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder);
-       int multiplier;
 
        /* We need to construct preferred input timings based on our
         * output timings.  To do that, we have to set the output
@@ -955,8 +956,9 @@ static bool psb_intel_sdvo_mode_fixup(struct drm_encoder *encoder,
        /* Make the CRTC code factor in the SDVO pixel multiplier.  The
         * SDVO device will factor out the multiplier during mode_set.
         */
-       multiplier = psb_intel_sdvo_get_pixel_multiplier(adjusted_mode);
-       psb_intel_mode_set_pixel_multiplier(adjusted_mode, multiplier);
+       psb_intel_sdvo->pixel_multiplier =
+               psb_intel_sdvo_get_pixel_multiplier(adjusted_mode);
+       adjusted_mode->clock *= psb_intel_sdvo->pixel_multiplier;
 
        return true;
 }
@@ -972,7 +974,6 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder,
        u32 sdvox;
        struct psb_intel_sdvo_in_out_map in_out;
        struct psb_intel_sdvo_dtd input_dtd;
-       int pixel_multiplier = psb_intel_mode_get_pixel_multiplier(adjusted_mode);
        int rate;
        int need_aux = IS_MRST(dev) ? 1 : 0;
 
@@ -1030,7 +1031,7 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder,
 
        (void) psb_intel_sdvo_set_input_timing(psb_intel_sdvo, &input_dtd);
 
-       switch (pixel_multiplier) {
+       switch (psb_intel_sdvo->pixel_multiplier) {
        default:
        case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break;
        case 2: rate = SDVO_CLOCK_RATE_MULT_2X; break;