aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorHuang Shijie <b32955@freescale.com>2014-02-21 00:39:37 -0500
committerBrian Norris <computersforpeace@gmail.com>2014-03-11 01:42:26 -0400
commitafbfff03d611de22b1ec7127ad56920e02936d5e (patch)
tree919dc5e9e990ed0cb4108a52992fcb8b0f4db346 /include/linux
parent91e165030deedc612c153dfeaba294d49632ade3 (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.h75
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
345struct 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
353struct 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