hc
2024-11-01 7e970c18f85f99acc678d90128b6e01dce1bf273
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org>
 *             Steven J. Hill <sjhill@realitydiluted.com>
 *             Thomas Gleixner <tglx@linutronix.de>
 *
 * Contains all JEDEC related definitions
 */
 
#ifndef __LINUX_MTD_JEDEC_H
#define __LINUX_MTD_JEDEC_H
 
struct jedec_ecc_info {
   u8 ecc_bits;
   u8 codeword_size;
   __le16 bb_per_lun;
   __le16 block_endurance;
   u8 reserved[2];
} __packed;
 
/* JEDEC features */
#define JEDEC_FEATURE_16_BIT_BUS    (1 << 0)
 
struct nand_jedec_params {
   /* rev info and features block */
   /* 'J' 'E' 'S' 'D'  */
   u8 sig[4];
   __le16 revision;
   __le16 features;
   u8 opt_cmd[3];
   __le16 sec_cmd;
   u8 num_of_param_pages;
   u8 reserved0[18];
 
   /* manufacturer information block */
   char manufacturer[12];
   char model[20];
   u8 jedec_id[6];
   u8 reserved1[10];
 
   /* memory organization block */
   __le32 byte_per_page;
   __le16 spare_bytes_per_page;
   u8 reserved2[6];
   __le32 pages_per_block;
   __le32 blocks_per_lun;
   u8 lun_count;
   u8 addr_cycles;
   u8 bits_per_cell;
   u8 programs_per_page;
   u8 multi_plane_addr;
   u8 multi_plane_op_attr;
   u8 reserved3[38];
 
   /* electrical parameter block */
   __le16 async_sdr_speed_grade;
   __le16 toggle_ddr_speed_grade;
   __le16 sync_ddr_speed_grade;
   u8 async_sdr_features;
   u8 toggle_ddr_features;
   u8 sync_ddr_features;
   __le16 t_prog;
   __le16 t_bers;
   __le16 t_r;
   __le16 t_r_multi_plane;
   __le16 t_ccs;
   __le16 io_pin_capacitance_typ;
   __le16 input_pin_capacitance_typ;
   __le16 clk_pin_capacitance_typ;
   u8 driver_strength_support;
   __le16 t_adl;
   u8 reserved4[36];
 
   /* ECC and endurance block */
   u8 guaranteed_good_blocks;
   __le16 guaranteed_block_endurance;
   struct jedec_ecc_info ecc_info[4];
   u8 reserved5[29];
 
   /* reserved */
   u8 reserved6[148];
 
   /* vendor */
   __le16 vendor_rev_num;
   u8 reserved7[88];
 
   /* CRC for Parameter Page */
   __le16 crc;
} __packed;
 
#endif /* __LINUX_MTD_JEDEC_H */