diff options
| author | Huang Shijie <b32955@freescale.com> | 2014-02-21 00:39:37 -0500 |
|---|---|---|
| committer | Brian Norris <computersforpeace@gmail.com> | 2014-03-11 01:42:26 -0400 |
| commit | afbfff03d611de22b1ec7127ad56920e02936d5e (patch) | |
| tree | 919dc5e9e990ed0cb4108a52992fcb8b0f4db346 /include/linux | |
| parent | 91e165030deedc612c153dfeaba294d49632ade3 (diff) | |
mtd: nand: add the data structures for JEDEC parameter page
Create the nand_jedec_params{} and jedec_ecc_info{} according to
the JESD230A (Revision of JESD230, October 2012).
Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mtd/nand.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index c034dc4224cb..588f8a4a27af 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
| @@ -342,6 +342,81 @@ struct nand_onfi_vendor_micron { | |||
| 342 | u8 param_revision; | 342 | u8 param_revision; |
| 343 | } __packed; | 343 | } __packed; |
| 344 | 344 | ||
| 345 | struct jedec_ecc_info { | ||
| 346 | u8 ecc_bits; | ||
| 347 | u8 codeword_size; | ||
| 348 | __le16 bb_per_lun; | ||
| 349 | __le16 block_endurance; | ||
| 350 | u8 reserved[2]; | ||
| 351 | } __packed; | ||
| 352 | |||
| 353 | struct nand_jedec_params { | ||
| 354 | /* rev info and features block */ | ||
| 355 | /* 'J' 'E' 'S' 'D' */ | ||
| 356 | u8 sig[4]; | ||
| 357 | __le16 revision; | ||
| 358 | __le16 features; | ||
| 359 | u8 opt_cmd[3]; | ||
| 360 | __le16 sec_cmd; | ||
| 361 | u8 num_of_param_pages; | ||
| 362 | u8 reserved0[18]; | ||
| 363 | |||
| 364 | /* manufacturer information block */ | ||
| 365 | char manufacturer[12]; | ||
| 366 | char model[20]; | ||
| 367 | u8 jedec_id[6]; | ||
| 368 | u8 reserved1[10]; | ||
| 369 | |||
| 370 | /* memory organization block */ | ||
| 371 | __le32 byte_per_page; | ||
| 372 | __le16 spare_bytes_per_page; | ||
| 373 | u8 reserved2[6]; | ||
| 374 | __le32 pages_per_block; | ||
| 375 | __le32 blocks_per_lun; | ||
| 376 | u8 lun_count; | ||
| 377 | u8 addr_cycles; | ||
| 378 | u8 bits_per_cell; | ||
| 379 | u8 programs_per_page; | ||
| 380 | u8 multi_plane_addr; | ||
| 381 | u8 multi_plane_op_attr; | ||
| 382 | u8 reserved3[38]; | ||
| 383 | |||
| 384 | /* electrical parameter block */ | ||
| 385 | __le16 async_sdr_speed_grade; | ||
| 386 | __le16 toggle_ddr_speed_grade; | ||
| 387 | __le16 sync_ddr_speed_grade; | ||
| 388 | u8 async_sdr_features; | ||
| 389 | u8 toggle_ddr_features; | ||
| 390 | u8 sync_ddr_features; | ||
| 391 | __le16 t_prog; | ||
| 392 | __le16 t_bers; | ||
| 393 | __le16 t_r; | ||
| 394 | __le16 t_r_multi_plane; | ||
| 395 | __le16 t_ccs; | ||
| 396 | __le16 io_pin_capacitance_typ; | ||
| 397 | __le16 input_pin_capacitance_typ; | ||
| 398 | __le16 clk_pin_capacitance_typ; | ||
| 399 | u8 driver_strength_support; | ||
| 400 | __le16 t_ald; | ||
| 401 | u8 reserved4[36]; | ||
| 402 | |||
| 403 | /* ECC and endurance block */ | ||
| 404 | u8 guaranteed_good_blocks; | ||
| 405 | __le16 guaranteed_block_endurance; | ||
| 406 | struct jedec_ecc_info ecc_info[4]; | ||
| 407 | u8 reserved5[29]; | ||
| 408 | |||
| 409 | /* reserved */ | ||
| 410 | u8 reserved6[148]; | ||
| 411 | |||
| 412 | /* vendor */ | ||
| 413 | __le16 vendor_rev_num; | ||
| 414 | u8 reserved7[88]; | ||
| 415 | |||
| 416 | /* CRC for Parameter Page */ | ||
| 417 | __le16 crc; | ||
| 418 | } __packed; | ||
| 419 | |||
| 345 | /** | 420 | /** |
| 346 | * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices | 421 | * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices |
| 347 | * @lock: protection lock | 422 | * @lock: protection lock |
