diff --git a/target/linux/brcm47xx/patches-3.3/024-brcm47xx-add-common-interface-for-sflash.patch b/target/linux/brcm47xx/patches-3.3/024-brcm47xx-add-common-interface-for-sflash.patch index 2b1516d27d..fd4befcfae 100644 --- a/target/linux/brcm47xx/patches-3.3/024-brcm47xx-add-common-interface-for-sflash.patch +++ b/target/linux/brcm47xx/patches-3.3/024-brcm47xx-add-common-interface-for-sflash.patch @@ -9,7 +9,7 @@ obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o --- /dev/null +++ b/arch/mips/bcm47xx/bus.c -@@ -0,0 +1,82 @@ +@@ -0,0 +1,86 @@ +/* + * BCM947xx nvram variable access + * @@ -23,6 +23,7 @@ + +#include + ++#ifdef CONFIG_BCM47XX_BCMA +static int bcm47xx_sflash_bcma_read(struct bcm47xx_sflash *dev, u32 offset, u32 len, u8 *buf) +{ + return bcma_sflash_read(dev->bcc, offset, len, buf); @@ -57,7 +58,9 @@ + sflash->numblocks = bcc->sflash.numblocks; + sflash->size = bcc->sflash.size; +} ++#endif + ++#ifdef CONFIG_BCM47XX_SSB +static int bcm47xx_sflash_ssb_read(struct bcm47xx_sflash *dev, u32 offset, u32 len, u8 *buf) +{ + return ssb_sflash_read(dev->scc, offset, len, buf); @@ -92,6 +95,7 @@ + sflash->numblocks = scc->sflash.numblocks; + sflash->size = scc->sflash.size; +} ++#endif --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c @@ -43,6 +43,8 @@ EXPORT_SYMBOL(bcm47xx_bus); diff --git a/target/linux/brcm47xx/patches-3.3/027-mtd-bcm47xx-add-serial-flash-driver.patch b/target/linux/brcm47xx/patches-3.3/027-mtd-bcm47xx-add-serial-flash-driver.patch index 1e2577b728..3aec60c11e 100644 --- a/target/linux/brcm47xx/patches-3.3/027-mtd-bcm47xx-add-serial-flash-driver.patch +++ b/target/linux/brcm47xx/patches-3.3/027-mtd-bcm47xx-add-serial-flash-driver.patch @@ -1,22 +1,3 @@ ---- a/arch/mips/include/asm/mach-bcm47xx/bus.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bus.h -@@ -11,6 +11,7 @@ - - #include - #include -+#include - #include - - struct bcm47xx_sflash { -@@ -28,6 +29,8 @@ 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); --- a/drivers/mtd/maps/Kconfig +++ b/drivers/mtd/maps/Kconfig @@ -257,6 +257,15 @@ config MTD_BCM47XX_PFLASH 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 #include - #include #include +#include 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 diff --git a/target/linux/brcm47xx/patches-3.3/114-MIPS-BCM47xx-Setup-and-register-serial-early.patch b/target/linux/brcm47xx/patches-3.3/114-MIPS-BCM47xx-Setup-and-register-serial-early.patch index 3d1f5660fa..9013972375 100644 --- a/target/linux/brcm47xx/patches-3.3/114-MIPS-BCM47xx-Setup-and-register-serial-early.patch +++ b/target/linux/brcm47xx/patches-3.3/114-MIPS-BCM47xx-Setup-and-register-serial-early.patch @@ -24,7 +24,7 @@ Signed-off-by: Hauke Mehrtens #include #include #include -@@ -166,6 +168,31 @@ static int bcm47xx_get_invariants(struct +@@ -152,6 +154,31 @@ static int bcm47xx_get_invariants(struct return 0; } @@ -56,7 +56,7 @@ Signed-off-by: Hauke Mehrtens static void __init bcm47xx_register_ssb(void) { int err; -@@ -198,6 +225,10 @@ static void __init bcm47xx_register_ssb( +@@ -184,6 +211,10 @@ static void __init bcm47xx_register_ssb( memcpy(&mcore->serial_ports[1], &port, sizeof(port)); } } diff --git a/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch b/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch index c3c7aea541..4018fd8d2b 100644 --- a/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch +++ b/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch @@ -33,7 +33,7 @@ +EXPORT_SYMBOL(nvram_get); --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c -@@ -379,3 +379,20 @@ static int __init bcm47xx_register_flash +@@ -380,3 +380,20 @@ static int __init bcm47xx_register_flash return -1; } fs_initcall(bcm47xx_register_flash); diff --git a/target/linux/brcm47xx/patches-3.3/502-bcm47xx-rewrite-gpio-handling.patch b/target/linux/brcm47xx/patches-3.3/502-bcm47xx-rewrite-gpio-handling.patch index f38dcf6db3..345aa415ab 100644 --- a/target/linux/brcm47xx/patches-3.3/502-bcm47xx-rewrite-gpio-handling.patch +++ b/target/linux/brcm47xx/patches-3.3/502-bcm47xx-rewrite-gpio-handling.patch @@ -272,7 +272,7 @@ +EXPORT_SYMBOL(gpio_set_value); --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c -@@ -344,6 +344,8 @@ void __init plat_mem_setup(void) +@@ -345,6 +345,8 @@ void __init plat_mem_setup(void) _machine_restart = bcm47xx_machine_restart; _machine_halt = bcm47xx_machine_halt; pm_power_off = bcm47xx_machine_halt; diff --git a/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch b/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch index c6de865c7e..7626c62abc 100644 --- a/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch +++ b/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch @@ -1,6 +1,6 @@ --- a/arch/mips/bcm47xx/setup.c +++ b/arch/mips/bcm47xx/setup.c -@@ -165,6 +165,10 @@ static int bcm47xx_get_invariants(struct +@@ -151,6 +151,10 @@ static int bcm47xx_get_invariants(struct if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0) iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10);