diff options
Diffstat (limited to 'drivers/bcma/driver_chipcommon_nflash.c')
-rw-r--r-- | drivers/bcma/driver_chipcommon_nflash.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/drivers/bcma/driver_chipcommon_nflash.c b/drivers/bcma/driver_chipcommon_nflash.c index 574d62435bc2..9042781edec3 100644 --- a/drivers/bcma/driver_chipcommon_nflash.c +++ b/drivers/bcma/driver_chipcommon_nflash.c | |||
@@ -5,15 +5,37 @@ | |||
5 | * Licensed under the GNU/GPL. See COPYING for details. | 5 | * Licensed under the GNU/GPL. See COPYING for details. |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/platform_device.h> | ||
8 | #include <linux/bcma/bcma.h> | 9 | #include <linux/bcma/bcma.h> |
9 | #include <linux/bcma/bcma_driver_chipcommon.h> | ||
10 | #include <linux/delay.h> | ||
11 | 10 | ||
12 | #include "bcma_private.h" | 11 | #include "bcma_private.h" |
13 | 12 | ||
13 | struct platform_device bcma_nflash_dev = { | ||
14 | .name = "bcma_nflash", | ||
15 | .num_resources = 0, | ||
16 | }; | ||
17 | |||
14 | /* Initialize NAND flash access */ | 18 | /* Initialize NAND flash access */ |
15 | int bcma_nflash_init(struct bcma_drv_cc *cc) | 19 | int bcma_nflash_init(struct bcma_drv_cc *cc) |
16 | { | 20 | { |
17 | bcma_err(cc->core->bus, "NAND flash support is broken\n"); | 21 | struct bcma_bus *bus = cc->core->bus; |
22 | |||
23 | if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4706 && | ||
24 | cc->core->id.rev != 0x38) { | ||
25 | bcma_err(bus, "NAND flash on unsupported board!\n"); | ||
26 | return -ENOTSUPP; | ||
27 | } | ||
28 | |||
29 | if (!(cc->capabilities & BCMA_CC_CAP_NFLASH)) { | ||
30 | bcma_err(bus, "NAND flash not present according to ChipCommon\n"); | ||
31 | return -ENODEV; | ||
32 | } | ||
33 | |||
34 | cc->nflash.present = true; | ||
35 | |||
36 | /* Prepare platform device, but don't register it yet. It's too early, | ||
37 | * malloc (required by device_private_init) is not available yet. */ | ||
38 | bcma_nflash_dev.dev.platform_data = &cc->nflash; | ||
39 | |||
18 | return 0; | 40 | return 0; |
19 | } | 41 | } |