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