/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright © 2000-2010 David Woodhouse * Steven J. Hill * Thomas Gleixner * * 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 */