jedec.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright © 2000-2010 David Woodhouse <[email protected]>
  4. * Steven J. Hill <[email protected]>
  5. * Thomas Gleixner <[email protected]>
  6. *
  7. * Contains all JEDEC related definitions
  8. */
  9. #ifndef __LINUX_MTD_JEDEC_H
  10. #define __LINUX_MTD_JEDEC_H
  11. struct jedec_ecc_info {
  12. u8 ecc_bits;
  13. u8 codeword_size;
  14. __le16 bb_per_lun;
  15. __le16 block_endurance;
  16. u8 reserved[2];
  17. } __packed;
  18. /* JEDEC features */
  19. #define JEDEC_FEATURE_16_BIT_BUS (1 << 0)
  20. struct nand_jedec_params {
  21. /* rev info and features block */
  22. /* 'J' 'E' 'S' 'D' */
  23. u8 sig[4];
  24. __le16 revision;
  25. __le16 features;
  26. u8 opt_cmd[3];
  27. __le16 sec_cmd;
  28. u8 num_of_param_pages;
  29. u8 reserved0[18];
  30. /* manufacturer information block */
  31. char manufacturer[12];
  32. char model[20];
  33. u8 jedec_id[6];
  34. u8 reserved1[10];
  35. /* memory organization block */
  36. __le32 byte_per_page;
  37. __le16 spare_bytes_per_page;
  38. u8 reserved2[6];
  39. __le32 pages_per_block;
  40. __le32 blocks_per_lun;
  41. u8 lun_count;
  42. u8 addr_cycles;
  43. u8 bits_per_cell;
  44. u8 programs_per_page;
  45. u8 multi_plane_addr;
  46. u8 multi_plane_op_attr;
  47. u8 reserved3[38];
  48. /* electrical parameter block */
  49. __le16 async_sdr_speed_grade;
  50. __le16 toggle_ddr_speed_grade;
  51. __le16 sync_ddr_speed_grade;
  52. u8 async_sdr_features;
  53. u8 toggle_ddr_features;
  54. u8 sync_ddr_features;
  55. __le16 t_prog;
  56. __le16 t_bers;
  57. __le16 t_r;
  58. __le16 t_r_multi_plane;
  59. __le16 t_ccs;
  60. __le16 io_pin_capacitance_typ;
  61. __le16 input_pin_capacitance_typ;
  62. __le16 clk_pin_capacitance_typ;
  63. u8 driver_strength_support;
  64. __le16 t_adl;
  65. u8 reserved4[36];
  66. /* ECC and endurance block */
  67. u8 guaranteed_good_blocks;
  68. __le16 guaranteed_block_endurance;
  69. struct jedec_ecc_info ecc_info[4];
  70. u8 reserved5[29];
  71. /* reserved */
  72. u8 reserved6[148];
  73. /* vendor */
  74. __le16 vendor_rev_num;
  75. u8 reserved7[88];
  76. /* CRC for Parameter Page */
  77. __le16 crc;
  78. } __packed;
  79. #endif /* __LINUX_MTD_JEDEC_H */