--- a/drivers/ssb/driver_mipscore.c +++ b/drivers/ssb/driver_mipscore.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "ssb_private.h" @@ -186,6 +187,19 @@ static void ssb_mips_serial_init(struct mcore->nr_serial_ports = 0; } +static struct resource ssb_pflash_resource = { + .name = "ssb_pflash", + .start = 0, + .end = 0, + .flags = 0, +}; + +struct platform_device ssb_pflash_dev = { + .name = "bcm47xx-pflash", + .resource = &ssb_pflash_resource, + .num_resources = 1, +}; + static void ssb_mips_flash_detect(struct ssb_mipscore *mcore) { struct ssb_bus *bus = mcore->dev->bus; @@ -196,6 +210,9 @@ static void ssb_mips_flash_detect(struct mcore->pflash.buswidth = 2; mcore->pflash.window = SSB_FLASH1; mcore->pflash.window_size = SSB_FLASH1_SZ; + ssb_pflash_resource.start = mcore->pflash.window; + ssb_pflash_resource.end = mcore->pflash.window + + mcore->pflash.window_size; return; } @@ -216,6 +233,9 @@ static void ssb_mips_flash_detect(struct mcore->pflash.buswidth = 1; else mcore->pflash.buswidth = 2; + ssb_pflash_resource.start = mcore->pflash.window; + ssb_pflash_resource.end = mcore->pflash.window + + mcore->pflash.window_size; break; } } --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c @@ -549,6 +549,14 @@ static int ssb_devices_register(struct s "Error registering serial flash\n"); } #endif +#ifdef CONFIG_SSB_DRIVER_MIPS + if (bus->mipscore.pflash.present) { + err = platform_device_register(&ssb_pflash_dev); + if (err) + ssb_printk(KERN_ERR PFX + "Error registering parallel flash\n"); + } +#endif return 0; error: --- a/drivers/ssb/ssb_private.h +++ b/drivers/ssb/ssb_private.h @@ -271,4 +271,6 @@ static inline int ssb_gpio_init(struct s } #endif /* CONFIG_SSB_DRIVER_GPIO */ +extern struct platform_device ssb_pflash_dev; + #endif /* LINUX_SSB_PRIVATE_H_ */