1
2
3
4
5
6
7
8
9
10 #ifndef __LINUX_MTD_JEDEC_H
11 #define __LINUX_MTD_JEDEC_H
12
13 struct jedec_ecc_info {
14 u8 ecc_bits;
15 u8 codeword_size;
16 __le16 bb_per_lun;
17 __le16 block_endurance;
18 u8 reserved[2];
19 } __packed;
20
21
22 #define JEDEC_FEATURE_16_BIT_BUS (1 << 0)
23
24 struct nand_jedec_params {
25
26
27 u8 sig[4];
28 __le16 revision;
29 __le16 features;
30 u8 opt_cmd[3];
31 __le16 sec_cmd;
32 u8 num_of_param_pages;
33 u8 reserved0[18];
34
35
36 char manufacturer[12];
37 char model[20];
38 u8 jedec_id[6];
39 u8 reserved1[10];
40
41
42 __le32 byte_per_page;
43 __le16 spare_bytes_per_page;
44 u8 reserved2[6];
45 __le32 pages_per_block;
46 __le32 blocks_per_lun;
47 u8 lun_count;
48 u8 addr_cycles;
49 u8 bits_per_cell;
50 u8 programs_per_page;
51 u8 multi_plane_addr;
52 u8 multi_plane_op_attr;
53 u8 reserved3[38];
54
55
56 __le16 async_sdr_speed_grade;
57 __le16 toggle_ddr_speed_grade;
58 __le16 sync_ddr_speed_grade;
59 u8 async_sdr_features;
60 u8 toggle_ddr_features;
61 u8 sync_ddr_features;
62 __le16 t_prog;
63 __le16 t_bers;
64 __le16 t_r;
65 __le16 t_r_multi_plane;
66 __le16 t_ccs;
67 __le16 io_pin_capacitance_typ;
68 __le16 input_pin_capacitance_typ;
69 __le16 clk_pin_capacitance_typ;
70 u8 driver_strength_support;
71 __le16 t_adl;
72 u8 reserved4[36];
73
74
75 u8 guaranteed_good_blocks;
76 __le16 guaranteed_block_endurance;
77 struct jedec_ecc_info ecc_info[4];
78 u8 reserved5[29];
79
80
81 u8 reserved6[148];
82
83
84 __le16 vendor_rev_num;
85 u8 reserved7[88];
86
87
88 __le16 crc;
89 } __packed;
90
91 #endif