Commit 269cb04a authored by Ville Syrjälä's avatar Ville Syrjälä

drm/gma500: Stop using mode->private_flags

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: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200428171940.19552-15-ville.syrjala@linux.intel.com
parent 920dd1b1
...@@ -56,25 +56,6 @@ ...@@ -56,25 +56,6 @@
#define INTEL_OUTPUT_DISPLAYPORT 9 #define INTEL_OUTPUT_DISPLAYPORT 9
#define INTEL_OUTPUT_EDP 10 #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, * Hold information useally put on the device driver privates here,
* since it needs to be shared across multiple of devices drivers privates. * since it needs to be shared across multiple of devices drivers privates.
......
...@@ -132,6 +132,8 @@ struct psb_intel_sdvo { ...@@ -132,6 +132,8 @@ struct psb_intel_sdvo {
/* DDC bus used by this SDVO encoder */ /* DDC bus used by this SDVO encoder */
uint8_t ddc_bus; uint8_t ddc_bus;
u8 pixel_multiplier;
/* Input timings for adjusted_mode */ /* Input timings for adjusted_mode */
struct psb_intel_sdvo_dtd input_dtd; struct psb_intel_sdvo_dtd input_dtd;
...@@ -928,7 +930,6 @@ static bool psb_intel_sdvo_mode_fixup(struct drm_encoder *encoder, ...@@ -928,7 +930,6 @@ static bool psb_intel_sdvo_mode_fixup(struct drm_encoder *encoder,
struct drm_display_mode *adjusted_mode) struct drm_display_mode *adjusted_mode)
{ {
struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder); struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder);
int multiplier;
/* We need to construct preferred input timings based on our /* We need to construct preferred input timings based on our
* output timings. To do that, we have to set the output * 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, ...@@ -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 /* Make the CRTC code factor in the SDVO pixel multiplier. The
* SDVO device will factor out the multiplier during mode_set. * SDVO device will factor out the multiplier during mode_set.
*/ */
multiplier = psb_intel_sdvo_get_pixel_multiplier(adjusted_mode); psb_intel_sdvo->pixel_multiplier =
psb_intel_mode_set_pixel_multiplier(adjusted_mode, multiplier); psb_intel_sdvo_get_pixel_multiplier(adjusted_mode);
adjusted_mode->clock *= psb_intel_sdvo->pixel_multiplier;
return true; return true;
} }
...@@ -972,7 +974,6 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder, ...@@ -972,7 +974,6 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder,
u32 sdvox; u32 sdvox;
struct psb_intel_sdvo_in_out_map in_out; struct psb_intel_sdvo_in_out_map in_out;
struct psb_intel_sdvo_dtd input_dtd; struct psb_intel_sdvo_dtd input_dtd;
int pixel_multiplier = psb_intel_mode_get_pixel_multiplier(adjusted_mode);
int rate; int rate;
int need_aux = IS_MRST(dev) ? 1 : 0; int need_aux = IS_MRST(dev) ? 1 : 0;
...@@ -1030,7 +1031,7 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder, ...@@ -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); (void) psb_intel_sdvo_set_input_timing(psb_intel_sdvo, &input_dtd);
switch (pixel_multiplier) { switch (psb_intel_sdvo->pixel_multiplier) {
default: default:
case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break;
case 2: rate = SDVO_CLOCK_RATE_MULT_2X; break; case 2: rate = SDVO_CLOCK_RATE_MULT_2X; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment