[Intel-gfx] [PATCH] i915: fix ironlake edp panel setup (v2)
Zhenyu Wang
zhenyuw at linux.intel.com
Mon Jun 28 08:04:56 CEST 2010
On 2010.06.28 09:45:14 +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied at 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 <airlied at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20100628/8530e874/attachment.sig>
More information about the Intel-gfx
mailing list