gma500: re-order calling on the fix setup so we set up after the DRM layer
[cascardo/linux.git] / drivers / gpu / drm / gma500 / framebuffer.c
index 830dfdd..110fcad 100644 (file)
@@ -463,6 +463,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
        fbdev->psb_fb_helper.fb = fb;
        fbdev->psb_fb_helper.fbdev = info;
 
+       drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
        strcpy(info->fix.id, "psbfb");
 
        info->flags = FBINFO_DEFAULT;
@@ -500,18 +501,13 @@ static int psbfb_create(struct psb_fbdev *fbdev,
                info->apertures->ranges[0].size = dev_priv->gtt.stolen_size;
        }
 
-       drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
        drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper,
                                sizes->fb_width, sizes->fb_height);
 
        info->fix.mmio_start = pci_resource_start(dev->pdev, 0);
        info->fix.mmio_len = pci_resource_len(dev->pdev, 0);
 
-       info->pixmap.size = 64 * 1024;
-       info->pixmap.buf_align = 8;
-       info->pixmap.access_align = 32;
-       info->pixmap.flags = FB_PIXMAP_SYSTEM;
-       info->pixmap.scan_align = 1;
+       /* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
 
        dev_info(dev->dev, "allocated %dx%d fb\n",
                                        psbfb->base.width, psbfb->base.height);
@@ -560,11 +556,21 @@ static struct drm_framebuffer *psb_user_framebuffer_create
 static void psbfb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
                                                        u16 blue, int regno)
 {
+       struct psb_intel_crtc *intel_crtc = to_psb_intel_crtc(crtc);
+
+       intel_crtc->lut_r[regno] = red >> 8;
+       intel_crtc->lut_g[regno] = green >> 8;
+       intel_crtc->lut_b[regno] = blue >> 8;
 }
 
 static void psbfb_gamma_get(struct drm_crtc *crtc, u16 *red,
                                        u16 *green, u16 *blue, int regno)
 {
+       struct psb_intel_crtc *intel_crtc = to_psb_intel_crtc(crtc);
+
+       *red = intel_crtc->lut_r[regno] << 8;
+       *green = intel_crtc->lut_g[regno] << 8;
+       *blue = intel_crtc->lut_b[regno] << 8;
 }
 
 static int psbfb_probe(struct drm_fb_helper *helper,
@@ -725,10 +731,7 @@ static int psb_create_backlight_property(struct drm_device *dev)
        if (dev_priv->backlight_property)
                return 0;
 
-       backlight = drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                                       "backlight", 2);
-       backlight->values[0] = 0;
-       backlight->values[1] = 100;
+       backlight = drm_property_create_range(dev, 0, "backlight", 0, 100);
 
        dev_priv->backlight_property = backlight;