drm/udl: Make sure to get correct endian keys from vendor descriptor
authorDave Airlie <airlied@redhat.com>
Mon, 25 Jun 2012 06:32:14 +0000 (07:32 +0100)
committerDave Airlie <airlied@redhat.com>
Mon, 25 Jun 2012 06:43:12 +0000 (07:43 +0100)
This is a port of
commit b49f184b640dcfab7ede394cf2a1ff4fe3d154f5
Author: Ben Collins <bcollins@ubuntu.com>
from udlfb to udl kms driver.

The driver was not using le16_to_cpu when reading keys from the vendor
descriptor, causing incorrect parsing. Mainly, sku_pixel_limit was not
being parsed on big-endian systems. This would result in a blank screen
on big-endian CPUs where the DL chips's max mode was smaller than the
monitor's native mode.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/udl/udl_main.c

index a8d5f09428c72a1887c26d7374b6f971bc871a1e..4c2d836a0893f36f91247a5ce38d6cfed883faa8 100644 (file)
@@ -61,7 +61,7 @@ static int udl_parse_vendor_descriptor(struct drm_device *dev,
                        u8 length;
                        u16 key;
 
-                       key = *((u16 *) desc);
+                       key = le16_to_cpu(*((u16 *) desc));
                        desc += sizeof(u16);
                        length = *desc;
                        desc++;