Index: linux-2.6.15/drivers/video/backlight/backlight.c
===================================================================
--- linux-2.6.15.orig/drivers/video/backlight/backlight.c	2006-01-03 03:21:10.000000000 +0000
+++ linux-2.6.15/drivers/video/backlight/backlight.c	2006-01-28 23:45:38.000000000 +0000
@@ -78,6 +78,9 @@
 		return -EINVAL;
 
 	down(&bd->sem);
+	if (likely(bd->props) && brightness > bd->props->max_brightness)
+		brightness = bd->props->max_brightness;
+
 	if (likely(bd->props && bd->props->set_brightness)) {
 		pr_debug("backlight: set brightness to %d\n", brightness);
 		bd->props->set_brightness(bd, brightness);
Index: linux-2.6.15/drivers/video/backlight/corgi_bl.c
===================================================================
--- linux-2.6.15.orig/drivers/video/backlight/corgi_bl.c	2006-01-28 17:28:33.000000000 +0000
+++ linux-2.6.15/drivers/video/backlight/corgi_bl.c	2006-01-28 23:42:31.000000000 +0000
@@ -37,12 +37,10 @@
 	unsigned long flags;
 	void (*corgi_kick_batt)(void);
 
-	if (corgibl_powermode != FB_BLANK_UNBLANK) {
+	if (corgibl_powermode != FB_BLANK_UNBLANK)
 		intensity = 0;
-	} else {
-		if (corgibl_limit)
-			intensity &= CORGI_LIMIT_MASK;
-	}
+	else if (corgibl_limit)
+		intensity &= CORGI_LIMIT_MASK;
 
 	spin_lock_irqsave(&bl_lock, flags);
 
@@ -110,8 +108,6 @@
 
 static int corgibl_set_intensity(struct backlight_device *bd, int intensity)
 {
-	if (intensity > corgibl_data.max_brightness)
-		intensity = corgibl_data.max_brightness;
 	corgibl_send_intensity(intensity);
 	current_intensity=intensity;
 	return 0;
@@ -119,6 +115,11 @@
 
 static int corgibl_get_intensity(struct backlight_device *bd)
 {
+	if (corgibl_powermode != FB_BLANK_UNBLANK)
+		return 0;
+	if (corgibl_limit)
+		return current_intensity & CORGI_LIMIT_MASK;
+
 	return current_intensity;
 }
 
