On 2010.06.28 09:45:14 +1000, Dave Airlie wrote:
> From: Dave Airlie <airl...@redhat.com>
> 
> So the previous fix didn't work for everyone, I read the eDP spec and claims 
> a 20% overhead for encoding, so make sure we take this into account when 
> working out the bandwidth requirements.
> 
> This makes my eDP panel happy also, please test on others.
> 
> Signed-off-by: Dave Airlie <airl...@redhat.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c |   10 ++++++++--
>  1 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 6094e42..9830243 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -139,6 +139,12 @@ intel_dp_link_required(struct drm_device *dev,
>  }
>  
>  static int
> +intel_dp_max_data_rate(int max_link_clock, int max_lanes)
> +{
> +     return (max_link_clock * max_lanes * 8) / 10;
> +}
> +
> +static int
>  intel_dp_mode_valid(struct drm_connector *connector,
>                   struct drm_display_mode *mode)
>  {
> @@ -148,7 +154,7 @@ intel_dp_mode_valid(struct drm_connector *connector,
>       int max_lanes = intel_dp_max_lane_count(intel_encoder);
>  
>       if (intel_dp_link_required(connector->dev, intel_encoder, mode->clock)
> -                     > max_link_clock * max_lanes)
> +                     > intel_dp_max_data_rate(max_link_clock, max_lanes))
>               return MODE_CLOCK_HIGH;
>  
>       if (mode->clock < 10000)
> @@ -509,7 +515,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct 
> drm_display_mode *mode,
>  
>       for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
>               for (clock = 0; clock <= max_clock; clock++) {
> -                     int link_avail = intel_dp_link_clock(bws[clock]) * 
> lane_count;
> +                     int link_avail = 
> intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
>  
>                       if (intel_dp_link_required(encoder->dev, intel_encoder, 
> mode->clock)
>                                       <= link_avail) {
> -- 

sorry, this is still broken on the 16x9 panel. 

'intel_dp_link_required' is 107840*18/8 = 242640, 'intel_dp_max_data_rate' is
270000*1*8/10 = 216000. So it will fail in both check.

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to