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