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
13struct 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/* JEDEC Optional Commands */
25#define JEDEC_OPT_CMD_READ_CACHE BIT(1)
26
27struct nand_jedec_params {
28 /* rev info and features block */
29 /* 'J' 'E' 'S' 'D' */
30 u8 sig[4];
31 __le16 revision;
32 __le16 features;
33 u8 opt_cmd[3];
34 __le16 sec_cmd;
35 u8 num_of_param_pages;
36 u8 reserved0[18];
37
38 /* manufacturer information block */
39 char manufacturer[12];
40 char model[20];
41 u8 jedec_id[6];
42 u8 reserved1[10];
43
44 /* memory organization block */
45 __le32 byte_per_page;
46 __le16 spare_bytes_per_page;
47 u8 reserved2[6];
48 __le32 pages_per_block;
49 __le32 blocks_per_lun;
50 u8 lun_count;
51 u8 addr_cycles;
52 u8 bits_per_cell;
53 u8 programs_per_page;
54 u8 multi_plane_addr;
55 u8 multi_plane_op_attr;
56 u8 reserved3[38];
57
58 /* electrical parameter block */
59 __le16 async_sdr_speed_grade;
60 __le16 toggle_ddr_speed_grade;
61 __le16 sync_ddr_speed_grade;
62 u8 async_sdr_features;
63 u8 toggle_ddr_features;
64 u8 sync_ddr_features;
65 __le16 t_prog;
66 __le16 t_bers;
67 __le16 t_r;
68 __le16 t_r_multi_plane;
69 __le16 t_ccs;
70 __le16 io_pin_capacitance_typ;
71 __le16 input_pin_capacitance_typ;
72 __le16 clk_pin_capacitance_typ;
73 u8 driver_strength_support;
74 __le16 t_adl;
75 u8 reserved4[36];
76
77 /* ECC and endurance block */
78 u8 guaranteed_good_blocks;
79 __le16 guaranteed_block_endurance;
80 struct jedec_ecc_info ecc_info[4];
81 u8 reserved5[29];
82
83 /* reserved */
84 u8 reserved6[148];
85
86 /* vendor */
87 __le16 vendor_rev_num;
88 u8 reserved7[88];
89
90 /* CRC for Parameter Page */
91 __le16 crc;
92} __packed;
93
94#endif /* __LINUX_MTD_JEDEC_H */
95

source code of linux/include/linux/mtd/jedec.h