Load the appropriate MTD driver if we were booted from NOR/NAND only, use the TRX...
authorFlorian Fainelli <florian@openwrt.org>
Wed, 18 Jul 2007 12:13:37 +0000 (12:13 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Wed, 18 Jul 2007 12:13:37 +0000 (12:13 +0000)
SVN-Revision: 8032

target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120_mtd.c
target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c

index 230fceee21983e474bd1dd281ba38916eb14d810..3abad32fa3a72ff3a5a4c07c469807fc6d272d4c 100644 (file)
@@ -407,6 +407,10 @@ int __init init_adm5120_map(void)
        struct mtd_partition *parts;
        int i, parsed_nr_parts = 0;
 #endif
+
+       if (adm5120_nand_boot)
+               return -ENODEV;
+
        printk("adm5120 : flash init : 0x%08x 0x%08x\n", WINDOW_ADDR, adm5120_board.flash0_size);
        adm5120_map.virt = ioremap_nocache(WINDOW_ADDR, adm5120_board.flash0_size);
 
@@ -433,7 +437,7 @@ int __init init_adm5120_map(void)
 
 #ifdef CONFIG_MTD_PARTITIONS
 
-       if (adm5120_boot_loader == BOOT_LOADER_CFE)
+       if (adm5120_boot_loader == BOOT_LOADER_CFE || adm5120_boot_loader == BOOT_LOADER_UNKNOWN)
        {
                printk(KERN_NOTICE "adm5120 : using CFE flash mapping\n");
                parts = init_mtd_partitions(adm5120_mtd, size);
index 306b97cc712f6688f7eebbb91243a9d91efa2ba5..5b98833c06b44db0f1412ad1e32feb3dc989eb4f 100644 (file)
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/delay.h>
+
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/bootinfo.h>
+#include <asm/mach-adm5120/adm5120_info.h>
+#include <asm/mach-adm5120/adm5120_defs.h>
 
-#define SMEM1_BASE 0x10000000   // from ADM5120 documentation
-#define SMEM1(x) (*((volatile unsigned char *) (KSEG1ADDR(SMEM1_BASE) + x)))
+#define SMEM1(x) (*((volatile unsigned char *) (KSEG1ADDR(ADM5120_SRAM1_BASE) + x)))
 
 #define NAND_RW_REG    0x0     //data register
 #define NAND_SET_CEn   0x1     //CE# low
@@ -86,6 +88,10 @@ unsigned get_rbnand_block_size(void) {
 EXPORT_SYMBOL(get_rbnand_block_size);
 
 int __init rbmips_init(void) {
+
+       if (!adm5120_nand_boot)
+               return -ENODEV;
+
        memset(&rmtd, 0, sizeof(rmtd));
        memset(&rnand, 0, sizeof(rnand));
        printk(KERN_INFO "RB1xx nand\n");
@@ -93,11 +99,11 @@ int __init rbmips_init(void) {
        MEM32(0xB2000008) = 0x1;
        SMEM1(NAND_SET_SPn) = 0x01;
        SMEM1(NAND_CLR_WPn) = 0x01;
-       rnand.IO_ADDR_R = (unsigned char *)KSEG1ADDR(SMEM1_BASE);
+       rnand.IO_ADDR_R = (unsigned char *)KSEG1ADDR(ADM5120_SRAM1_BASE);
        rnand.IO_ADDR_W = rnand.IO_ADDR_R;
        rnand.cmd_ctrl = rbmips_hwcontrol100;
        rnand.dev_ready = rb100_dev_ready;
-       p_nand = (void __iomem *)ioremap(( unsigned long)SMEM1_BASE, 0x1000);
+       p_nand = (void __iomem *)ioremap(( unsigned long)ADM5120_SRAM1_BASE, 0x1000);
        if (!p_nand) {
                printk(KERN_WARNING "RB1xx nand Unable ioremap buffer\n");
                return -ENXIO;