diff options
Diffstat (limited to 'target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch b/target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch index 2a127e7540..53f6e98d15 100644 --- a/target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch +++ b/target/linux/brcm47xx/patches-3.3/030-bcm47xx-bcma-nandflash.patch @@ -18,9 +18,9 @@ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the -@@ -80,3 +81,9 @@ void bcm47xx_sflash_struct_ssb_init(stru - sflash->numblocks = scc->sflash.numblocks; - sflash->size = scc->sflash.size; +@@ -46,6 +47,12 @@ void bcm47xx_sflash_struct_bcma_init(str + sflash->numblocks = bcc->sflash.numblocks; + sflash->size = bcc->sflash.size; } + +void bcm47xx_nflash_struct_bcma_init(struct bcm47xx_nflash *nflash, struct bcma_drv_cc *bcc) @@ -28,6 +28,9 @@ + nflash->nflash_type = BCM47XX_BUS_TYPE_BCMA; + nflash->bcc = bcc; +} + #endif + + #ifdef CONFIG_BCM47XX_SSB --- a/arch/mips/bcm47xx/nvram.c +++ b/arch/mips/bcm47xx/nvram.c @@ -4,6 +4,7 @@ @@ -46,10 +49,10 @@ static char nvram_buf[NVRAM_SPACE]; -@@ -139,6 +141,51 @@ static int early_nvram_init_sflash(void) - return 0; - } +@@ -160,6 +162,51 @@ static void early_nvram_init_ssb(void) + #endif + #ifdef CONFIG_BCM47XX_BCMA +static int early_nvram_init_nflash(void) +{ + struct nvram_header *header; @@ -95,9 +98,9 @@ + return ret; +} + - #ifdef CONFIG_BCM47XX_SSB - static void early_nvram_init_ssb(void) + static void early_nvram_init_bcma(void) { + int err; @@ -173,6 +220,11 @@ static void early_nvram_init_bcma(void) if (err < 0) printk(KERN_WARNING "can not read from flash: %i\n", err); @@ -120,18 +123,12 @@ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the -@@ -46,6 +47,7 @@ enum bcm47xx_bus_type bcm47xx_bus_type; - EXPORT_SYMBOL(bcm47xx_bus_type); +@@ -234,6 +235,21 @@ static int bcm47xx_get_sprom_bcma(struct + } + } - struct bcm47xx_sflash bcm47xx_sflash; +struct bcm47xx_nflash bcm47xx_nflash; - - static struct resource bcm47xx_pflash_resource = { - .name = "bcm47xx_pflash", -@@ -73,6 +75,19 @@ static struct platform_device bcm47xx_sf - .num_resources = 1, - }; - ++ +static struct resource bcm47xx_nflash_resource = { + .name = "bcm47xx_nflash", + .start = 0, @@ -145,10 +142,10 @@ + .num_resources = 1, +}; + - static void bcm47xx_machine_restart(char *command) + static void __init bcm47xx_register_bcma(void) { - printk(KERN_ALERT "Please stand by while rebooting the system...\n"); -@@ -248,6 +263,9 @@ static void __init bcm47xx_register_bcma + int err; +@@ -248,6 +264,9 @@ static void __init bcm47xx_register_bcma if (bcm47xx_bus.bcma.bus.drv_cc.flash_type == BCMA_SFLASH) bcm47xx_sflash_struct_bcma_init(&bcm47xx_sflash, &bcm47xx_bus.bcma.bus.drv_cc); @@ -158,7 +155,7 @@ bcm47xx_fill_bcma_boardinfo(&bcm47xx_bus.bcma.bus.boardinfo, NULL); } -@@ -264,6 +282,9 @@ static int __init bcm47xx_register_flash +@@ -264,6 +283,9 @@ static int __init bcm47xx_register_flash case BCMA_SFLASH: bcm47xx_sflash_dev.dev.platform_data = &bcm47xx_sflash; return platform_device_register(&bcm47xx_sflash_dev); @@ -178,23 +175,15 @@ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the -@@ -13,6 +14,7 @@ +@@ -12,6 +13,7 @@ + #include <linux/ssb/ssb.h> #include <linux/bcma/bcma.h> - #include <linux/mtd/mtd.h> #include <bcm47xx.h> +#include <linux/mtd/nand.h> struct bcm47xx_sflash { enum bcm47xx_bus_type sflash_type; -@@ -29,11 +31,24 @@ struct bcm47xx_sflash { - u32 blocksize; /* Block size */ - u32 numblocks; /* Number of blocks */ - u32 size; /* Total size in bytes */ -- -- struct mtd_info *mtd; - }; - - void bcm47xx_sflash_struct_bcma_init(struct bcm47xx_sflash *sflash, struct bcma_drv_cc *bcc); +@@ -34,3 +36,18 @@ void bcm47xx_sflash_struct_bcma_init(str void bcm47xx_sflash_struct_ssb_init(struct bcm47xx_sflash *sflash, struct ssb_chipcommon *scc); extern struct bcm47xx_sflash bcm47xx_sflash; @@ -445,7 +434,7 @@ +config MTD_NAND_BCM47XX + tristate "bcm47xx nand flash support" + default y -+ depends on BCM47XX ++ depends on BCM47XX && BCMA_NFLASH + select MTD_PARTITIONS + help + Support for bcm47xx nand flash |