Loading drivers/bcma/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ config BCMA_SFLASH config BCMA_NFLASH bool depends on BCMA_DRIVER_MIPS && BROKEN depends on BCMA_DRIVER_MIPS default y config BCMA_DRIVER_GMAC_CMN Loading drivers/bcma/bcma_private.h +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ static inline int bcma_sflash_init(struct bcma_drv_cc *cc) #ifdef CONFIG_BCMA_NFLASH /* driver_chipcommon_nflash.c */ int bcma_nflash_init(struct bcma_drv_cc *cc); extern struct platform_device bcma_nflash_dev; #else static inline int bcma_nflash_init(struct bcma_drv_cc *cc) { Loading drivers/bcma/driver_chipcommon_nflash.c +25 −3 Original line number Diff line number Diff line Loading @@ -5,15 +5,37 @@ * Licensed under the GNU/GPL. See COPYING for details. */ #include <linux/platform_device.h> #include <linux/bcma/bcma.h> #include <linux/bcma/bcma_driver_chipcommon.h> #include <linux/delay.h> #include "bcma_private.h" struct platform_device bcma_nflash_dev = { .name = "bcma_nflash", .num_resources = 0, }; /* Initialize NAND flash access */ int bcma_nflash_init(struct bcma_drv_cc *cc) { bcma_err(cc->core->bus, "NAND flash support is broken\n"); struct bcma_bus *bus = cc->core->bus; if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4706 && cc->core->id.rev != 0x38) { bcma_err(bus, "NAND flash on unsupported board!\n"); return -ENOTSUPP; } if (!(cc->capabilities & BCMA_CC_CAP_NFLASH)) { bcma_err(bus, "NAND flash not present according to ChipCommon\n"); return -ENODEV; } cc->nflash.present = true; /* Prepare platform device, but don't register it yet. It's too early, * malloc (required by device_private_init) is not available yet. */ bcma_nflash_dev.dev.platform_data = &cc->nflash; return 0; } drivers/bcma/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,14 @@ static int bcma_register_cores(struct bcma_bus *bus) } #endif #ifdef CONFIG_BCMA_NFLASH if (bus->drv_cc.nflash.present) { err = platform_device_register(&bcma_nflash_dev); if (err) bcma_err(bus, "Error registering NAND flash\n"); } #endif return 0; } Loading include/linux/bcma/bcma_driver_chipcommon.h +13 −0 Original line number Diff line number Diff line Loading @@ -519,6 +519,16 @@ struct bcma_sflash { }; #endif #ifdef CONFIG_BCMA_NFLASH struct mtd_info; struct bcma_nflash { bool present; struct mtd_info *mtd; }; #endif struct bcma_serial_port { void *regs; unsigned long clockspeed; Loading @@ -542,6 +552,9 @@ struct bcma_drv_cc { #ifdef CONFIG_BCMA_SFLASH struct bcma_sflash sflash; #endif #ifdef CONFIG_BCMA_NFLASH struct bcma_nflash nflash; #endif int nr_serial_ports; struct bcma_serial_port serial_ports[4]; Loading Loading
drivers/bcma/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ config BCMA_SFLASH config BCMA_NFLASH bool depends on BCMA_DRIVER_MIPS && BROKEN depends on BCMA_DRIVER_MIPS default y config BCMA_DRIVER_GMAC_CMN Loading
drivers/bcma/bcma_private.h +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ static inline int bcma_sflash_init(struct bcma_drv_cc *cc) #ifdef CONFIG_BCMA_NFLASH /* driver_chipcommon_nflash.c */ int bcma_nflash_init(struct bcma_drv_cc *cc); extern struct platform_device bcma_nflash_dev; #else static inline int bcma_nflash_init(struct bcma_drv_cc *cc) { Loading
drivers/bcma/driver_chipcommon_nflash.c +25 −3 Original line number Diff line number Diff line Loading @@ -5,15 +5,37 @@ * Licensed under the GNU/GPL. See COPYING for details. */ #include <linux/platform_device.h> #include <linux/bcma/bcma.h> #include <linux/bcma/bcma_driver_chipcommon.h> #include <linux/delay.h> #include "bcma_private.h" struct platform_device bcma_nflash_dev = { .name = "bcma_nflash", .num_resources = 0, }; /* Initialize NAND flash access */ int bcma_nflash_init(struct bcma_drv_cc *cc) { bcma_err(cc->core->bus, "NAND flash support is broken\n"); struct bcma_bus *bus = cc->core->bus; if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4706 && cc->core->id.rev != 0x38) { bcma_err(bus, "NAND flash on unsupported board!\n"); return -ENOTSUPP; } if (!(cc->capabilities & BCMA_CC_CAP_NFLASH)) { bcma_err(bus, "NAND flash not present according to ChipCommon\n"); return -ENODEV; } cc->nflash.present = true; /* Prepare platform device, but don't register it yet. It's too early, * malloc (required by device_private_init) is not available yet. */ bcma_nflash_dev.dev.platform_data = &cc->nflash; return 0; }
drivers/bcma/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,14 @@ static int bcma_register_cores(struct bcma_bus *bus) } #endif #ifdef CONFIG_BCMA_NFLASH if (bus->drv_cc.nflash.present) { err = platform_device_register(&bcma_nflash_dev); if (err) bcma_err(bus, "Error registering NAND flash\n"); } #endif return 0; } Loading
include/linux/bcma/bcma_driver_chipcommon.h +13 −0 Original line number Diff line number Diff line Loading @@ -519,6 +519,16 @@ struct bcma_sflash { }; #endif #ifdef CONFIG_BCMA_NFLASH struct mtd_info; struct bcma_nflash { bool present; struct mtd_info *mtd; }; #endif struct bcma_serial_port { void *regs; unsigned long clockspeed; Loading @@ -542,6 +552,9 @@ struct bcma_drv_cc { #ifdef CONFIG_BCMA_SFLASH struct bcma_sflash sflash; #endif #ifdef CONFIG_BCMA_NFLASH struct bcma_nflash nflash; #endif int nr_serial_ports; struct bcma_serial_port serial_ports[4]; Loading