1 From 50a7db84f71e7c4779596fb5f8efb579a5d29f97 Mon Sep 17 00:00:00 2001
2 From: Huang Shijie <b32955@freescale.com>
3 Date: Fri, 17 May 2013 11:17:27 +0800
4 Subject: [PATCH 091/203] mtd: add data structures for Extended Parameter Page
6 Since the ONFI 2.1, the onfi spec adds the Extended Parameter Page
9 The onfi spec tells us that if the nand chip's recommended ECC codeword
10 size is not 512 bytes, then the @ecc_bits is 0xff. The host _SHOULD_ then
11 read the Extended ECC information that is part of the extended parameter
12 page to retrieve the ECC requirements for this device.
15 [1] the neccessary fields for nand_onfi_params{},
16 [2] and adds the onfi_ext_ecc_info{} for Extended ECC information,
17 [3] adds onfi_ext_section{} for extended sections,
18 [4] and adds onfi_ext_param_page{} for the Extended Parameter Page.
20 Acked-by: Pekon Gupta <pekon@ti.com>
21 Signed-off-by: Huang Shijie <b32955@freescale.com>
22 Reviewed-and-tested-by: Brian Norris <computersforpeace@gmail.com>
23 [Brian: amended for checkpatch.pl]
24 Signed-off-by: Brian Norris <computersforpeace@gmail.com>
26 Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
28 include/linux/mtd/nand.h | 39 ++++++++++++++++++++++++++++++++++++++-
29 1 file changed, 38 insertions(+), 1 deletion(-)
31 --- a/include/linux/mtd/nand.h
32 +++ b/include/linux/mtd/nand.h
33 @@ -224,7 +224,10 @@ struct nand_onfi_params {
39 + __le16 ext_param_page_length; /* since ONFI 2.1 */
40 + u8 num_of_param_pages; /* since ONFI 2.1 */
43 /* manufacturer information block */
44 char manufacturer[12];
45 @@ -281,6 +284,40 @@ struct nand_onfi_params {
47 #define ONFI_CRC_BASE 0x4F4E
49 +/* Extended ECC information Block Definition (since ONFI 2.1) */
50 +struct onfi_ext_ecc_info {
54 + __le16 block_endurance;
58 +#define ONFI_SECTION_TYPE_0 0 /* Unused section. */
59 +#define ONFI_SECTION_TYPE_1 1 /* for additional sections. */
60 +#define ONFI_SECTION_TYPE_2 2 /* for ECC information. */
61 +struct onfi_ext_section {
66 +#define ONFI_EXT_SECTION_MAX 8
68 +/* Extended Parameter Page Definition (since ONFI 2.1) */
69 +struct onfi_ext_param_page {
71 + u8 sig[4]; /* 'E' 'P' 'P' 'S' */
73 + struct onfi_ext_section sections[ONFI_EXT_SECTION_MAX];
76 + * The actual size of the Extended Parameter Page is in
77 + * @ext_param_page_length of nand_onfi_params{}.
78 + * The following are the variable length sections.
79 + * So we do not add any fields below. Please see the ONFI spec.
84 * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices
85 * @lock: protection lock