|
@@ -227,7 +227,10 @@ struct nand_onfi_params {
|
|
__le16 revision;
|
|
__le16 revision;
|
|
__le16 features;
|
|
__le16 features;
|
|
__le16 opt_cmd;
|
|
__le16 opt_cmd;
|
|
- u8 reserved[22];
|
|
|
|
|
|
+ u8 reserved0[2];
|
|
|
|
+ __le16 ext_param_page_length; /* since ONFI 2.1 */
|
|
|
|
+ u8 num_of_param_pages; /* since ONFI 2.1 */
|
|
|
|
+ u8 reserved1[17];
|
|
|
|
|
|
/* manufacturer information block */
|
|
/* manufacturer information block */
|
|
char manufacturer[12];
|
|
char manufacturer[12];
|
|
@@ -284,6 +287,40 @@ struct nand_onfi_params {
|
|
|
|
|
|
#define ONFI_CRC_BASE 0x4F4E
|
|
#define ONFI_CRC_BASE 0x4F4E
|
|
|
|
|
|
|
|
+/* Extended ECC information Block Definition (since ONFI 2.1) */
|
|
|
|
+struct onfi_ext_ecc_info {
|
|
|
|
+ u8 ecc_bits;
|
|
|
|
+ u8 codeword_size;
|
|
|
|
+ __le16 bb_per_lun;
|
|
|
|
+ __le16 block_endurance;
|
|
|
|
+ u8 reserved[2];
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+#define ONFI_SECTION_TYPE_0 0 /* Unused section. */
|
|
|
|
+#define ONFI_SECTION_TYPE_1 1 /* for additional sections. */
|
|
|
|
+#define ONFI_SECTION_TYPE_2 2 /* for ECC information. */
|
|
|
|
+struct onfi_ext_section {
|
|
|
|
+ u8 type;
|
|
|
|
+ u8 length;
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
|
|
+#define ONFI_EXT_SECTION_MAX 8
|
|
|
|
+
|
|
|
|
+/* Extended Parameter Page Definition (since ONFI 2.1) */
|
|
|
|
+struct onfi_ext_param_page {
|
|
|
|
+ __le16 crc;
|
|
|
|
+ u8 sig[4]; /* 'E' 'P' 'P' 'S' */
|
|
|
|
+ u8 reserved0[10];
|
|
|
|
+ struct onfi_ext_section sections[ONFI_EXT_SECTION_MAX];
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * The actual size of the Extended Parameter Page is in
|
|
|
|
+ * @ext_param_page_length of nand_onfi_params{}.
|
|
|
|
+ * The following are the variable length sections.
|
|
|
|
+ * So we do not add any fields below. Please see the ONFI spec.
|
|
|
|
+ */
|
|
|
|
+} __packed;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices
|
|
* struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices
|
|
* @lock: protection lock
|
|
* @lock: protection lock
|