Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org>
0004  *           Steven J. Hill <sjhill@realitydiluted.com>
0005  *           Thomas Gleixner <tglx@linutronix.de>
0006  *
0007  * Contains all JEDEC related definitions
0008  */
0009 
0010 #ifndef __LINUX_MTD_JEDEC_H
0011 #define __LINUX_MTD_JEDEC_H
0012 
0013 struct jedec_ecc_info {
0014     u8 ecc_bits;
0015     u8 codeword_size;
0016     __le16 bb_per_lun;
0017     __le16 block_endurance;
0018     u8 reserved[2];
0019 } __packed;
0020 
0021 /* JEDEC features */
0022 #define JEDEC_FEATURE_16_BIT_BUS    (1 << 0)
0023 
0024 struct nand_jedec_params {
0025     /* rev info and features block */
0026     /* 'J' 'E' 'S' 'D'  */
0027     u8 sig[4];
0028     __le16 revision;
0029     __le16 features;
0030     u8 opt_cmd[3];
0031     __le16 sec_cmd;
0032     u8 num_of_param_pages;
0033     u8 reserved0[18];
0034 
0035     /* manufacturer information block */
0036     char manufacturer[12];
0037     char model[20];
0038     u8 jedec_id[6];
0039     u8 reserved1[10];
0040 
0041     /* memory organization block */
0042     __le32 byte_per_page;
0043     __le16 spare_bytes_per_page;
0044     u8 reserved2[6];
0045     __le32 pages_per_block;
0046     __le32 blocks_per_lun;
0047     u8 lun_count;
0048     u8 addr_cycles;
0049     u8 bits_per_cell;
0050     u8 programs_per_page;
0051     u8 multi_plane_addr;
0052     u8 multi_plane_op_attr;
0053     u8 reserved3[38];
0054 
0055     /* electrical parameter block */
0056     __le16 async_sdr_speed_grade;
0057     __le16 toggle_ddr_speed_grade;
0058     __le16 sync_ddr_speed_grade;
0059     u8 async_sdr_features;
0060     u8 toggle_ddr_features;
0061     u8 sync_ddr_features;
0062     __le16 t_prog;
0063     __le16 t_bers;
0064     __le16 t_r;
0065     __le16 t_r_multi_plane;
0066     __le16 t_ccs;
0067     __le16 io_pin_capacitance_typ;
0068     __le16 input_pin_capacitance_typ;
0069     __le16 clk_pin_capacitance_typ;
0070     u8 driver_strength_support;
0071     __le16 t_adl;
0072     u8 reserved4[36];
0073 
0074     /* ECC and endurance block */
0075     u8 guaranteed_good_blocks;
0076     __le16 guaranteed_block_endurance;
0077     struct jedec_ecc_info ecc_info[4];
0078     u8 reserved5[29];
0079 
0080     /* reserved */
0081     u8 reserved6[148];
0082 
0083     /* vendor */
0084     __le16 vendor_rev_num;
0085     u8 reserved7[88];
0086 
0087     /* CRC for Parameter Page */
0088     __le16 crc;
0089 } __packed;
0090 
0091 #endif /* __LINUX_MTD_JEDEC_H */