| From a1efd14a99483a4fb9308902397ed86b69454c99 Mon Sep 17 00:00:00 2001 |
| From: Chris Wilson <chris@chris-wilson.co.uk> |
| Date: Mon, 12 Jul 2010 19:35:38 +0100 |
| Subject: drm/i915: Check overlay stride errata for i830 and i845 |
| |
| From: Chris Wilson <chris@chris-wilson.co.uk> |
| |
| commit a1efd14a99483a4fb9308902397ed86b69454c99 upstream. |
| |
| Apparently i830 and i845 cannot handle any stride that is not a multiple |
| of 256, unlike their brethren which do support 64 byte aligned strides. |
| |
| Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Signed-off-by: Eric Anholt <eric@anholt.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/gpu/drm/i915/intel_overlay.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_overlay.c |
| +++ b/drivers/gpu/drm/i915/intel_overlay.c |
| @@ -950,7 +950,7 @@ static int check_overlay_src(struct drm_ |
| || rec->src_width < N_HORIZ_Y_TAPS*4) |
| return -EINVAL; |
| |
| - /* check alingment constrains */ |
| + /* check alignment constraints */ |
| switch (rec->flags & I915_OVERLAY_TYPE_MASK) { |
| case I915_OVERLAY_RGB: |
| /* not implemented */ |
| @@ -982,7 +982,10 @@ static int check_overlay_src(struct drm_ |
| return -EINVAL; |
| |
| /* stride checking */ |
| - stride_mask = 63; |
| + if (IS_I830(dev) || IS_845G(dev)) |
| + stride_mask = 255; |
| + else |
| + stride_mask = 63; |
| |
| if (rec->stride_Y & stride_mask || rec->stride_UV & stride_mask) |
| return -EINVAL; |