diff -urN kernel26/arch/arm/common/platform.c kernel26_h/arch/arm/common/platform.c
--- kernel26/arch/arm/common/platform.c	2004-02-29 23:50:59.000000000 -0700
+++ kernel26_h/arch/arm/common/platform.c	2004-07-20 22:09:03.000000000 -0600
@@ -2,7 +2,7 @@
 #include <linux/device.h>
 #include <linux/init.h>
 
-int platform_add_device(struct platform_device *dev)
+int __init platform_add_device(struct platform_device *dev)
 {
 	int i;
 
@@ -26,7 +26,7 @@
 
 EXPORT_SYMBOL(platform_add_device);
 
-int platform_add_devices(struct platform_device **devs, int num)
+int __init platform_add_devices(struct platform_device **devs, int num)
 {
 	int i;
 
diff -urN kernel26/arch/arm/mach-pxa/h4000.c kernel26_h/arch/arm/mach-pxa/h4000.c
--- kernel26/arch/arm/mach-pxa/h4000.c	2004-06-30 21:31:26.000000000 -0600
+++ kernel26_h/arch/arm/mach-pxa/h4000.c	2004-07-20 21:58:57.000000000 -0600
@@ -24,11 +24,6 @@
 #include <linux/sched.h>
 #include <linux/device.h>
 
-#include <linux/lcd.h>
-#include <linux/backlight.h>
-#include <linux/fb.h>
-#include <../drivers/video/pxafb.h>
-
 #include <asm/irq.h>
 #include <asm/mach-types.h>
 #include <asm/hardware.h>
@@ -38,6 +33,8 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 
+#include <asm/arch/bitfield.h>
+#include <asm/arch/pxafb.h>
 #include <asm/arch/ipaq.h>
 #include <asm/arch/udc.h>
 #include <asm/arch/h4000-gpio.h>
@@ -51,6 +48,37 @@
 /*#define H4000_ASIC3_VIRT 0xf8000000
 #define H4000_ASIC3_PHYS 0x0c000000 */
 
+/*
+ * LCCR0: 0x003008f9 -- ENB=0x1,  CMS=0x0, SDS=0x0, LDM=0x1,
+ *                      SFM=0x1,  IUM=0x1, EFM=0x1, PAS=0x1,
+ *                      res=0x0,  DPD=0x0, DIS=0x0, QDM=0x1,
+ *                      PDD=0x0,  BM=0x1,  OUM=0x1, res=0x0
+ * LCCR1: 0x13070cef -- BLW=0x13, ELW=0x7, HSW=0x3, PPL=0xef
+ * LCCR2: 0x0708013f -- BFW=0x7,  EFW=0x8, VSW=0x0, LPP=0x13f
+ * LCCR3: 0x04700008 -- res=0x0,  DPC=0x0, BPP=0x4, OEP=0x0, PCP=0x1
+ *                      HSP=0x1,  VSP=0x1, API=0x0, ACD=0x0, PCD=0x8
+ */
+
+static struct pxafb_mach_info      sony_acx502bmu __initdata= {
+        .pixclock     = 171521,
+        .bpp          = 16,         // BPP (0x4 == 16bits)
+        .xres         = 240,        // PPL + 1
+        .yres         = 320,        // LPP + 1
+        .hsync_len    = 4,          // HSW + 1
+        .vsync_len    = 1,          // VSW + 1
+        .left_margin  = 20,         // BLW + 1
+        .upper_margin = 8,          // BFW + 1
+        .right_margin = 8,          // ELW + 1
+        .lower_margin = 9,          // EFW + 1
+        .sync         = 0,
+        .lccr0        = LCCR0_Act|LCCR0_Sngl|LCCR0_Color,
+        .lccr3        = LCCR3_OutEnH|LCCR3_PixFlEdg|LCCR3_Acb(0),
+
+        //.pxafb_backlight_power = h4000_bl_power,
+        //.pxafb_lcd_power =       h4000_lcd_power,
+};
+
+
 static void h4000_udc_command (int cmd)
 {
         switch (cmd)
@@ -170,35 +198,8 @@
         .dev = { .platform_data = &h4000_asic3_platform_data, },
 };
 
-static struct resource pxafb_resources[] = {
-        [0] = {
-                .start  = 0x44000000,
-                .end    = 0x4400ffff,
-                .flags  = IORESOURCE_MEM,
-        },
-        [1] = {
-                .start  = IRQ_LCD,
-                .end    = IRQ_LCD,
-                .flags  = IORESOURCE_IRQ,
-        },
-};
-
-static u64 fb_dma_mask = ~(u64)0;
-
-static struct platform_device pxafb_device = {
-        .name           = "pxafb",
-        .id             = 0,
-        .dev            = {
-                .dma_mask       = &fb_dma_mask,
-                .coherent_dma_mask = 0xffffffff,
-        },
-        .num_resources  = ARRAY_SIZE(pxafb_resources),
-        .resource       = pxafb_resources,
-};
-
 static struct platform_device *devices[] __initdata = {
         &h4000_asic3_device,
-	&pxafb_device
 };
 
 static struct ipaq_model_ops h4000_model_ops __initdata = {
@@ -258,6 +259,7 @@
 static void __init h4000_init(void)
 {
         pxa_set_udc_info(&h4000_udc_info);
+	set_pxa_fb_info(&sony_acx502bmu);
         platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
@@ -269,3 +271,5 @@
         INITIRQ(h4000_init_irq)
         INIT_MACHINE(h4000_init)
 MACHINE_END
+/* vim: set ts=8 tw=80 shiftwidth=8 noet: */
+
diff -urN kernel26/drivers/video/Kconfig kernel26_h/drivers/video/Kconfig
--- kernel26/drivers/video/Kconfig	2004-06-30 21:33:15.000000000 -0600
+++ kernel26_h/drivers/video/Kconfig	2004-07-20 22:01:22.000000000 -0600
@@ -49,7 +49,7 @@
 
 config LCD_CLASS_DEVICE
         tristate "Lowlevel LCD controls"
-	depends on FB
+	depends on FB && !FB_PXA
 	help
 	  This framework adds support for low-level control of LCD.
 	  Some framebuffer devices connect to platform-specific LCD modules
@@ -66,7 +66,7 @@
 
 config BACKLIGHT_CLASS_DEVICE
         tristate "Lowlevel Backlight controls"
-	depends on FB
+	depends on FB  && !FB_PXA
 	help
 	  This framework adds support for low-level control of the LCD
           backlight. This includes support for brightness and power.
@@ -1040,33 +1040,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_VIRTUAL
 	tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
 	depends on FB
diff -urN kernel26/drivers/video/fbmem.c kernel26_h/drivers/video/fbmem.c
--- kernel26/drivers/video/fbmem.c	2004-06-30 21:33:15.000000000 -0600
+++ kernel26_h/drivers/video/fbmem.c	2004-07-20 22:18:45.000000000 -0600
@@ -359,12 +359,6 @@
 #ifdef CONFIG_FB_SA1100
 	{ "sa1100fb", sa1100fb_init, NULL },
 #endif
-#ifdef CONFIG_FB_PXA
-	{ "pxafb", pxafb_init, pxafb_setup },
-#endif
-#ifdef CONFIG_FB_PXA
-	{ "pxafb", pxafb_init, NULL },
-#endif
 #ifdef CONFIG_FB_VSFB
 	{ "vsfb", vsfb_init, NULL },
 #endif
diff -urN kernel26/drivers/video/pxafb.c kernel26_h/drivers/video/pxafb.c
--- kernel26/drivers/video/pxafb.c	2004-06-30 21:33:16.000000000 -0600
+++ kernel26_h/drivers/video/pxafb.c	2004-07-20 22:35:14.000000000 -0600
@@ -38,9 +38,15 @@
 #include <linux/cpufreq.h>
 #include <linux/device.h>
 #include <linux/dma-mapping.h>
+#ifdef CONFIG_LCD_DEVICE
 #include <linux/lcd.h>
+#endif
+#ifdef CONFIG_BACKLIGHT_DEVICE
 #include <linux/backlight.h>
+#endif
+#ifdef CONFIG_PM
 #include <linux/notifier.h>
+#endif
 
 #include <asm/hardware.h>
 #include <asm/io.h>
@@ -50,6 +56,7 @@
 #include <asm/arch/bitfield.h>
 #include <asm/arch/pxafb.h>
 
+#define DEBUG
 /*
  * Complain if VAR is out of range.
  */
@@ -800,7 +807,7 @@
 		 */
 		if (old_state != C_DISABLE && old_state != C_DISABLE_PM) {
 			fbi->state = state;
-			__pxafb_lcd_power(fbi, 0);
+			//__pxafb_lcd_power(fbi, 0);
 			pxafb_disable_controller(fbi);
 		}
 		break;
@@ -827,7 +834,7 @@
 		if (old_state == C_DISABLE_CLKCHANGE) {
 			fbi->state = C_ENABLE;
 			pxafb_enable_controller(fbi);
-			__pxafb_lcd_power(fbi, 1);
+			//__pxafb_lcd_power(fbi, 1);
 		}
 		break;
 
@@ -1311,8 +1318,8 @@
 
 	dev_dbg(dev, "pxafb_probe\n");
 
-	{
 #ifdef CONFIG_LCD_DEVICE
+	{
 		ld = lcd_device_find("pxafb");
 		if (!ld)
 		{
@@ -1323,10 +1330,10 @@
 		inf = (struct pxafb_mach_info*)class_get_devdata(&ld->class_dev);
 		if (!inf)
 			goto failed;	// there's nothing we can do.
-#else
-		goto failed;
-#endif
+//#else
+//		goto failed;
 	}
+#endif
 	
 #ifdef CONFIG_BACKLIGHT_DEVICE
 	{
@@ -1390,8 +1397,12 @@
 		goto failed;
 	}
 
+#ifdef CONFIG_LCD_DEVICE
 	if (ld) fbi->ld = ld;
+#endif
+#ifdef CONFIG_BACKLIGHT_DEVICE
 	if (bd) fbi->bd = bd;
+#endif
 
 	/* Initialize video memory */
 	ret = pxafb_map_video_memory(fbi);
diff -urN kernel26/drivers/video/pxafb.h kernel26_h/drivers/video/pxafb.h
--- kernel26/drivers/video/pxafb.h	2004-06-30 21:33:16.000000000 -0600
+++ kernel26_h/drivers/video/pxafb.h	2004-07-20 22:15:49.000000000 -0600
@@ -122,7 +122,7 @@
 /*
  *  Debug macros
  */
-#if DEBUG
+#ifdef DEBUG
 #  define DPRINTK(fmt, args...)	printk("%s: " fmt, __FUNCTION__ , ## args)
 #else
 #  define DPRINTK(fmt, args...)
