commandline mtd partition parsing is ugly, convert aruba to platform_device
authorkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 20 May 2007 21:33:57 +0000 (21:33 +0000)
committerkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 20 May 2007 21:33:57 +0000 (21:33 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7294 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/aruba-2.6/config/default
target/linux/aruba-2.6/files/arch/mips/aruba/prom.c
target/linux/aruba-2.6/files/arch/mips/aruba/setup.c

index 6ff30a9..a15c734 100644 (file)
@@ -118,7 +118,7 @@ CONFIG_MTD_CFI_NOSWAP=y
 # CONFIG_MTD_CFI_STAA is not set
 CONFIG_MTD_CFI_UTIL=y
 CONFIG_MTD_CHAR=y
-CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_CMDLINE_PARTS is not set
 CONFIG_MTD_COMPLEX_MAPPINGS=y
 # CONFIG_MTD_CONCAT is not set
 # CONFIG_MTD_DEBUG is not set
@@ -143,7 +143,7 @@ CONFIG_MTD_PARTITIONS=y
 # CONFIG_MTD_PHRAM is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_PHYSMAP_BANKWIDTH=1
-CONFIG_MTD_PHYSMAP_LEN=0x400000
+CONFIG_MTD_PHYSMAP_LEN=0
 CONFIG_MTD_PHYSMAP_START=0x1fc00000
 # CONFIG_MTD_PLATRAM is not set
 # CONFIG_MTD_PMC551 is not set
index b70a0e7..5cd4ca0 100644 (file)
@@ -57,9 +57,7 @@ unsigned int arch_has_pci=0;
 
 /* Kernel Boot parameters */
 static unsigned char bootparm[] = 
-       "init=/etc/preinit noinitrd "
-       "mtdparts=physmap-flash.0:3520k@0x080000(kernel),2752k@0x140000(rootfs),8k@0x3f8000(NVRAM) "
-       "console=ttyS0,9600 root=/dev/mtdblock1 rootfstype=squashfs,jffs2 ";
+       "root=/dev/mtdblock1 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,9600 init=/etc/preinit";
 
 extern unsigned long mips_machgroup;
 extern unsigned long mips_machtype;
index 7e8413f..4d438ad 100644 (file)
@@ -50,6 +50,9 @@
 #include <asm/addrspace.h>     /* for KSEG1ADDR() */
 #include <asm/idt-boards/rc32434/rc32434.h>
 #include <linux/pm.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
 
 extern char *__init prom_getcmdline(void);
 
@@ -84,8 +87,58 @@ static void aruba_machine_halt(void)
 }
 
 extern char * getenv(char *e);
+
 extern void unlock_ap60_70_flash(void);
 
+static struct resource aruba_flash_resource = {
+       .start = 0x1fc00000,
+       .end   = 0x1fffffffULL,
+       .flags = IORESOURCE_MEM,
+};
+
+static struct mtd_partition aruba_flash_parts[] = {
+       {
+               .name = "kernel",
+               .offset = 0x80000,
+               .size = 0x370000,
+       },
+       {
+               .name = "rootfs",
+               .offset = 0x140000,
+               .size = 0x2B0000,
+       },
+       {
+               .name = "NVRAM",
+               .offset = 0x3f8000,
+               .size = 0x2000,
+       }
+};
+
+static struct physmap_flash_data aruba_flash_data = {
+       .width          = 1,
+       .parts          = aruba_flash_parts,
+       .nr_parts       = ARRAY_SIZE(aruba_flash_parts),
+};
+
+static struct platform_device aruba_flash_device = {
+       .name           = "physmap-flash",
+       .id             = 0,
+       .dev = {
+                       .platform_data = &aruba_flash_data,
+               },
+       .num_resources  = 1,
+       .resource       = &aruba_flash_resource,
+};
+
+static int aruba_setup_flash(void)
+{
+       platform_device_register(&aruba_flash_device);
+
+       return 0;
+};
+
+arch_initcall (aruba_setup_flash);
+
 void __init plat_mem_setup(void)
 {
        board_time_init = aruba_time_init;