diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mtd/nand.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 29656a3f9331..7666c42235c7 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
| @@ -228,6 +228,69 @@ typedef enum { | |||
| 228 | /* Keep gcc happy */ | 228 | /* Keep gcc happy */ |
| 229 | struct nand_chip; | 229 | struct nand_chip; |
| 230 | 230 | ||
| 231 | struct nand_onfi_params { | ||
| 232 | /* rev info and features block */ | ||
| 233 | u8 sig[4]; /* 'O' 'N' 'F' 'I' */ | ||
| 234 | __le16 revision; | ||
| 235 | __le16 features; | ||
| 236 | __le16 opt_cmd; | ||
| 237 | u8 reserved[22]; | ||
| 238 | |||
| 239 | /* manufacturer information block */ | ||
| 240 | char manufacturer[12]; | ||
| 241 | char model[20]; | ||
| 242 | u8 jedec_id; | ||
| 243 | __le16 date_code; | ||
| 244 | u8 reserved2[13]; | ||
| 245 | |||
| 246 | /* memory organization block */ | ||
| 247 | __le32 byte_per_page; | ||
| 248 | __le16 spare_bytes_per_page; | ||
| 249 | __le32 data_bytes_per_ppage; | ||
| 250 | __le16 spare_bytes_per_ppage; | ||
| 251 | __le32 pages_per_block; | ||
| 252 | __le32 blocks_per_lun; | ||
| 253 | u8 lun_count; | ||
| 254 | u8 addr_cycles; | ||
| 255 | u8 bits_per_cell; | ||
| 256 | __le16 bb_per_lun; | ||
| 257 | __le16 block_endurance; | ||
| 258 | u8 guaranteed_good_blocks; | ||
| 259 | __le16 guaranteed_block_endurance; | ||
| 260 | u8 programs_per_page; | ||
| 261 | u8 ppage_attr; | ||
| 262 | u8 ecc_bits; | ||
| 263 | u8 interleaved_bits; | ||
| 264 | u8 interleaved_ops; | ||
| 265 | u8 reserved3[13]; | ||
| 266 | |||
| 267 | /* electrical parameter block */ | ||
| 268 | u8 io_pin_capacitance_max; | ||
| 269 | __le16 async_timing_mode; | ||
| 270 | __le16 program_cache_timing_mode; | ||
| 271 | __le16 t_prog; | ||
| 272 | __le16 t_bers; | ||
| 273 | __le16 t_r; | ||
| 274 | __le16 t_ccs; | ||
| 275 | __le16 src_sync_timing_mode; | ||
| 276 | __le16 src_ssync_features; | ||
| 277 | __le16 clk_pin_capacitance_typ; | ||
| 278 | __le16 io_pin_capacitance_typ; | ||
| 279 | __le16 input_pin_capacitance_typ; | ||
| 280 | u8 input_pin_capacitance_max; | ||
| 281 | u8 driver_strenght_support; | ||
| 282 | __le16 t_int_r; | ||
| 283 | __le16 t_ald; | ||
| 284 | u8 reserved4[7]; | ||
| 285 | |||
| 286 | /* vendor */ | ||
| 287 | u8 reserved5[90]; | ||
| 288 | |||
| 289 | __le16 crc; | ||
| 290 | } __attribute__((packed)); | ||
| 291 | |||
| 292 | #define ONFI_CRC_BASE 0x4F4E | ||
| 293 | |||
| 231 | /** | 294 | /** |
| 232 | * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices | 295 | * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices |
| 233 | * @lock: protection lock | 296 | * @lock: protection lock |
| @@ -360,6 +423,8 @@ struct nand_buffers { | |||
| 360 | * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 | 423 | * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 |
| 361 | * @pagebuf: [INTERN] holds the pagenumber which is currently in data_buf | 424 | * @pagebuf: [INTERN] holds the pagenumber which is currently in data_buf |
| 362 | * @subpagesize: [INTERN] holds the subpagesize | 425 | * @subpagesize: [INTERN] holds the subpagesize |
| 426 | * @onfi_version: [INTERN] holds the chip ONFI version (BCD encoded), non 0 if ONFI supported | ||
| 427 | * @onfi_params: [INTERN] holds the ONFI page parameter when ONFI is supported, 0 otherwise | ||
| 363 | * @ecclayout: [REPLACEABLE] the default ecc placement scheme | 428 | * @ecclayout: [REPLACEABLE] the default ecc placement scheme |
| 364 | * @bbt: [INTERN] bad block table pointer | 429 | * @bbt: [INTERN] bad block table pointer |
| 365 | * @bbt_td: [REPLACEABLE] bad block table descriptor for flash lookup | 430 | * @bbt_td: [REPLACEABLE] bad block table descriptor for flash lookup |
| @@ -412,6 +477,9 @@ struct nand_chip { | |||
| 412 | int badblockpos; | 477 | int badblockpos; |
| 413 | int badblockbits; | 478 | int badblockbits; |
| 414 | 479 | ||
| 480 | int onfi_version; | ||
| 481 | struct nand_onfi_params onfi_params; | ||
| 482 | |||
| 415 | flstate_t state; | 483 | flstate_t state; |
| 416 | 484 | ||
| 417 | uint8_t *oob_poi; | 485 | uint8_t *oob_poi; |
