linux/include/linux/mtd/jedec.h
<<
>>
Prefs
   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
  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
  24struct 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