---
 arch/arm/mach-s3c2410/mach-gta01.c |    2 	1 +	1 -	0 !
 drivers/video/backlight/Kconfig    |    2 	1 +	1 -	0 !
 drivers/video/backlight/gta01_bl.c |   44 	27 +	17 -	0 !
 3 files changed, 29 insertions(+), 19 deletions(-)

Index: linux-2.6/drivers/video/backlight/Kconfig
===================================================================
--- linux-2.6.orig/drivers/video/backlight/Kconfig	2007-03-28 00:28:08.000000000 +0200
+++ linux-2.6/drivers/video/backlight/Kconfig	2007-03-28 00:28:08.000000000 +0200
@@ -58,7 +58,7 @@ config BACKLIGHT_LOCOMO
 
 config BACKLIGHT_GTA01
 	tristate "FIC Neo1973 GTA01 Backlight Driver"
-	depends on BACKLIGHT_DEVICE && MACH_NEO1973_GTA01
+	depends on BACKLIGHT_CLASS_DEVICE && MACH_NEO1973_GTA01
 	default y
 	help
 	  If you have a FIC GTA01 say y to enable the backlight driver.
Index: linux-2.6/drivers/video/backlight/gta01_bl.c
===================================================================
--- linux-2.6.orig/drivers/video/backlight/gta01_bl.c	2007-03-28 00:28:08.000000000 +0200
+++ linux-2.6/drivers/video/backlight/gta01_bl.c	2007-03-28 00:28:08.000000000 +0200
@@ -38,7 +38,6 @@
 #include <asm/arch/regs-timer.h>
 #include <asm/arch/gta01.h>
 
-static struct backlight_properties gta01bl_prop;
 static struct backlight_device *gta01_backlight_device;
 static struct gta01bl_machinfo *bl_machinfo;
 
@@ -66,11 +65,11 @@ static struct gta01bl_data gta01bl;
 
 static int gta01bl_send_intensity(struct backlight_device *bd)
 {
-	int intensity = bd->props->brightness;
+	int intensity = bd->props.brightness;
 
-	if (bd->props->power != FB_BLANK_UNBLANK)
+	if (bd->props.power != FB_BLANK_UNBLANK)
 		intensity = 0;
-	if (bd->props->fb_blank != FB_BLANK_UNBLANK)
+	if (bd->props.fb_blank != FB_BLANK_UNBLANK)
 		intensity = 0;
 	if (gta01bl_flags & GTA01BL_SUSPENDED)
 		intensity = 0;
@@ -84,7 +83,7 @@ static int gta01bl_send_intensity(struct
 	else
 		s3c2410_gpio_setpin(GTA01_GPIO_BACKLIGHT, 0);
 #else
-	if (intensity == bd->props->max_brightness) {
+	if (intensity == bd->props.max_brightness) {
 		s3c2410_gpio_setpin(GTA01_GPIO_BACKLIGHT, 1);
 		s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPIO_OUTPUT);
 	} else  {
@@ -99,7 +98,7 @@ static int gta01bl_send_intensity(struct
 	return 0;
 }
 
-static void gta01bl_init_hw(void)
+static int gta01bl_init_hw(void)
 {
 	unsigned long tcon, tcfg0, tcfg1, tcnt, pclk;
 
@@ -142,7 +141,7 @@ static void gta01bl_init_hw(void)
 	tcon &= ~S3C2410_TCON_T0MANUALUPD;
 	__raw_writel(tcon, S3C2410_TCON);
 
-	gta01bl_prop.max_brightness = tcnt;
+	return tcnt;
 }
 
 #ifdef CONFIG_PM
@@ -194,8 +193,7 @@ void gta01bl_limit_intensity(int limit)
 EXPORT_SYMBOL(gta01bl_limit_intensity);
 
 
-static struct backlight_properties gta01bl_prop = {
-	.owner          = THIS_MODULE,
+static struct backlight_ops gta01bl_ops = {
 	.get_brightness = gta01bl_get_intensity,
 	.update_status  = gta01bl_set_intensity,
 };
@@ -203,10 +201,18 @@ static struct backlight_properties gta01
 static int __init gta01bl_probe(struct platform_device *pdev)
 {
 	struct gta01bl_machinfo *machinfo = pdev->dev.platform_data;
+	int max;
+
+	if (!machinfo) {
+		printk(KERN_ERR "gta01bl: No machinfo. Exiting\n");
+		return -EINVAL;
+	}
+
+	bl_machinfo = machinfo;
 
 #ifdef GTA01_BACKLIGHT_ONOFF_ONLY
 	s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPIO_OUTPUT);
-	gta01bl_prop.max_brightness = 1;
+	max = 1;
 #else
 	/* use s3c_device_timer0 for PWM */
 	gta01bl.clk = clk_get(NULL, "timers");
@@ -215,21 +221,25 @@ static int __init gta01bl_probe(struct p
 
 	clk_enable(gta01bl.clk);
 
-	gta01bl_init_hw();
+	max = gta01bl_init_hw();
 #endif
 	mutex_init(&gta01bl.mutex);
 
-	if (!machinfo->limit_mask)
-		machinfo->limit_mask = -1;
-
 	gta01_backlight_device = backlight_device_register("gta01-bl",
 							   &pdev->dev, NULL,
-							   &gta01bl_prop);
+							   &gta01bl_ops);
 	if (IS_ERR(gta01_backlight_device))
 		return PTR_ERR(gta01_backlight_device);
 
-	gta01bl_prop.power = FB_BLANK_UNBLANK;
-	gta01bl_prop.brightness = gta01bl_prop.max_brightness;
+	if (!bl_machinfo->limit_mask)
+		bl_machinfo->limit_mask = -1;
+
+	if (!bl_machinfo->default_intensity)
+		bl_machinfo->default_intensity = (max > 1 ? max / 2 : 1);
+
+	gta01_backlight_device->props.brightness = bl_machinfo->default_intensity;
+	gta01_backlight_device->props.power = FB_BLANK_UNBLANK;
+	gta01_backlight_device->props.max_brightness = max;
 	gta01bl_send_intensity(gta01_backlight_device);
 
 	printk("GTA01 Backlight Driver Initialized.\n");
Index: linux-2.6/arch/arm/mach-s3c2410/mach-gta01.c
===================================================================
--- linux-2.6.orig/arch/arm/mach-s3c2410/mach-gta01.c	2007-03-28 00:28:08.000000000 +0200
+++ linux-2.6/arch/arm/mach-s3c2410/mach-gta01.c	2007-03-29 23:45:52.000000000 +0200
@@ -363,7 +363,7 @@ struct platform_device s3c_device_spi_lc
 #endif
 
 static struct gta01bl_machinfo backlight_machinfo = {
-	.default_intensity	= 1,
+	.default_intensity	= 2000,
 	.max_intensity		= 1,
 	.limit_mask		= 1,
 };
