diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2013-01-25 05:37:26 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-01-30 15:06:46 -0500 |
commit | 73e4dbe4ca9d5573f84818964276668b42177de2 (patch) | |
tree | 141424d4f478095da01e4417a82ec9b4c9457303 /drivers/bcma/driver_mips.c | |
parent | c7a4a9e3880cc8cdc1f2958796e517d9d96ff7e0 (diff) |
bcma: register platform device for parallel flash
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma/driver_mips.c')
-rw-r--r-- | drivers/bcma/driver_mips.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/drivers/bcma/driver_mips.c b/drivers/bcma/driver_mips.c index 9fe86ee16c66..9a7f0e3ab5a3 100644 --- a/drivers/bcma/driver_mips.c +++ b/drivers/bcma/driver_mips.c | |||
@@ -14,11 +14,33 @@ | |||
14 | 14 | ||
15 | #include <linux/bcma/bcma.h> | 15 | #include <linux/bcma/bcma.h> |
16 | 16 | ||
17 | #include <linux/mtd/physmap.h> | ||
18 | #include <linux/platform_device.h> | ||
17 | #include <linux/serial.h> | 19 | #include <linux/serial.h> |
18 | #include <linux/serial_core.h> | 20 | #include <linux/serial_core.h> |
19 | #include <linux/serial_reg.h> | 21 | #include <linux/serial_reg.h> |
20 | #include <linux/time.h> | 22 | #include <linux/time.h> |
21 | 23 | ||
24 | static const char *part_probes[] = { "bcm47xxpart", NULL }; | ||
25 | |||
26 | static struct physmap_flash_data bcma_pflash_data = { | ||
27 | .part_probe_types = part_probes, | ||
28 | }; | ||
29 | |||
30 | static struct resource bcma_pflash_resource = { | ||
31 | .name = "bcma_pflash", | ||
32 | .flags = IORESOURCE_MEM, | ||
33 | }; | ||
34 | |||
35 | struct platform_device bcma_pflash_dev = { | ||
36 | .name = "physmap-flash", | ||
37 | .dev = { | ||
38 | .platform_data = &bcma_pflash_data, | ||
39 | }, | ||
40 | .resource = &bcma_pflash_resource, | ||
41 | .num_resources = 1, | ||
42 | }; | ||
43 | |||
22 | /* The 47162a0 hangs when reading MIPS DMP registers registers */ | 44 | /* The 47162a0 hangs when reading MIPS DMP registers registers */ |
23 | static inline bool bcma_core_mips_bcm47162a0_quirk(struct bcma_device *dev) | 45 | static inline bool bcma_core_mips_bcm47162a0_quirk(struct bcma_device *dev) |
24 | { | 46 | { |
@@ -211,6 +233,7 @@ static void bcma_core_mips_flash_detect(struct bcma_drv_mips *mcore) | |||
211 | { | 233 | { |
212 | struct bcma_bus *bus = mcore->core->bus; | 234 | struct bcma_bus *bus = mcore->core->bus; |
213 | struct bcma_drv_cc *cc = &bus->drv_cc; | 235 | struct bcma_drv_cc *cc = &bus->drv_cc; |
236 | struct bcma_pflash *pflash = &cc->pflash; | ||
214 | 237 | ||
215 | switch (cc->capabilities & BCMA_CC_CAP_FLASHT) { | 238 | switch (cc->capabilities & BCMA_CC_CAP_FLASHT) { |
216 | case BCMA_CC_FLASHT_STSER: | 239 | case BCMA_CC_FLASHT_STSER: |
@@ -220,15 +243,20 @@ static void bcma_core_mips_flash_detect(struct bcma_drv_mips *mcore) | |||
220 | break; | 243 | break; |
221 | case BCMA_CC_FLASHT_PARA: | 244 | case BCMA_CC_FLASHT_PARA: |
222 | bcma_debug(bus, "Found parallel flash\n"); | 245 | bcma_debug(bus, "Found parallel flash\n"); |
223 | cc->pflash.present = true; | 246 | pflash->present = true; |
224 | cc->pflash.window = BCMA_SOC_FLASH2; | 247 | pflash->window = BCMA_SOC_FLASH2; |
225 | cc->pflash.window_size = BCMA_SOC_FLASH2_SZ; | 248 | pflash->window_size = BCMA_SOC_FLASH2_SZ; |
226 | 249 | ||
227 | if ((bcma_read32(cc->core, BCMA_CC_FLASH_CFG) & | 250 | if ((bcma_read32(cc->core, BCMA_CC_FLASH_CFG) & |
228 | BCMA_CC_FLASH_CFG_DS) == 0) | 251 | BCMA_CC_FLASH_CFG_DS) == 0) |
229 | cc->pflash.buswidth = 1; | 252 | pflash->buswidth = 1; |
230 | else | 253 | else |
231 | cc->pflash.buswidth = 2; | 254 | pflash->buswidth = 2; |
255 | |||
256 | bcma_pflash_data.width = pflash->buswidth; | ||
257 | bcma_pflash_resource.start = pflash->window; | ||
258 | bcma_pflash_resource.end = pflash->window + pflash->window_size; | ||
259 | |||
232 | break; | 260 | break; |
233 | default: | 261 | default: |
234 | bcma_err(bus, "Flash type not supported\n"); | 262 | bcma_err(bus, "Flash type not supported\n"); |