drm/armada: fix overlay when partially off-screen
authorRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 15 Jun 2015 09:18:02 +0000 (10:18 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 15 Jul 2015 15:45:29 +0000 (16:45 +0100)
commit73068ce3b5d85780466ecab1bf2459dbd660c1c8
tree681e4612bc4b47ec823a0b27d47788a7b83939f7
parent98fb74f4ecb8a70c75d7cfcfec17432cb0db2f5d
drm/armada: fix overlay when partially off-screen

Fix the start address calculation when overlay is partially off screen.
fb->bits_per_pixel is not set for YUV formats, and is always zero, which
led to the first component always starting at zero.

Use drm_format_plane_cpp() instead.

This also revealed a problem in that YUYV formats toggle the U/V data
for odd pixel start address offsets.  We try to rectify that by
toggling the U/V swap, which for the most part works, but seemingly
introduces a flicker for one scan frame of swapped U/V.

However, these changes result in an overall improvement.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/gpu/drm/armada/armada_overlay.c