Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
driver_chipcommon_nflash.c
Go to the documentation of this file.
1 /*
2  * Broadcom specific AMBA
3  * ChipCommon NAND flash interface
4  *
5  * Licensed under the GNU/GPL. See COPYING for details.
6  */
7 
9 #include <linux/bcma/bcma.h>
10 
11 #include "bcma_private.h"
12 
14  .name = "bcma_nflash",
15  .num_resources = 0,
16 };
17 
18 /* Initialize NAND flash access */
20 {
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 
40  return 0;
41 }