1 | /* |
2 | * Broadcom specific AMBA |
3 | * ChipCommon parallel flash |
4 | * |
5 | * Licensed under the GNU/GPL. See COPYING for details. |
6 | */ |
7 | |
8 | #include "bcma_private.h" |
9 | |
10 | #include <linux/bcma/bcma.h> |
11 | #include <linux/mtd/physmap.h> |
12 | #include <linux/platform_device.h> |
13 | |
14 | static const char * const part_probes[] = { "bcm47xxpart" , NULL }; |
15 | |
16 | static struct physmap_flash_data bcma_pflash_data = { |
17 | .part_probe_types = part_probes, |
18 | }; |
19 | |
20 | static struct resource bcma_pflash_resource = { |
21 | .name = "bcma_pflash" , |
22 | .flags = IORESOURCE_MEM, |
23 | }; |
24 | |
25 | struct platform_device bcma_pflash_dev = { |
26 | .name = "physmap-flash" , |
27 | .dev = { |
28 | .platform_data = &bcma_pflash_data, |
29 | }, |
30 | .resource = &bcma_pflash_resource, |
31 | .num_resources = 1, |
32 | }; |
33 | |
34 | int bcma_pflash_init(struct bcma_drv_cc *cc) |
35 | { |
36 | struct bcma_pflash *pflash = &cc->pflash; |
37 | |
38 | pflash->present = true; |
39 | |
40 | if (!(bcma_read32(core: cc->core, BCMA_CC_FLASH_CFG) & BCMA_CC_FLASH_CFG_DS)) |
41 | bcma_pflash_data.width = 1; |
42 | else |
43 | bcma_pflash_data.width = 2; |
44 | |
45 | bcma_pflash_resource.start = BCMA_SOC_FLASH2; |
46 | bcma_pflash_resource.end = BCMA_SOC_FLASH2 + BCMA_SOC_FLASH2_SZ; |
47 | |
48 | return 0; |
49 | } |
50 | |