diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2013-03-04 15:39:18 +0200 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2013-04-05 12:03:47 +0100 |
commit | 8dbfae1ef04311ba19d6b6c9a4d8fdddbb90ab0f (patch) | |
tree | 27735e4b90a56ad97635303ceb8ecb6178816c9a /include/linux/mtd | |
parent | 51148f1fb0835fc87ab3630d191dc3c880d4d0af (diff) | |
download | linux-stable-8dbfae1ef04311ba19d6b6c9a4d8fdddbb90ab0f.tar.gz linux-stable-8dbfae1ef04311ba19d6b6c9a4d8fdddbb90ab0f.tar.bz2 linux-stable-8dbfae1ef04311ba19d6b6c9a4d8fdddbb90ab0f.zip |
mtd: nand_ids: introduce helper macros
Introduce helper macros for defining NAND chips. These macros do not really add
much value in the current code-base. However, we are going to add full ID
support which adds some more complexity to the table, and helper macros become
useful for readability.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'include/linux/mtd')
-rw-r--r-- | include/linux/mtd/nand.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 9aed31a49af1..63b319a6f98c 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -546,6 +546,30 @@ struct nand_chip { #define NAND_MFR_MACRONIX 0xc2 #define NAND_MFR_EON 0x92 +/* + * A helper for defining older NAND chips where the second ID byte fully + * defined the chip, including the geometry (chip size, eraseblock size, page + * size). + */ +#define LEGACY_ID_NAND(nm, devid, pagesz, chipsz, erasesz, opts) \ + { .name = (nm), .dev_id = (devid), .pagesize = (pagesz), \ + .chipsize = (chipsz), .erasesize = (erasesz), \ + .options = (opts) } + +/* + * A helper for defining newer chips which report their page size and + * eraseblock size via the extended ID bytes. + * + * The real difference between LEGACY_ID_NAND and EXTENDED_ID_NAND is that with + * EXTENDED_ID_NAND, manufacturers overloaded the same device ID so that the + * device ID now only represented a particular total chip size (and voltage, + * buswidth), and the page size, eraseblock size, and OOB size could vary while + * using the same device ID. + */ +#define EXTENDED_ID_NAND(nm, devid, chipsz, opts) \ + { .name = (nm), .dev_id = (devid), .chipsize = (chipsz), \ + .options = (opts) } + /** * struct nand_flash_dev - NAND Flash Device ID Structure * @name: a human-readable name of the NAND chip |