[PATCH] Rewritten backlight infrastructure for portable Apple computers
[deliverable/linux.git] / drivers / video / chipsfb.c
index 72ff6bf75e5ed8cbabc87d83f882b77702fafa7a..d76bbfac92ccf15e3e9a8141547b89c3fa8dbb13 100644 (file)
@@ -148,9 +148,24 @@ static int chipsfb_set_par(struct fb_info *info)
 static int chipsfb_blank(int blank, struct fb_info *info)
 {
 #ifdef CONFIG_PMAC_BACKLIGHT
-       // used to disable backlight only for blank > 1, but it seems
-       // useful at blank = 1 too (saves battery, extends backlight life)
-       set_backlight_enable(!blank);
+       mutex_lock(&pmac_backlight_mutex);
+
+       if (pmac_backlight) {
+               down(&pmac_backlight->sem);
+
+               /* used to disable backlight only for blank > 1, but it seems
+                * useful at blank = 1 too (saves battery, extends backlight
+                * life)
+                */
+               if (blank)
+                       pmac_backlight->props->power = FB_BLANK_POWERDOWN;
+               else
+                       pmac_backlight->props->power = FB_BLANK_UNBLANK;
+               pmac_backlight->props->update_status(pmac_backlight);
+               up(&pmac_backlight->sem);
+       }
+
+       mutex_unlock(&pmac_backlight_mutex);
 #endif /* CONFIG_PMAC_BACKLIGHT */
 
        return 1;       /* get fb_blank to set the colormap to all black */
@@ -401,7 +416,14 @@ chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent)
 
 #ifdef CONFIG_PMAC_BACKLIGHT
        /* turn on the backlight */
-       set_backlight_enable(1);
+       mutex_lock(&pmac_backlight_mutex);
+       if (pmac_backlight) {
+               down(&pmac_backlight->sem);
+               pmac_backlight->props->power = FB_BLANK_UNBLANK;
+               pmac_backlight->props->update_status(pmac_backlight);
+               up(&pmac_backlight->sem);
+       }
+       mutex_unlock(&pmac_backlight_mutex);
 #endif /* CONFIG_PMAC_BACKLIGHT */
 
 #ifdef CONFIG_PPC
This page took 0.034974 seconds and 5 git commands to generate.