0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __LINUX_MTD_JEDEC_H
0011 #define __LINUX_MTD_JEDEC_H
0012
0013 struct jedec_ecc_info {
0014 u8 ecc_bits;
0015 u8 codeword_size;
0016 __le16 bb_per_lun;
0017 __le16 block_endurance;
0018 u8 reserved[2];
0019 } __packed;
0020
0021
0022 #define JEDEC_FEATURE_16_BIT_BUS (1 << 0)
0023
0024 struct nand_jedec_params {
0025
0026
0027 u8 sig[4];
0028 __le16 revision;
0029 __le16 features;
0030 u8 opt_cmd[3];
0031 __le16 sec_cmd;
0032 u8 num_of_param_pages;
0033 u8 reserved0[18];
0034
0035
0036 char manufacturer[12];
0037 char model[20];
0038 u8 jedec_id[6];
0039 u8 reserved1[10];
0040
0041
0042 __le32 byte_per_page;
0043 __le16 spare_bytes_per_page;
0044 u8 reserved2[6];
0045 __le32 pages_per_block;
0046 __le32 blocks_per_lun;
0047 u8 lun_count;
0048 u8 addr_cycles;
0049 u8 bits_per_cell;
0050 u8 programs_per_page;
0051 u8 multi_plane_addr;
0052 u8 multi_plane_op_attr;
0053 u8 reserved3[38];
0054
0055
0056 __le16 async_sdr_speed_grade;
0057 __le16 toggle_ddr_speed_grade;
0058 __le16 sync_ddr_speed_grade;
0059 u8 async_sdr_features;
0060 u8 toggle_ddr_features;
0061 u8 sync_ddr_features;
0062 __le16 t_prog;
0063 __le16 t_bers;
0064 __le16 t_r;
0065 __le16 t_r_multi_plane;
0066 __le16 t_ccs;
0067 __le16 io_pin_capacitance_typ;
0068 __le16 input_pin_capacitance_typ;
0069 __le16 clk_pin_capacitance_typ;
0070 u8 driver_strength_support;
0071 __le16 t_adl;
0072 u8 reserved4[36];
0073
0074
0075 u8 guaranteed_good_blocks;
0076 __le16 guaranteed_block_endurance;
0077 struct jedec_ecc_info ecc_info[4];
0078 u8 reserved5[29];
0079
0080
0081 u8 reserved6[148];
0082
0083
0084 __le16 vendor_rev_num;
0085 u8 reserved7[88];
0086
0087
0088 __le16 crc;
0089 } __packed;
0090
0091 #endif