#include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/device.h>
 #include <linux/list.h>
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <asm/hardware.h>
 #include <asm/irq.h>
 
+#include <asm/mach/flash.h>
 #include <asm/mach/irq.h>
 #include <asm/mach/time.h>
 #include <asm/mach/map.h>
        .offset         = aaec2000_gettimeoffset,
 };
 
+static struct flash_platform_data aaec2000_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 4,
+};
+
+static struct resource aaec2000_flash_resource = {
+       .start          = AAEC_FLASH_BASE,
+       .end            = AAEC_FLASH_BASE + AAEC_FLASH_SIZE,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device aaec2000_flash_device = {
+       .name           = "armflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &aaec2000_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &aaec2000_flash_resource,
+};
+
+static int __init aaec2000_init(void)
+{
+       platform_device_register(&aaec2000_flash_device);
+
+       return 0;
+};
+arch_initcall(aaec2000_init);
+
 
 #define AAEC_CS2       0x20000000
 #define AAEC_CS3       0x30000000
 
+/* Flash */
+#define AAEC_FLASH_BASE        AAEC_CS0
+#define AAEC_FLASH_SIZE        SZ_64M
 
 /* Interrupt controller */
 #define IRQ_BASE       __REG(0x80000500)