[POWERPC] Fix various offb and BootX-related issues
[powerpc.git] / arch / powerpc / kernel / btext.c
index a692091..f4e5e14 100644 (file)
@@ -111,7 +111,7 @@ void __init btext_setup_display(int width, int height, int depth, int pitch,
        logicalDisplayBase = (unsigned char *)address;
        dispDeviceBase = (unsigned char *)address;
        dispDeviceRowBytes = pitch;
-       dispDeviceDepth = depth;
+       dispDeviceDepth = depth == 15 ? 16 : depth;
        dispDeviceRect[0] = dispDeviceRect[1] = 0;
        dispDeviceRect[2] = width;
        dispDeviceRect[3] = height;
@@ -160,20 +160,28 @@ int btext_initialize(struct device_node *np)
        unsigned long address = 0;
        u32 *prop;
 
-       prop = (u32 *)get_property(np, "width", NULL);
+       prop = (u32 *)get_property(np, "linux,bootx-width", NULL);
+       if (prop == NULL)
+               prop = (u32 *)get_property(np, "width", NULL);
        if (prop == NULL)
                return -EINVAL;
        width = *prop;
-       prop = (u32 *)get_property(np, "height", NULL);
+       prop = (u32 *)get_property(np, "linux,bootx-height", NULL);
+       if (prop == NULL)
+               prop = (u32 *)get_property(np, "height", NULL);
        if (prop == NULL)
                return -EINVAL;
        height = *prop;
-       prop = (u32 *)get_property(np, "depth", NULL);
+       prop = (u32 *)get_property(np, "linux,bootx-depth", NULL);
+       if (prop == NULL)
+               prop = (u32 *)get_property(np, "depth", NULL);
        if (prop == NULL)
                return -EINVAL;
        depth = *prop;
        pitch = width * ((depth + 7) / 8);
-       prop = (u32 *)get_property(np, "linebytes", NULL);
+       prop = (u32 *)get_property(np, "linux,bootx-linebytes", NULL);
+       if (prop == NULL)
+               prop = (u32 *)get_property(np, "linebytes", NULL);
        if (prop)
                pitch = *prop;
        if (pitch == 1)
@@ -194,7 +202,7 @@ int btext_initialize(struct device_node *np)
        g_max_loc_Y = height / 16;
        dispDeviceBase = (unsigned char *)address;
        dispDeviceRowBytes = pitch;
-       dispDeviceDepth = depth;
+       dispDeviceDepth = depth == 15 ? 16 : depth;
        dispDeviceRect[0] = dispDeviceRect[1] = 0;
        dispDeviceRect[2] = width;
        dispDeviceRect[3] = height;