From: Ville Syrjälä <[email protected]>

Remove the local lvds fixed mode pointer from the sdvo encoder
structure and instead utilize intel_panel like everyone else.

Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/intel_sdvo.c | 40 ++++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index fc4cec60a60c..cd5d5e800486 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -105,11 +105,6 @@ struct intel_sdvo {
        bool has_hdmi_audio;
        bool rgb_quant_range_selectable;
 
-       /**
-        * This is sdvo fixed pannel mode pointer
-        */
-       struct drm_display_mode *sdvo_lvds_fixed_mode;
-
        /* DDC bus used by this SDVO encoder */
        uint8_t ddc_bus;
 
@@ -765,10 +760,14 @@ intel_sdvo_create_preferred_input_timing(struct 
intel_sdvo *intel_sdvo,
        args.height = height;
        args.interlace = 0;
 
-       if (IS_LVDS(intel_sdvo_connector) &&
-          (intel_sdvo->sdvo_lvds_fixed_mode->hdisplay != width ||
-           intel_sdvo->sdvo_lvds_fixed_mode->vdisplay != height))
-               args.scaled = 1;
+       if (IS_LVDS(intel_sdvo_connector)) {
+               const struct drm_display_mode *fixed_mode =
+                       intel_sdvo_connector->base.panel.fixed_mode;
+
+               if (fixed_mode->hdisplay != width ||
+                   fixed_mode->vdisplay != height)
+                       args.scaled = 1;
+       }
 
        return intel_sdvo_set_value(intel_sdvo,
                                    SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING,
@@ -1144,7 +1143,7 @@ static bool intel_sdvo_compute_config(struct 
intel_encoder *encoder,
                pipe_config->sdvo_tv_clock = true;
        } else if (IS_LVDS(intel_sdvo_connector)) {
                if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo,
-                                                            
intel_sdvo->sdvo_lvds_fixed_mode))
+                                                            
intel_sdvo_connector->base.panel.fixed_mode))
                        return false;
 
                (void) intel_sdvo_get_preferred_input_mode(intel_sdvo,
@@ -1301,7 +1300,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder 
*intel_encoder,
        /* lvds has a special fixed output timing. */
        if (IS_LVDS(intel_sdvo_connector))
                intel_sdvo_get_dtd_from_mode(&output_dtd,
-                                            intel_sdvo->sdvo_lvds_fixed_mode);
+                                            
intel_sdvo_connector->base.panel.fixed_mode);
        else
                intel_sdvo_get_dtd_from_mode(&output_dtd, mode);
        if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd))
@@ -1644,10 +1643,13 @@ intel_sdvo_mode_valid(struct drm_connector *connector,
                return MODE_CLOCK_HIGH;
 
        if (IS_LVDS(intel_sdvo_connector)) {
-               if (mode->hdisplay > intel_sdvo->sdvo_lvds_fixed_mode->hdisplay)
+               const struct drm_display_mode *fixed_mode =
+                       intel_sdvo_connector->base.panel.fixed_mode;
+
+               if (mode->hdisplay > fixed_mode->hdisplay)
                        return MODE_PANEL;
 
-               if (mode->vdisplay > intel_sdvo->sdvo_lvds_fixed_mode->vdisplay)
+               if (mode->vdisplay > fixed_mode->vdisplay)
                        return MODE_PANEL;
        }
 
@@ -2065,6 +2067,7 @@ static void intel_sdvo_destroy(struct drm_connector 
*connector)
        struct intel_sdvo_connector *intel_sdvo_connector = 
to_intel_sdvo_connector(connector);
 
        drm_connector_cleanup(connector);
+       intel_panel_fini(&intel_sdvo_connector->base.panel);
        kfree(intel_sdvo_connector);
 }
 
@@ -2269,10 +2272,6 @@ static void intel_sdvo_enc_destroy(struct drm_encoder 
*encoder)
 {
        struct intel_sdvo *intel_sdvo = to_sdvo(to_intel_encoder(encoder));
 
-       if (intel_sdvo->sdvo_lvds_fixed_mode != NULL)
-               drm_mode_destroy(encoder->dev,
-                                intel_sdvo->sdvo_lvds_fixed_mode);
-
        i2c_del_adapter(&intel_sdvo->ddc);
        intel_encoder_destroy(encoder);
 }
@@ -2660,13 +2659,16 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int 
device)
 
        list_for_each_entry(mode, &connector->probed_modes, head) {
                if (mode->type & DRM_MODE_TYPE_PREFERRED) {
-                       intel_sdvo->sdvo_lvds_fixed_mode =
+                       struct drm_display_mode *fixed_mode =
                                drm_mode_duplicate(connector->dev, mode);
+
+                       intel_panel_init(&intel_connector->panel,
+                                        fixed_mode, NULL);
                        break;
                }
        }
 
-       if (!intel_sdvo->sdvo_lvds_fixed_mode)
+       if (!intel_connector->panel.fixed_mode)
                goto err;
 
        return true;
-- 
2.16.4

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to