diff -urN kernel26/arch/arm/mach-pxa/h4000/h4000_lcd.c kernel26_x/arch/arm/mach-pxa/h4000/h4000_lcd.c
--- kernel26/arch/arm/mach-pxa/h4000/h4000_lcd.c	2005-02-02 22:28:15.000000000 -0700
+++ kernel26_x/arch/arm/mach-pxa/h4000/h4000_lcd.c	2005-02-03 22:24:41.282799368 -0700
@@ -132,6 +132,16 @@
 	return 0;
 }
 
+static void h4000_backlight_power(int on)
+{
+	h4000_bl_set_power(NULL, !on);
+}
+
+static void h4000_lcd_power(int on)
+{
+	h4000_lcd_set_power(NULL, !on);
+}
+
 /*
  * LCCR0: 0x003008f9 -- ENB=0x1,  CMS=0x0, SDS=0x0, LDM=0x1,
  *                      SFM=0x1,  IUM=0x1, EFM=0x1, PAS=0x1,
@@ -158,8 +168,8 @@
         .lccr0        = LCCR0_Act | LCCR0_Sngl | LCCR0_Color,
         .lccr3        = LCCR3_OutEnH | LCCR3_PixFlEdg | LCCR3_Acb(0),
 
-        //.pxafb_backlight_power = ,
-        //.pxafb_lcd_power =       ,
+        .pxafb_backlight_power = h4000_backlight_power,
+        .pxafb_lcd_power =       h4000_lcd_power,
 };
 
 struct lcd_properties h4000_lcd_properties =
@@ -190,22 +200,20 @@
 	if (!machine_is_h4000())
 		return -ENODEV;
 
-	//should we have to run both set_pxa_fb_info and lcd_device_register?
 	set_pxa_fb_info(&sony_acx502bmu);	
 
-	pxafb_lcd_device = lcd_device_register("pxafb", NULL,
+	pxafb_lcd_device = lcd_device_register("pxa2xx-fb", NULL,
 			&h4000_lcd_properties);
 	if (IS_ERR (pxafb_lcd_device)) {
 		printk("%s: lcd_device_register failed\n", __FUNCTION__);
-		return PTR_ERR (pxafb_lcd_device);
+		lcd_device_unregister(pxafb_lcd_device);
 	}
 
-	pxafb_backlight_device = backlight_device_register("pxafb", NULL,
+	pxafb_backlight_device = backlight_device_register("pxa2xx-fb", NULL,
 			&h4000_bl_properties);
 	if (IS_ERR (pxafb_backlight_device)) {
 		printk("%s: backlight_device_register failed\n", __FUNCTION__);
-		lcd_device_unregister(pxafb_lcd_device);
-		return PTR_ERR (pxafb_backlight_device);
+		backlight_device_unregister(pxafb_backlight_device);
 	}
 
 	return 0;
diff -urN kernel26/drivers/video/Kconfig kernel26_x/drivers/video/Kconfig
--- kernel26/drivers/video/Kconfig	2005-01-07 20:57:11.000000000 -0700
+++ kernel26_x/drivers/video/Kconfig	2005-02-02 22:35:30.000000000 -0700
@@ -1103,32 +1103,6 @@
 
 	  Documentation/fb/pxafb.txt describes the available parameters.
 
-config FB_PXA
-	tristate "PXA LCD framebuffer support"
-	depends on FB && ARCH_PXA
-	help
-	  Frame buffer driver for the built-in LCD controller in the Intel
-	  PXA2x0 processor.
-
-	  This driver is also available as a module ( = code which can be
-	  inserted and removed from the running kernel whenever you want). The
-	  module will be called vfb. If you want to compile it as a module,
-	  say M here and read <file:Documentation/modules.txt>.
-
-	  If unsure, say N.
-
-choice
-	prompt "LCD Bit Depth"
-	depends FB_PXA
-	default FB_PXA_8BPP
-
-config	FB_PXA_8BPP
-	bool "8 bpp"
-
-config	FB_PXA_16BPP
-	bool "16 bpp"
-
-endchoice
 
 config FB_MQ1100
 	tristate "MQ1100/32/68/78/88 framebuffer support"
diff -urN kernel26/drivers/video/pxafb.c kernel26_x/drivers/video/pxafb.c
--- kernel26/drivers/video/pxafb.c	2005-02-02 22:50:34.000000000 -0700
+++ kernel26_x/drivers/video/pxafb.c	2005-02-03 22:27:26.000000000 -0700
@@ -728,8 +728,8 @@
 
 	DPRINTK("Disabling LCD controller\n");
 
-	add_wait_queue(&fbi->ctrlr_wait, &wait);
 	set_current_state(TASK_UNINTERRUPTIBLE);
+	add_wait_queue(&fbi->ctrlr_wait, &wait);
 
 	LCSR = 0xffffffff;	/* Clear LCD Status Register */
 	LCCR0 &= ~LCCR0_LDM;	/* Enable LCD Disable Done Interrupt */
@@ -997,10 +997,11 @@
 	return fbi->map_cpu ? 0 : -ENOMEM;
 }
 
-static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev, struct pxafb_mach_info *inf)
+static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev)
 {
 	struct pxafb_info *fbi;
 	void *addr;
+	struct pxafb_mach_info *inf = dev->platform_data;
 
 	/* Alloc the pxafb_info and pseudo_palette in one step */
 	fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL);
@@ -1275,7 +1276,7 @@
 	pxafb_lcd_power = inf->pxafb_lcd_power;
 	
 	/* Allocate framebuffer info structure and do init. */
-	fbi = pxafb_init_fbinfo(dev, inf);
+	fbi = pxafb_init_fbinfo(dev);
 	if (!fbi) {
 		dev_err(dev, "Failed to initialize framebuffer device\n");
 		ret = -ENOMEM; // only reason for pxafb_init_fbinfo to fail is kmalloc
@@ -1353,7 +1354,8 @@
 int __devinit pxafb_setup(char *options)
 {
 # ifdef CONFIG_FB_PXA_PARAMETERS
-	strlcpy(g_options, options, sizeof(g_options));
+	if (options != NULL)
+		strlcpy(g_options, options, sizeof(g_options));
 # endif
 	return 0;
 }
