blob: 90ffcfcd38bd2f5dc239726c789bbba85725643b [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
Ben Cheng654325d2012-03-07 21:13:49 -080010 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080017 ****************************************************************************
18 ****************************************************************************/
19#ifndef __MTD_MTD_H__
20#define __MTD_MTD_H__
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080021#error This is a kernel header. Perhaps include mtd-user.h instead?
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080022#include <linux/types.h>
Ben Cheng654325d2012-03-07 21:13:49 -080023/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080024#include <linux/module.h>
25#include <linux/uio.h>
26#include <linux/notifier.h>
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080027#include <linux/mtd/compatmac.h>
Ben Cheng654325d2012-03-07 21:13:49 -080028/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080029#include <mtd/mtd-abi.h>
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080030#define MTD_CHAR_MAJOR 90
31#define MTD_BLOCK_MAJOR 31
32#define MAX_MTD_DEVICES 16
Ben Cheng654325d2012-03-07 21:13:49 -080033/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080034#define MTD_ERASE_PENDING 0x01
35#define MTD_ERASING 0x02
36#define MTD_ERASE_SUSPEND 0x04
37#define MTD_ERASE_DONE 0x08
Ben Cheng654325d2012-03-07 21:13:49 -080038/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080039#define MTD_ERASE_FAILED 0x10
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080040struct erase_info {
41 struct mtd_info *mtd;
42 u_int32_t addr;
Ben Cheng654325d2012-03-07 21:13:49 -080043/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080044 u_int32_t len;
45 u_int32_t fail_addr;
46 u_long time;
47 u_long retries;
Ben Cheng654325d2012-03-07 21:13:49 -080048/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080049 u_int dev;
50 u_int cell;
51 void (*callback) (struct erase_info *self);
52 u_long priv;
Ben Cheng654325d2012-03-07 21:13:49 -080053/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080054 u_char state;
55 struct erase_info *next;
56};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080057struct mtd_erase_region_info {
Ben Cheng654325d2012-03-07 21:13:49 -080058/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080059 u_int32_t offset;
60 u_int32_t erasesize;
61 u_int32_t numblocks;
62};
Ben Cheng654325d2012-03-07 21:13:49 -080063/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080064typedef enum {
65 MTD_OOB_PLACE,
66 MTD_OOB_AUTO,
67 MTD_OOB_RAW,
Ben Cheng654325d2012-03-07 21:13:49 -080068/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080069} mtd_oob_mode_t;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080070struct mtd_oob_ops {
71 mtd_oob_mode_t mode;
72 size_t len;
Ben Cheng654325d2012-03-07 21:13:49 -080073/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080074 size_t retlen;
75 size_t ooblen;
76 uint32_t ooboffs;
77 uint8_t *datbuf;
Ben Cheng654325d2012-03-07 21:13:49 -080078/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080079 uint8_t *oobbuf;
80};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080081struct mtd_info {
82 u_char type;
Ben Cheng654325d2012-03-07 21:13:49 -080083/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080084 u_int32_t flags;
85 u_int32_t size;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080086 u_int32_t erasesize;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080087 u_int32_t writesize;
Ben Cheng654325d2012-03-07 21:13:49 -080088/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080089 u_int32_t oobsize;
90 u_int32_t ecctype;
91 u_int32_t eccsize;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080092#define MTD_PROGREGION_CTRLMODE_VALID(mtd) (mtd)->oobsize
Ben Cheng654325d2012-03-07 21:13:49 -080093/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080094#define MTD_PROGREGION_CTRLMODE_INVALID(mtd) (mtd)->ecctype
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080095 char *name;
96 int index;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080097 struct nand_ecclayout *ecclayout;
Ben Cheng654325d2012-03-07 21:13:49 -080098/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080099 int numeraseregions;
100 struct mtd_erase_region_info *eraseregions;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800101 u_int32_t bank_size;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800102 int (*erase) (struct mtd_info *mtd, struct erase_info *instr);
Ben Cheng654325d2012-03-07 21:13:49 -0800103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800104 int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800105 void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800106 int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
107 int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf);
Ben Cheng654325d2012-03-07 21:13:49 -0800108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800109 int (*read_oob) (struct mtd_info *mtd, loff_t from,
110 struct mtd_oob_ops *ops);
111 int (*write_oob) (struct mtd_info *mtd, loff_t to,
112 struct mtd_oob_ops *ops);
Ben Cheng654325d2012-03-07 21:13:49 -0800113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800114 int (*get_fact_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
115 int (*read_fact_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
116 int (*get_user_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
117 int (*read_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
Ben Cheng654325d2012-03-07 21:13:49 -0800118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800119 int (*write_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
120 int (*lock_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800121 int (*writev) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to, size_t *retlen);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800122 void (*sync) (struct mtd_info *mtd);
Ben Cheng654325d2012-03-07 21:13:49 -0800123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800124 int (*lock) (struct mtd_info *mtd, loff_t ofs, size_t len);
125 int (*unlock) (struct mtd_info *mtd, loff_t ofs, size_t len);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800126 int (*suspend) (struct mtd_info *mtd);
127 void (*resume) (struct mtd_info *mtd);
Ben Cheng654325d2012-03-07 21:13:49 -0800128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800129 int (*block_isbad) (struct mtd_info *mtd, loff_t ofs);
130 int (*block_markbad) (struct mtd_info *mtd, loff_t ofs);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800131 struct notifier_block reboot_notifier;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800132 struct mtd_ecc_stats ecc_stats;
Ben Cheng654325d2012-03-07 21:13:49 -0800133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800134 void *priv;
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800135 struct module *owner;
136 int usecount;
137};
Ben Cheng654325d2012-03-07 21:13:49 -0800138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800139struct mtd_notifier {
140 void (*add)(struct mtd_info *mtd);
141 void (*remove)(struct mtd_info *mtd);
142 struct list_head list;
Ben Cheng654325d2012-03-07 21:13:49 -0800143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800144};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800145#define MTD_DEBUG_LEVEL0 (0)
146#define MTD_DEBUG_LEVEL1 (1)
147#define MTD_DEBUG_LEVEL2 (2)
Ben Cheng654325d2012-03-07 21:13:49 -0800148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800149#define MTD_DEBUG_LEVEL3 (3)
150#define DEBUG(n, args...) do { } while(0)
151#endif