95 lines · c
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 definitions8 */9 10#ifndef __LINUX_MTD_JEDEC_H11#define __LINUX_MTD_JEDEC_H12 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