--- a/drivers/bcma/bcma_private.h +++ b/drivers/bcma/bcma_private.h @@ -47,6 +47,7 @@ int bcma_sprom_get(struct bcma_bus *bus) /* driver_chipcommon.c */ #ifdef CONFIG_BCMA_DRIVER_MIPS void bcma_chipco_serial_init(struct bcma_drv_cc *cc); +extern struct platform_device bcma_pflash_dev; #endif /* CONFIG_BCMA_DRIVER_MIPS */ /* driver_chipcommon_pmu.c */ --- a/drivers/bcma/driver_mips.c +++ b/drivers/bcma/driver_mips.c @@ -18,6 +18,7 @@ #include #include #include +#include /* The 47162a0 hangs when reading MIPS DMP registers registers */ static inline bool bcma_core_mips_bcm47162a0_quirk(struct bcma_device *dev) @@ -201,6 +202,19 @@ u32 bcma_cpu_clock(struct bcma_drv_mips } EXPORT_SYMBOL(bcma_cpu_clock); +static struct resource bcma_pflash_resource = { + .name = "bcma_pflash", + .start = 0, + .end = 0, + .flags = 0, +}; + +struct platform_device bcma_pflash_dev = { + .name = "bcm47xx-pflash", + .resource = &bcma_pflash_resource, + .num_resources = 1, +}; + static void bcma_core_mips_flash_detect(struct bcma_drv_mips *mcore) { struct bcma_bus *bus = mcore->core->bus; @@ -223,6 +237,9 @@ static void bcma_core_mips_flash_detect( cc->pflash.buswidth = 1; else cc->pflash.buswidth = 2; + + bcma_pflash_resource.start = cc->pflash.window; + bcma_pflash_resource.end = cc->pflash.window + cc->pflash.window_size; break; default: bcma_err(bus, "Flash type not supported\n"); --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -149,6 +149,14 @@ static int bcma_register_cores(struct bc dev_id++; } +#ifdef CONFIG_BCMA_DRIVER_MIPS + if (bus->drv_cc.pflash.present) { + err = platform_device_register(&bcma_pflash_dev); + if (err) + bcma_err(bus, "Error registering parallel flash\n"); + } +#endif + #ifdef CONFIG_BCMA_SFLASH if (bus->drv_cc.sflash.present) { err = platform_device_register(&bcma_sflash_dev);