On Mon, 17 Sep 2018, Ville Syrjala <[email protected]> wrote:
> 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]>

Reviewed-by: Jani Nikula <[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 701372e512a8..11e8d598702e 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))
> @@ -1642,10 +1641,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;
>       }
>  
> @@ -2063,6 +2065,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);
>  }
>  
> @@ -2267,10 +2270,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);
>  }
> @@ -2663,13 +2662,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;

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to