Merge tag 'ntb-4.20' of git://github.com/jonmason/ntb
[linux-2.6-microblaze.git] / include / linux / mtd / jedec.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org>
4  *                       Steven J. Hill <sjhill@realitydiluted.com>
5  *                       Thomas Gleixner <tglx@linutronix.de>
6  *
7  * Contains all JEDEC related definitions
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 /* JEDEC features */
22 #define JEDEC_FEATURE_16_BIT_BUS        (1 << 0)
23
24 struct nand_jedec_params {
25         /* rev info and features block */
26         /* 'J' 'E' 'S' 'D'  */
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         /* manufacturer information block */
36         char manufacturer[12];
37         char model[20];
38         u8 jedec_id[6];
39         u8 reserved1[10];
40
41         /* memory organization block */
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         /* electrical parameter block */
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         /* ECC and endurance block */
75         u8 guaranteed_good_blocks;
76         __le16 guaranteed_block_endurance;
77         struct jedec_ecc_info ecc_info[4];
78         u8 reserved5[29];
79
80         /* reserved */
81         u8 reserved6[148];
82
83         /* vendor */
84         __le16 vendor_rev_num;
85         u8 reserved7[88];
86
87         /* CRC for Parameter Page */
88         __le16 crc;
89 } __packed;
90
91 #endif /* __LINUX_MTD_JEDEC_H */