backlight: Fix external uses of backlight internal semaphore
[safe/jmp/linux-2.6] / drivers / video / aty / radeon_backlight.c
index 7de66b8..9cfceca 100644 (file)
@@ -40,14 +40,14 @@ static int radeon_bl_get_level_brightness(struct radeon_bl_privdata *pdata,
 
        mutex_unlock(&info->bl_mutex);
 
-       if (pdata->negative)
-               rlevel = MAX_RADEON_LEVEL - rlevel;
-
        if (rlevel < 0)
                rlevel = 0;
        else if (rlevel > MAX_RADEON_LEVEL)
                rlevel = MAX_RADEON_LEVEL;
 
+       if (pdata->negative)
+               rlevel = MAX_RADEON_LEVEL - rlevel;
+
        return rlevel;
 }
 
@@ -134,7 +134,6 @@ static int radeon_bl_get_brightness(struct backlight_device *bd)
 }
 
 static struct backlight_properties radeon_bl_data = {
-       .owner          = THIS_MODULE,
        .get_brightness = radeon_bl_get_brightness,
        .update_status  = radeon_bl_update_status,
        .max_brightness = (FB_BACKLIGHT_LEVELS - 1),
@@ -163,7 +162,7 @@ void radeonfb_bl_init(struct radeonfb_info *rinfo)
 
        snprintf(name, sizeof(name), "radeonbl%d", rinfo->info->node);
 
-       bd = backlight_device_register(name, pdata, &radeon_bl_data);
+       bd = backlight_device_register(name, rinfo->info->dev, pdata, &radeon_bl_data);
        if (IS_ERR(bd)) {
                rinfo->info->bl_dev = NULL;
                printk("radeonfb: Backlight registration failed\n");
@@ -195,11 +194,9 @@ void radeonfb_bl_init(struct radeonfb_info *rinfo)
                217 * FB_BACKLIGHT_MAX / MAX_RADEON_LEVEL);
        mutex_unlock(&rinfo->info->bl_mutex);
 
-       up(&bd->sem);
        bd->props->brightness = radeon_bl_data.max_brightness;
        bd->props->power = FB_BLANK_UNBLANK;
-       bd->props->update_status(bd);
-       down(&bd->sem);
+       backlight_update_status(bd);
 
 #ifdef CONFIG_PMAC_BACKLIGHT
        mutex_lock(&pmac_backlight_mutex);