11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/**************************************************************************** 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** This header was automatically generated from a Linux kernel header 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** of the same name, to make information necessary for userspace to 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** call into the kernel available to libc. It contains only constants, 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** structures, and macros generated from the original header, and thus, 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** contains no copyrightable information. 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 10654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** To edit the content of this header, modify the corresponding 11654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** source file (e.g. under external/kernel-headers/original/) then 12654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** run bionic/libc/kernel/tools/update_all.py 13654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** 14654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** Any manual change here will be lost the next time this script will 15654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** be run. You've been warned! 16654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng *** 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************/ 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef __LINUX_MTD_NAND_H 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __LINUX_MTD_NAND_H 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/wait.h> 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/spinlock.h> 23654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/mtd/mtd.h> 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct mtd_info; 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MAX_CHIPS 8 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MAX_OOBSIZE 64 28654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MAX_PAGESIZE 2048 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_NCE 0x01 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CLE 0x02 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_ALE 0x04 33654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CTRL_CLE (NAND_NCE | NAND_CLE) 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CTRL_ALE (NAND_NCE | NAND_ALE) 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CTRL_CHANGE 0x80 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_READ0 0 38654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_READ1 1 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_RNDOUT 5 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_PAGEPROG 0x10 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_READOOB 0x50 43654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_ERASE1 0x60 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS 0x70 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_MULTI 0x71 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_SEQIN 0x80 48654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_RNDIN 0x85 501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_READID 0x90 511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_ERASE2 0xd0 521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_RESET 0xff 53654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_READSTART 0x30 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_RNDOUTSTART 0xE0 561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_CACHEDPROG 0x15 571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_DEPLETE1 0x100 58654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_DEPLETE2 0x38 601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_MULTI 0x71 611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_ERROR 0x72 621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_ERROR0 0x73 63654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_ERROR1 0x74 651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_ERROR2 0x75 661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_ERROR3 0x76 671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_RESET 0x7f 68654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_STATUS_CLEAR 0xff 701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CMD_NONE -1 711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_STATUS_FAIL 0x01 721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_STATUS_FAIL_N1 0x02 73654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_STATUS_TRUE_READY 0x20 751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_STATUS_READY 0x40 761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_STATUS_WP 0x80 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef enum { 78654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project NAND_ECC_NONE, 801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project NAND_ECC_SOFT, 811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project NAND_ECC_HW, 821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project NAND_ECC_HW_SYNDROME, 83654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} nand_ecc_modes_t; 851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_ECC_READ 0 861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_ECC_WRITE 1 871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_ECC_READSYN 2 88654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_GET_DEVICE 0x80 901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_NO_AUTOINCR 0x00000001 911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BUSWIDTH_16 0x00000002 921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_NO_PADDING 0x00000004 93654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CACHEPRG 0x00000008 951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_COPYBACK 0x00000010 961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_IS_AND 0x00000020 971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_4PAGE_ARRAY 0x00000040 98654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define BBT_AUTO_REFRESH 0x00000080 1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_NO_READRDY 0x00000100 1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_SAMSUNG_LP_OPTIONS (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK) 1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR)) 103654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING)) 1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG)) 1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK)) 1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR) 108654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_USE_FLASH_BBT 0x00010000 1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_SKIP_BBTSCAN 0x00020000 1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_CONTROLLER_ALLOC 0x80000000 1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef enum { 113654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_READY, 1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_READING, 1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_WRITING, 1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_ERASING, 118654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_SYNCING, 1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_CACHEDPRG, 1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FL_PM_SUSPENDED, 1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} nand_state_t; 123654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_chip; 1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_hw_control { 1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project spinlock_t lock; 1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_chip *active; 128654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project wait_queue_head_t wq; 1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_ecc_ctrl { 1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nand_ecc_modes_t mode; 133654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int steps; 1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int size; 1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int bytes; 1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int total; 138654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int prepad; 1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int postpad; 1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_ecclayout *layout; 1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*hwctl)(struct mtd_info *mtd, int mode); 143654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*calculate)(struct mtd_info *mtd, 1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const uint8_t *dat, 1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *ecc_code); 1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*correct)(struct mtd_info *mtd, uint8_t *dat, 148654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *read_ecc, 1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *calc_ecc); 1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*read_page)(struct mtd_info *mtd, 1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_chip *chip, 153654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *buf); 1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*write_page)(struct mtd_info *mtd, 1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_chip *chip, 1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const uint8_t *buf); 158654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*read_oob)(struct mtd_info *mtd, 1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_chip *chip, 1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int page, 1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int sndcmd); 163654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*write_oob)(struct mtd_info *mtd, 1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_chip *chip, 1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int page); 1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 168654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_buffers { 1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t ecccalc[NAND_MAX_OOBSIZE]; 1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t ecccode[NAND_MAX_OOBSIZE]; 1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t oobwbuf[NAND_MAX_OOBSIZE]; 173654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t databuf[NAND_MAX_PAGESIZE]; 1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t oobrbuf[NAND_MAX_OOBSIZE]; 1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_chip { 178654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void __iomem *IO_ADDR_R; 1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void __iomem *IO_ADDR_W; 1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t (*read_byte)(struct mtd_info *mtd); 1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u16 (*read_word)(struct mtd_info *mtd); 183654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len); 1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len); 1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len); 1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*select_chip)(struct mtd_info *mtd, int chip); 188654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*block_bad)(struct mtd_info *mtd, loff_t ofs, int getchip); 1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*block_markbad)(struct mtd_info *mtd, loff_t ofs); 1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*cmd_ctrl)(struct mtd_info *mtd, int dat, 1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned int ctrl); 193654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*dev_ready)(struct mtd_info *mtd); 1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*cmdfunc)(struct mtd_info *mtd, unsigned command, int column, int page_addr); 1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*waitfunc)(struct mtd_info *mtd, struct nand_chip *this); 1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*erase_cmd)(struct mtd_info *mtd, int page); 198654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*scan_bbt)(struct mtd_info *mtd); 2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page); 2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int chip_delay; 2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned int options; 203654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int page_shift; 2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int phys_erase_shift; 2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int bbt_erase_shift; 2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int chip_shift; 208654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int numchips; 2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long chipsize; 2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int pagemask; 2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int pagebuf; 213654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int badblockpos; 2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nand_state_t state; 2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *oob_poi; 2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_hw_control *controller; 218654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_ecclayout *ecclayout; 2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_ecc_ctrl ecc; 2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_buffers buffers; 2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_hw_control hwcontrol; 223654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct mtd_oob_ops ops; 2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *bbt; 2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_bbt_descr *bbt_td; 2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_bbt_descr *bbt_md; 228654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_bbt_descr *badblock_pattern; 2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *priv; 2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_TOSHIBA 0x98 233654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_SAMSUNG 0xec 2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_FUJITSU 0x04 2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_NATIONAL 0x8f 2371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_RENESAS 0x07 238654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_STMICRO 0x20 2401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_MFR_HYNIX 0xad 2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_flash_dev { 2421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project char *name; 243654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int id; 2451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long pagesize; 2461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long chipsize; 2471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long erasesize; 248654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long options; 2501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 2511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_manufacturers { 2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int id; 253654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project char * name; 2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 2561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct nand_bbt_descr { 2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int options; 258654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int pages[NAND_MAX_CHIPS]; 2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int offs; 2611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int veroffs; 2621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t version[NAND_MAX_CHIPS]; 263654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int len; 2651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int maxblocks; 2661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int reserved_block_code; 2671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint8_t *pattern; 268654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 2701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_NRBITS_MSK 0x0000000F 2711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_1BIT 0x00000001 2721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_2BIT 0x00000002 273654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_4BIT 0x00000004 2751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_8BIT 0x00000008 2761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_LASTBLOCK 0x00000010 2771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_ABSPAGE 0x00000020 278654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SEARCH 0x00000040 2801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_PERCHIP 0x00000080 2811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_VERSION 0x00000100 2821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_CREATE 0x00000200 283654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SCANALLPAGES 0x00000400 2851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SCANEMPTY 0x00000800 2861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_WRITE 0x00001000 2871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SAVECONTENT 0x00002000 288654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SCAN2NDPAGE 0x00004000 2901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_BBT_SCAN_MAXBLOCKS 4 2911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_SMALL_BADBLOCK_POS 5 2921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NAND_LARGE_BADBLOCK_POS 0 293654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct platform_nand_chip { 2951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int nr_chips; 2961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int chip_offset; 2971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int nr_partitions; 298654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 2991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct mtd_partition *partitions; 3001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct nand_ecclayout *ecclayout; 3011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int chip_delay; 3021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned int options; 303654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 3041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *priv; 3051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 3061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct platform_nand_ctrl { 3071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*hwcontrol)(struct mtd_info *mtd, int cmd); 308654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 3091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int (*dev_ready)(struct mtd_info *mtd); 3101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*select_chip)(struct mtd_info *mtd, int chip); 3111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *priv; 3121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 313654325de026a2ca5b76b8b40e576c959d8211fdcBen Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 3141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 315