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 */ 92