summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/include/linux/mtd
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/include/linux/mtd')
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/bbm.h176
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/blktrans.h94
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/cfi.h564
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/cfi_endian.h53
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/concat.h34
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/doc2000.h206
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/flashchip.h112
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/fsmc.h176
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/ftl.h74
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/gen_probe.h37
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/gpmi-nand.h68
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/inftl.h63
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/latch-addr-flash.h29
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/map.h465
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/mtd.h429
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/mtdram.h8
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/nand-gpio.h19
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/nand.h828
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/nand_bch.h72
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/nand_ecc.h42
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/ndfc.h67
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/nftl.h72
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/onenand.h242
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/onenand_regs.h223
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/partitions.h87
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/pfow.h159
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/physmap.h36
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/pismo.h17
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/plat-ram.h34
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/qinfo.h91
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/sh_flctl.h171
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/sharpsl.h20
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/spear_smi.h65
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/super.h29
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/ubi.h265
-rw-r--r--ANDROID_3.4.5/include/linux/mtd/xip.h99
36 files changed, 0 insertions, 5226 deletions
diff --git a/ANDROID_3.4.5/include/linux/mtd/bbm.h b/ANDROID_3.4.5/include/linux/mtd/bbm.h
deleted file mode 100644
index 5bc50e08..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/bbm.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * linux/include/linux/mtd/bbm.h
- *
- * NAND family Bad Block Management (BBM) header file
- * - Bad Block Table (BBT) implementation
- *
- * Copyright © 2005 Samsung Electronics
- * Kyungmin Park <kyungmin.park@samsung.com>
- *
- * Copyright © 2000-2005
- * Thomas Gleixner <tglx@linuxtronix.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-#ifndef __LINUX_MTD_BBM_H
-#define __LINUX_MTD_BBM_H
-
-/* The maximum number of NAND chips in an array */
-#define NAND_MAX_CHIPS 8
-
-/**
- * struct nand_bbt_descr - bad block table descriptor
- * @options: options for this descriptor
- * @pages: the page(s) where we find the bbt, used with option BBT_ABSPAGE
- * when bbt is searched, then we store the found bbts pages here.
- * Its an array and supports up to 8 chips now
- * @offs: offset of the pattern in the oob area of the page
- * @veroffs: offset of the bbt version counter in the oob are of the page
- * @version: version read from the bbt page during scan
- * @len: length of the pattern, if 0 no pattern check is performed
- * @maxblocks: maximum number of blocks to search for a bbt. This number of
- * blocks is reserved at the end of the device where the tables are
- * written.
- * @reserved_block_code: if non-0, this pattern denotes a reserved (rather than
- * bad) block in the stored bbt
- * @pattern: pattern to identify bad block table or factory marked good /
- * bad blocks, can be NULL, if len = 0
- *
- * Descriptor for the bad block table marker and the descriptor for the
- * pattern which identifies good and bad blocks. The assumption is made
- * that the pattern and the version count are always located in the oob area
- * of the first block.
- */
-struct nand_bbt_descr {
- int options;
- int pages[NAND_MAX_CHIPS];
- int offs;
- int veroffs;
- uint8_t version[NAND_MAX_CHIPS];
- int len;
- int maxblocks;
- int reserved_block_code;
- uint8_t *pattern;
- int page_offset[2]; /* used to record bad block signature in which pages.*/
-};
-
-/* Options for the bad block table descriptors */
-
-/* The number of bits used per block in the bbt on the device */
-#define NAND_BBT_NRBITS_MSK 0x0000000F
-#define NAND_BBT_1BIT 0x00000001
-#define NAND_BBT_2BIT 0x00000002
-#define NAND_BBT_4BIT 0x00000004
-#define NAND_BBT_8BIT 0x00000008
-/* The bad block table is in the last good block of the device */
-#define NAND_BBT_LASTBLOCK 0x00000010
-/* The bbt is at the given page, else we must scan for the bbt */
-#define NAND_BBT_ABSPAGE 0x00000020
-/* The bbt is at the given page, else we must scan for the bbt */
-#define NAND_BBT_SEARCH 0x00000040
-/* bbt is stored per chip on multichip devices */
-#define NAND_BBT_PERCHIP 0x00000080
-/* bbt has a version counter at offset veroffs */
-#define NAND_BBT_VERSION 0x00000100
-/* Create a bbt if none exists */
-#define NAND_BBT_CREATE 0x00000200
-/*
- * Create an empty BBT with no vendor information. Vendor's information may be
- * unavailable, for example, if the NAND controller has a different data and OOB
- * layout or if this information is already purged. Must be used in conjunction
- * with NAND_BBT_CREATE.
- */
-#define NAND_BBT_CREATE_EMPTY 0x00000400
-/* Search good / bad pattern through all pages of a block */
-#define NAND_BBT_SCANALLPAGES 0x00000800
-/* Scan block empty during good / bad block scan */
-#define NAND_BBT_SCANEMPTY 0x00001000
-/* Write bbt if neccecary */
-#define NAND_BBT_WRITE 0x00002000
-/* Read and write back block contents when writing bbt */
-#define NAND_BBT_SAVECONTENT 0x00004000
-/* Search good / bad pattern on the first and the second page */
-#define NAND_BBT_SCAN2NDPAGE 0x00008000
-/* Search good / bad pattern on the last page of the eraseblock */
-#define NAND_BBT_SCANLASTPAGE 0x00010000
-/*
- * Use a flash based bad block table. By default, OOB identifier is saved in
- * OOB area. This option is passed to the default bad block table function.
- */
-#define NAND_BBT_USE_FLASH 0x00020000
-/* Do not store flash based bad block table in OOB area; store it in-band */
-#define NAND_BBT_NO_OOB 0x00040000
-/*
- * Do not write new bad block markers to OOB; useful, e.g., when ECC covers
- * entire spare area. Must be used with NAND_BBT_USE_FLASH.
- */
-#define NAND_BBT_NO_OOB_BBM 0x00080000
-
-/*
- * Flag set by nand_create_default_bbt_descr(), marking that the nand_bbt_descr
- * was allocated dynamicaly and must be freed in nand_release(). Has no meaning
- * in nand_chip.bbt_options.
- */
-#define NAND_BBT_DYNAMICSTRUCT 0x80000000
-
-/* The maximum number of blocks to scan for a bbt */
-#define NAND_BBT_SCAN_MAXBLOCKS 4
-
-/*
- * Constants for oob configuration
- */
-#define NAND_SMALL_BADBLOCK_POS 5
-#define NAND_LARGE_BADBLOCK_POS 0
-#define ONENAND_BADBLOCK_POS 0
-
-/*
- * Bad block scanning errors
- */
-#define ONENAND_BBT_READ_ERROR 1
-#define ONENAND_BBT_READ_ECC_ERROR 2
-#define ONENAND_BBT_READ_FATAL_ERROR 4
-
-/**
- * struct bbm_info - [GENERIC] Bad Block Table data structure
- * @bbt_erase_shift: [INTERN] number of address bits in a bbt entry
- * @badblockpos: [INTERN] position of the bad block marker in the oob area
- * @options: options for this descriptor
- * @bbt: [INTERN] bad block table pointer
- * @isbad_bbt: function to determine if a block is bad
- * @badblock_pattern: [REPLACEABLE] bad block scan pattern used for
- * initial bad block scan
- * @priv: [OPTIONAL] pointer to private bbm date
- */
-struct bbm_info {
- int bbt_erase_shift;
- int badblockpos;
- int options;
-
- uint8_t *bbt;
-
- int (*isbad_bbt)(struct mtd_info *mtd, loff_t ofs, int allowbbt);
-
- /* TODO Add more NAND specific fileds */
- struct nand_bbt_descr *badblock_pattern;
-
- void *priv;
-};
-
-/* OneNAND BBT interface */
-extern int onenand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd);
-extern int onenand_default_bbt(struct mtd_info *mtd);
-
-#endif /* __LINUX_MTD_BBM_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/blktrans.h b/ANDROID_3.4.5/include/linux/mtd/blktrans.h
deleted file mode 100644
index ed270bd2..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/blktrans.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright © 2003-2010 David Woodhouse <dwmw2@infradead.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_TRANS_H__
-#define __MTD_TRANS_H__
-
-#include <linux/mutex.h>
-#include <linux/kref.h>
-#include <linux/sysfs.h>
-
-struct hd_geometry;
-struct mtd_info;
-struct mtd_blktrans_ops;
-struct file;
-struct inode;
-
-struct mtd_blktrans_dev {
- struct mtd_blktrans_ops *tr;
- struct list_head list;
- struct mtd_info *mtd;
- struct mutex lock;
- int devnum;
- bool bg_stop;
- unsigned long size;
- int readonly;
- int open;
- struct kref ref;
- struct gendisk *disk;
- struct attribute_group *disk_attributes;
- struct task_struct *thread;
- struct request_queue *rq;
- spinlock_t queue_lock;
- void *priv;
- fmode_t file_mode;
-};
-
-struct mtd_blktrans_ops {
- char *name;
- int major;
- int part_bits;
- int blksize;
- int blkshift;
-
- /* Access functions */
- int (*readsect)(struct mtd_blktrans_dev *dev,
- unsigned long block, char *buffer);
- int (*writesect)(struct mtd_blktrans_dev *dev,
- unsigned long block, char *buffer);
- int (*discard)(struct mtd_blktrans_dev *dev,
- unsigned long block, unsigned nr_blocks);
- void (*background)(struct mtd_blktrans_dev *dev);
-
- /* Block layer ioctls */
- int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
- int (*flush)(struct mtd_blktrans_dev *dev);
-
- /* Called with mtd_table_mutex held; no race with add/remove */
- int (*open)(struct mtd_blktrans_dev *dev);
- int (*release)(struct mtd_blktrans_dev *dev);
-
- /* Called on {de,}registration and on subsequent addition/removal
- of devices, with mtd_table_mutex held. */
- void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
- void (*remove_dev)(struct mtd_blktrans_dev *dev);
-
- struct list_head devs;
- struct list_head list;
- struct module *owner;
-};
-
-extern int register_mtd_blktrans(struct mtd_blktrans_ops *tr);
-extern int deregister_mtd_blktrans(struct mtd_blktrans_ops *tr);
-extern int add_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
-extern int del_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
-extern int mtd_blktrans_cease_background(struct mtd_blktrans_dev *dev);
-
-
-#endif /* __MTD_TRANS_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/cfi.h b/ANDROID_3.4.5/include/linux/mtd/cfi.h
deleted file mode 100644
index 37ef6b19..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/cfi.h
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org> et al.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_CFI_H__
-#define __MTD_CFI_H__
-
-#include <linux/delay.h>
-#include <linux/types.h>
-#include <linux/bug.h>
-#include <linux/interrupt.h>
-#include <linux/mtd/flashchip.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/cfi_endian.h>
-#include <linux/mtd/xip.h>
-
-#ifdef CONFIG_MTD_CFI_I1
-#define cfi_interleave(cfi) 1
-#define cfi_interleave_is_1(cfi) (cfi_interleave(cfi) == 1)
-#else
-#define cfi_interleave_is_1(cfi) (0)
-#endif
-
-#ifdef CONFIG_MTD_CFI_I2
-# ifdef cfi_interleave
-# undef cfi_interleave
-# define cfi_interleave(cfi) ((cfi)->interleave)
-# else
-# define cfi_interleave(cfi) 2
-# endif
-#define cfi_interleave_is_2(cfi) (cfi_interleave(cfi) == 2)
-#else
-#define cfi_interleave_is_2(cfi) (0)
-#endif
-
-#ifdef CONFIG_MTD_CFI_I4
-# ifdef cfi_interleave
-# undef cfi_interleave
-# define cfi_interleave(cfi) ((cfi)->interleave)
-# else
-# define cfi_interleave(cfi) 4
-# endif
-#define cfi_interleave_is_4(cfi) (cfi_interleave(cfi) == 4)
-#else
-#define cfi_interleave_is_4(cfi) (0)
-#endif
-
-#ifdef CONFIG_MTD_CFI_I8
-# ifdef cfi_interleave
-# undef cfi_interleave
-# define cfi_interleave(cfi) ((cfi)->interleave)
-# else
-# define cfi_interleave(cfi) 8
-# endif
-#define cfi_interleave_is_8(cfi) (cfi_interleave(cfi) == 8)
-#else
-#define cfi_interleave_is_8(cfi) (0)
-#endif
-
-#ifndef cfi_interleave
-#warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work.
-static inline int cfi_interleave(void *cfi)
-{
- BUG();
- return 0;
-}
-#endif
-
-static inline int cfi_interleave_supported(int i)
-{
- switch (i) {
-#ifdef CONFIG_MTD_CFI_I1
- case 1:
-#endif
-#ifdef CONFIG_MTD_CFI_I2
- case 2:
-#endif
-#ifdef CONFIG_MTD_CFI_I4
- case 4:
-#endif
-#ifdef CONFIG_MTD_CFI_I8
- case 8:
-#endif
- return 1;
-
- default:
- return 0;
- }
-}
-
-
-/* NB: these values must represents the number of bytes needed to meet the
- * device type (x8, x16, x32). Eg. a 32 bit device is 4 x 8 bytes.
- * These numbers are used in calculations.
- */
-#define CFI_DEVICETYPE_X8 (8 / 8)
-#define CFI_DEVICETYPE_X16 (16 / 8)
-#define CFI_DEVICETYPE_X32 (32 / 8)
-#define CFI_DEVICETYPE_X64 (64 / 8)
-
-
-/* Device Interface Code Assignments from the "Common Flash Memory Interface
- * Publication 100" dated December 1, 2001.
- */
-#define CFI_INTERFACE_X8_ASYNC 0x0000
-#define CFI_INTERFACE_X16_ASYNC 0x0001
-#define CFI_INTERFACE_X8_BY_X16_ASYNC 0x0002
-#define CFI_INTERFACE_X32_ASYNC 0x0003
-#define CFI_INTERFACE_X16_BY_X32_ASYNC 0x0005
-#define CFI_INTERFACE_NOT_ALLOWED 0xffff
-
-
-/* NB: We keep these structures in memory in HOST byteorder, except
- * where individually noted.
- */
-
-/* Basic Query Structure */
-struct cfi_ident {
- uint8_t qry[3];
- uint16_t P_ID;
- uint16_t P_ADR;
- uint16_t A_ID;
- uint16_t A_ADR;
- uint8_t VccMin;
- uint8_t VccMax;
- uint8_t VppMin;
- uint8_t VppMax;
- uint8_t WordWriteTimeoutTyp;
- uint8_t BufWriteTimeoutTyp;
- uint8_t BlockEraseTimeoutTyp;
- uint8_t ChipEraseTimeoutTyp;
- uint8_t WordWriteTimeoutMax;
- uint8_t BufWriteTimeoutMax;
- uint8_t BlockEraseTimeoutMax;
- uint8_t ChipEraseTimeoutMax;
- uint8_t DevSize;
- uint16_t InterfaceDesc;
- uint16_t MaxBufWriteSize;
- uint8_t NumEraseRegions;
- uint32_t EraseRegionInfo[0]; /* Not host ordered */
-} __attribute__((packed));
-
-/* Extended Query Structure for both PRI and ALT */
-
-struct cfi_extquery {
- uint8_t pri[3];
- uint8_t MajorVersion;
- uint8_t MinorVersion;
-} __attribute__((packed));
-
-/* Vendor-Specific PRI for Intel/Sharp Extended Command Set (0x0001) */
-
-struct cfi_pri_intelext {
- uint8_t pri[3];
- uint8_t MajorVersion;
- uint8_t MinorVersion;
- uint32_t FeatureSupport; /* if bit 31 is set then an additional uint32_t feature
- block follows - FIXME - not currently supported */
- uint8_t SuspendCmdSupport;
- uint16_t BlkStatusRegMask;
- uint8_t VccOptimal;
- uint8_t VppOptimal;
- uint8_t NumProtectionFields;
- uint16_t ProtRegAddr;
- uint8_t FactProtRegSize;
- uint8_t UserProtRegSize;
- uint8_t extra[0];
-} __attribute__((packed));
-
-struct cfi_intelext_otpinfo {
- uint32_t ProtRegAddr;
- uint16_t FactGroups;
- uint8_t FactProtRegSize;
- uint16_t UserGroups;
- uint8_t UserProtRegSize;
-} __attribute__((packed));
-
-struct cfi_intelext_blockinfo {
- uint16_t NumIdentBlocks;
- uint16_t BlockSize;
- uint16_t MinBlockEraseCycles;
- uint8_t BitsPerCell;
- uint8_t BlockCap;
-} __attribute__((packed));
-
-struct cfi_intelext_regioninfo {
- uint16_t NumIdentPartitions;
- uint8_t NumOpAllowed;
- uint8_t NumOpAllowedSimProgMode;
- uint8_t NumOpAllowedSimEraMode;
- uint8_t NumBlockTypes;
- struct cfi_intelext_blockinfo BlockTypes[1];
-} __attribute__((packed));
-
-struct cfi_intelext_programming_regioninfo {
- uint8_t ProgRegShift;
- uint8_t Reserved1;
- uint8_t ControlValid;
- uint8_t Reserved2;
- uint8_t ControlInvalid;
- uint8_t Reserved3;
-} __attribute__((packed));
-
-/* Vendor-Specific PRI for AMD/Fujitsu Extended Command Set (0x0002) */
-
-struct cfi_pri_amdstd {
- uint8_t pri[3];
- uint8_t MajorVersion;
- uint8_t MinorVersion;
- uint8_t SiliconRevision; /* bits 1-0: Address Sensitive Unlock */
- uint8_t EraseSuspend;
- uint8_t BlkProt;
- uint8_t TmpBlkUnprotect;
- uint8_t BlkProtUnprot;
- uint8_t SimultaneousOps;
- uint8_t BurstMode;
- uint8_t PageMode;
- uint8_t VppMin;
- uint8_t VppMax;
- uint8_t TopBottom;
-} __attribute__((packed));
-
-/* Vendor-Specific PRI for Atmel chips (command set 0x0002) */
-
-struct cfi_pri_atmel {
- uint8_t pri[3];
- uint8_t MajorVersion;
- uint8_t MinorVersion;
- uint8_t Features;
- uint8_t BottomBoot;
- uint8_t BurstMode;
- uint8_t PageMode;
-} __attribute__((packed));
-
-struct cfi_pri_query {
- uint8_t NumFields;
- uint32_t ProtField[1]; /* Not host ordered */
-} __attribute__((packed));
-
-struct cfi_bri_query {
- uint8_t PageModeReadCap;
- uint8_t NumFields;
- uint32_t ConfField[1]; /* Not host ordered */
-} __attribute__((packed));
-
-#define P_ID_NONE 0x0000
-#define P_ID_INTEL_EXT 0x0001
-#define P_ID_AMD_STD 0x0002
-#define P_ID_INTEL_STD 0x0003
-#define P_ID_AMD_EXT 0x0004
-#define P_ID_WINBOND 0x0006
-#define P_ID_ST_ADV 0x0020
-#define P_ID_MITSUBISHI_STD 0x0100
-#define P_ID_MITSUBISHI_EXT 0x0101
-#define P_ID_SST_PAGE 0x0102
-#define P_ID_SST_OLD 0x0701
-#define P_ID_INTEL_PERFORMANCE 0x0200
-#define P_ID_INTEL_DATA 0x0210
-#define P_ID_RESERVED 0xffff
-
-
-#define CFI_MODE_CFI 1
-#define CFI_MODE_JEDEC 0
-
-struct cfi_private {
- uint16_t cmdset;
- void *cmdset_priv;
- int interleave;
- int device_type;
- int cfi_mode; /* Are we a JEDEC device pretending to be CFI? */
- int addr_unlock1;
- int addr_unlock2;
- struct mtd_info *(*cmdset_setup)(struct map_info *);
- struct cfi_ident *cfiq; /* For now only one. We insist that all devs
- must be of the same type. */
- int mfr, id;
- int numchips;
- map_word sector_erase_cmd;
- unsigned long chipshift; /* Because they're of the same type */
- const char *im_name; /* inter_module name for cmdset_setup */
- struct flchip chips[0]; /* per-chip data structure for each chip */
-};
-
-/*
- * Returns the command address according to the given geometry.
- */
-static inline uint32_t cfi_build_cmd_addr(uint32_t cmd_ofs,
- struct map_info *map, struct cfi_private *cfi)
-{
- unsigned bankwidth = map_bankwidth(map);
- unsigned interleave = cfi_interleave(cfi);
- unsigned type = cfi->device_type;
- uint32_t addr;
-
- addr = (cmd_ofs * type) * interleave;
-
- /* Modify the unlock address if we are in compatibility mode.
- * For 16bit devices on 8 bit busses
- * and 32bit devices on 16 bit busses
- * set the low bit of the alternating bit sequence of the address.
- */
- if (((type * interleave) > bankwidth) && ((cmd_ofs & 0xff) == 0xaa))
- addr |= (type >> 1)*interleave;
-
- return addr;
-}
-
-/*
- * Transforms the CFI command for the given geometry (bus width & interleave).
- * It looks too long to be inline, but in the common case it should almost all
- * get optimised away.
- */
-static inline map_word cfi_build_cmd(u_long cmd, struct map_info *map, struct cfi_private *cfi)
-{
- map_word val = { {0} };
- int wordwidth, words_per_bus, chip_mode, chips_per_word;
- unsigned long onecmd;
- int i;
-
- /* We do it this way to give the compiler a fighting chance
- of optimising away all the crap for 'bankwidth' larger than
- an unsigned long, in the common case where that support is
- disabled */
- if (map_bankwidth_is_large(map)) {
- wordwidth = sizeof(unsigned long);
- words_per_bus = (map_bankwidth(map)) / wordwidth; // i.e. normally 1
- } else {
- wordwidth = map_bankwidth(map);
- words_per_bus = 1;
- }
-
- chip_mode = map_bankwidth(map) / cfi_interleave(cfi);
- chips_per_word = wordwidth * cfi_interleave(cfi) / map_bankwidth(map);
-
- /* First, determine what the bit-pattern should be for a single
- device, according to chip mode and endianness... */
- switch (chip_mode) {
- default: BUG();
- case 1:
- onecmd = cmd;
- break;
- case 2:
- onecmd = cpu_to_cfi16(map, cmd);
- break;
- case 4:
- onecmd = cpu_to_cfi32(map, cmd);
- break;
- }
-
- /* Now replicate it across the size of an unsigned long, or
- just to the bus width as appropriate */
- switch (chips_per_word) {
- default: BUG();
-#if BITS_PER_LONG >= 64
- case 8:
- onecmd |= (onecmd << (chip_mode * 32));
-#endif
- case 4:
- onecmd |= (onecmd << (chip_mode * 16));
- case 2:
- onecmd |= (onecmd << (chip_mode * 8));
- case 1:
- ;
- }
-
- /* And finally, for the multi-word case, replicate it
- in all words in the structure */
- for (i=0; i < words_per_bus; i++) {
- val.x[i] = onecmd;
- }
-
- return val;
-}
-#define CMD(x) cfi_build_cmd((x), map, cfi)
-
-
-static inline unsigned long cfi_merge_status(map_word val, struct map_info *map,
- struct cfi_private *cfi)
-{
- int wordwidth, words_per_bus, chip_mode, chips_per_word;
- unsigned long onestat, res = 0;
- int i;
-
- /* We do it this way to give the compiler a fighting chance
- of optimising away all the crap for 'bankwidth' larger than
- an unsigned long, in the common case where that support is
- disabled */
- if (map_bankwidth_is_large(map)) {
- wordwidth = sizeof(unsigned long);
- words_per_bus = (map_bankwidth(map)) / wordwidth; // i.e. normally 1
- } else {
- wordwidth = map_bankwidth(map);
- words_per_bus = 1;
- }
-
- chip_mode = map_bankwidth(map) / cfi_interleave(cfi);
- chips_per_word = wordwidth * cfi_interleave(cfi) / map_bankwidth(map);
-
- onestat = val.x[0];
- /* Or all status words together */
- for (i=1; i < words_per_bus; i++) {
- onestat |= val.x[i];
- }
-
- res = onestat;
- switch(chips_per_word) {
- default: BUG();
-#if BITS_PER_LONG >= 64
- case 8:
- res |= (onestat >> (chip_mode * 32));
-#endif
- case 4:
- res |= (onestat >> (chip_mode * 16));
- case 2:
- res |= (onestat >> (chip_mode * 8));
- case 1:
- ;
- }
-
- /* Last, determine what the bit-pattern should be for a single
- device, according to chip mode and endianness... */
- switch (chip_mode) {
- case 1:
- break;
- case 2:
- res = cfi16_to_cpu(map, res);
- break;
- case 4:
- res = cfi32_to_cpu(map, res);
- break;
- default: BUG();
- }
- return res;
-}
-
-#define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
-
-
-/*
- * Sends a CFI command to a bank of flash for the given geometry.
- *
- * Returns the offset in flash where the command was written.
- * If prev_val is non-null, it will be set to the value at the command address,
- * before the command was written.
- */
-static inline uint32_t cfi_send_gen_cmd(u_char cmd, uint32_t cmd_addr, uint32_t base,
- struct map_info *map, struct cfi_private *cfi,
- int type, map_word *prev_val)
-{
- map_word val;
- uint32_t addr = base + cfi_build_cmd_addr(cmd_addr, map, cfi);
- val = cfi_build_cmd(cmd, map, cfi);
-
- if (prev_val)
- *prev_val = map_read(map, addr);
-
- map_write(map, val, addr);
-
- return addr - base;
-}
-
-static inline uint8_t cfi_read_query(struct map_info *map, uint32_t addr)
-{
- map_word val = map_read(map, addr);
-
- if (map_bankwidth_is_1(map)) {
- return val.x[0];
- } else if (map_bankwidth_is_2(map)) {
- return cfi16_to_cpu(map, val.x[0]);
- } else {
- /* No point in a 64-bit byteswap since that would just be
- swapping the responses from different chips, and we are
- only interested in one chip (a representative sample) */
- return cfi32_to_cpu(map, val.x[0]);
- }
-}
-
-static inline uint16_t cfi_read_query16(struct map_info *map, uint32_t addr)
-{
- map_word val = map_read(map, addr);
-
- if (map_bankwidth_is_1(map)) {
- return val.x[0] & 0xff;
- } else if (map_bankwidth_is_2(map)) {
- return cfi16_to_cpu(map, val.x[0]);
- } else {
- /* No point in a 64-bit byteswap since that would just be
- swapping the responses from different chips, and we are
- only interested in one chip (a representative sample) */
- return cfi32_to_cpu(map, val.x[0]);
- }
-}
-
-static inline void cfi_udelay(int us)
-{
- if (us >= 1000) {
- msleep((us+999)/1000);
- } else {
- udelay(us);
- cond_resched();
- }
-}
-
-int __xipram cfi_qry_present(struct map_info *map, __u32 base,
- struct cfi_private *cfi);
-int __xipram cfi_qry_mode_on(uint32_t base, struct map_info *map,
- struct cfi_private *cfi);
-void __xipram cfi_qry_mode_off(uint32_t base, struct map_info *map,
- struct cfi_private *cfi);
-
-struct cfi_extquery *cfi_read_pri(struct map_info *map, uint16_t adr, uint16_t size,
- const char* name);
-struct cfi_fixup {
- uint16_t mfr;
- uint16_t id;
- void (*fixup)(struct mtd_info *mtd);
-};
-
-#define CFI_MFR_ANY 0xFFFF
-#define CFI_ID_ANY 0xFFFF
-#define CFI_MFR_CONTINUATION 0x007F
-
-#define CFI_MFR_AMD 0x0001
-#define CFI_MFR_AMIC 0x0037
-#define CFI_MFR_ATMEL 0x001F
-#define CFI_MFR_EON 0x001C
-#define CFI_MFR_FUJITSU 0x0004
-#define CFI_MFR_HYUNDAI 0x00AD
-#define CFI_MFR_INTEL 0x0089
-#define CFI_MFR_MACRONIX 0x00C2
-#define CFI_MFR_NEC 0x0010
-#define CFI_MFR_PMC 0x009D
-#define CFI_MFR_SAMSUNG 0x00EC
-#define CFI_MFR_SHARP 0x00B0
-#define CFI_MFR_SST 0x00BF
-#define CFI_MFR_ST 0x0020 /* STMicroelectronics */
-#define CFI_MFR_TOSHIBA 0x0098
-#define CFI_MFR_WINBOND 0x00DA
-
-void cfi_fixup(struct mtd_info *mtd, struct cfi_fixup* fixups);
-
-typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
- unsigned long adr, int len, void *thunk);
-
-int cfi_varsize_frob(struct mtd_info *mtd, varsize_frob_t frob,
- loff_t ofs, size_t len, void *thunk);
-
-
-#endif /* __MTD_CFI_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/cfi_endian.h b/ANDROID_3.4.5/include/linux/mtd/cfi_endian.h
deleted file mode 100644
index b97a6250..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/cfi_endian.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright © 2001-2010 David Woodhouse <dwmw2@infradead.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <asm/byteorder.h>
-
-#define CFI_HOST_ENDIAN 1
-#define CFI_LITTLE_ENDIAN 2
-#define CFI_BIG_ENDIAN 3
-
-#if !defined(CONFIG_MTD_CFI_ADV_OPTIONS) || defined(CONFIG_MTD_CFI_NOSWAP)
-#define CFI_DEFAULT_ENDIAN CFI_HOST_ENDIAN
-#elif defined(CONFIG_MTD_CFI_LE_BYTE_SWAP)
-#define CFI_DEFAULT_ENDIAN CFI_LITTLE_ENDIAN
-#elif defined(CONFIG_MTD_CFI_BE_BYTE_SWAP)
-#define CFI_DEFAULT_ENDIAN CFI_BIG_ENDIAN
-#else
-#error No CFI endianness defined
-#endif
-
-#define cfi_default(s) ((s)?:CFI_DEFAULT_ENDIAN)
-#define cfi_be(s) (cfi_default(s) == CFI_BIG_ENDIAN)
-#define cfi_le(s) (cfi_default(s) == CFI_LITTLE_ENDIAN)
-#define cfi_host(s) (cfi_default(s) == CFI_HOST_ENDIAN)
-
-#define cpu_to_cfi8(map, x) (x)
-#define cfi8_to_cpu(map, x) (x)
-#define cpu_to_cfi16(map, x) _cpu_to_cfi(16, (map)->swap, (x))
-#define cpu_to_cfi32(map, x) _cpu_to_cfi(32, (map)->swap, (x))
-#define cpu_to_cfi64(map, x) _cpu_to_cfi(64, (map)->swap, (x))
-#define cfi16_to_cpu(map, x) _cfi_to_cpu(16, (map)->swap, (x))
-#define cfi32_to_cpu(map, x) _cfi_to_cpu(32, (map)->swap, (x))
-#define cfi64_to_cpu(map, x) _cfi_to_cpu(64, (map)->swap, (x))
-
-#define _cpu_to_cfi(w, s, x) (cfi_host(s)?(x):_swap_to_cfi(w, s, x))
-#define _cfi_to_cpu(w, s, x) (cfi_host(s)?(x):_swap_to_cpu(w, s, x))
-#define _swap_to_cfi(w, s, x) (cfi_be(s)?cpu_to_be##w(x):cpu_to_le##w(x))
-#define _swap_to_cpu(w, s, x) (cfi_be(s)?be##w##_to_cpu(x):le##w##_to_cpu(x))
diff --git a/ANDROID_3.4.5/include/linux/mtd/concat.h b/ANDROID_3.4.5/include/linux/mtd/concat.h
deleted file mode 100644
index ccdbe93a..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/concat.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * MTD device concatenation layer definitions
- *
- * Copyright © 2002 Robert Kaiser <rkaiser@sysgo.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef MTD_CONCAT_H
-#define MTD_CONCAT_H
-
-
-struct mtd_info *mtd_concat_create(
- struct mtd_info *subdev[], /* subdevices to concatenate */
- int num_devs, /* number of subdevices */
- const char *name); /* name for the new device */
-
-void mtd_concat_destroy(struct mtd_info *mtd);
-
-#endif
-
diff --git a/ANDROID_3.4.5/include/linux/mtd/doc2000.h b/ANDROID_3.4.5/include/linux/mtd/doc2000.h
deleted file mode 100644
index 0f6fea73..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/doc2000.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Linux driver for Disk-On-Chip devices
- *
- * Copyright © 1999 Machine Vision Holdings, Inc.
- * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
- * Copyright © 2002-2003 Greg Ungerer <gerg@snapgear.com>
- * Copyright © 2002-2003 SnapGear Inc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_DOC2000_H__
-#define __MTD_DOC2000_H__
-
-#include <linux/mtd/mtd.h>
-#include <linux/mutex.h>
-
-#define DoC_Sig1 0
-#define DoC_Sig2 1
-
-#define DoC_ChipID 0x1000
-#define DoC_DOCStatus 0x1001
-#define DoC_DOCControl 0x1002
-#define DoC_FloorSelect 0x1003
-#define DoC_CDSNControl 0x1004
-#define DoC_CDSNDeviceSelect 0x1005
-#define DoC_ECCConf 0x1006
-#define DoC_2k_ECCStatus 0x1007
-
-#define DoC_CDSNSlowIO 0x100d
-#define DoC_ECCSyndrome0 0x1010
-#define DoC_ECCSyndrome1 0x1011
-#define DoC_ECCSyndrome2 0x1012
-#define DoC_ECCSyndrome3 0x1013
-#define DoC_ECCSyndrome4 0x1014
-#define DoC_ECCSyndrome5 0x1015
-#define DoC_AliasResolution 0x101b
-#define DoC_ConfigInput 0x101c
-#define DoC_ReadPipeInit 0x101d
-#define DoC_WritePipeTerm 0x101e
-#define DoC_LastDataRead 0x101f
-#define DoC_NOP 0x1020
-
-#define DoC_Mil_CDSN_IO 0x0800
-#define DoC_2k_CDSN_IO 0x1800
-
-#define DoC_Mplus_NOP 0x1002
-#define DoC_Mplus_AliasResolution 0x1004
-#define DoC_Mplus_DOCControl 0x1006
-#define DoC_Mplus_AccessStatus 0x1008
-#define DoC_Mplus_DeviceSelect 0x1008
-#define DoC_Mplus_Configuration 0x100a
-#define DoC_Mplus_OutputControl 0x100c
-#define DoC_Mplus_FlashControl 0x1020
-#define DoC_Mplus_FlashSelect 0x1022
-#define DoC_Mplus_FlashCmd 0x1024
-#define DoC_Mplus_FlashAddress 0x1026
-#define DoC_Mplus_FlashData0 0x1028
-#define DoC_Mplus_FlashData1 0x1029
-#define DoC_Mplus_ReadPipeInit 0x102a
-#define DoC_Mplus_LastDataRead 0x102c
-#define DoC_Mplus_LastDataRead1 0x102d
-#define DoC_Mplus_WritePipeTerm 0x102e
-#define DoC_Mplus_ECCSyndrome0 0x1040
-#define DoC_Mplus_ECCSyndrome1 0x1041
-#define DoC_Mplus_ECCSyndrome2 0x1042
-#define DoC_Mplus_ECCSyndrome3 0x1043
-#define DoC_Mplus_ECCSyndrome4 0x1044
-#define DoC_Mplus_ECCSyndrome5 0x1045
-#define DoC_Mplus_ECCConf 0x1046
-#define DoC_Mplus_Toggle 0x1046
-#define DoC_Mplus_DownloadStatus 0x1074
-#define DoC_Mplus_CtrlConfirm 0x1076
-#define DoC_Mplus_Power 0x1fff
-
-/* How to access the device?
- * On ARM, it'll be mmap'd directly with 32-bit wide accesses.
- * On PPC, it's mmap'd and 16-bit wide.
- * Others use readb/writeb
- */
-#if defined(__arm__)
-#define ReadDOC_(adr, reg) ((unsigned char)(*(volatile __u32 *)(((unsigned long)adr)+((reg)<<2))))
-#define WriteDOC_(d, adr, reg) do{ *(volatile __u32 *)(((unsigned long)adr)+((reg)<<2)) = (__u32)d; wmb();} while(0)
-#define DOC_IOREMAP_LEN 0x8000
-#elif defined(__ppc__)
-#define ReadDOC_(adr, reg) ((unsigned char)(*(volatile __u16 *)(((unsigned long)adr)+((reg)<<1))))
-#define WriteDOC_(d, adr, reg) do{ *(volatile __u16 *)(((unsigned long)adr)+((reg)<<1)) = (__u16)d; wmb();} while(0)
-#define DOC_IOREMAP_LEN 0x4000
-#else
-#define ReadDOC_(adr, reg) readb((void __iomem *)(adr) + (reg))
-#define WriteDOC_(d, adr, reg) writeb(d, (void __iomem *)(adr) + (reg))
-#define DOC_IOREMAP_LEN 0x2000
-
-#endif
-
-#if defined(__i386__) || defined(__x86_64__)
-#define USE_MEMCPY
-#endif
-
-/* These are provided to directly use the DoC_xxx defines */
-#define ReadDOC(adr, reg) ReadDOC_(adr,DoC_##reg)
-#define WriteDOC(d, adr, reg) WriteDOC_(d,adr,DoC_##reg)
-
-#define DOC_MODE_RESET 0
-#define DOC_MODE_NORMAL 1
-#define DOC_MODE_RESERVED1 2
-#define DOC_MODE_RESERVED2 3
-
-#define DOC_MODE_CLR_ERR 0x80
-#define DOC_MODE_RST_LAT 0x10
-#define DOC_MODE_BDECT 0x08
-#define DOC_MODE_MDWREN 0x04
-
-#define DOC_ChipID_Doc2k 0x20
-#define DOC_ChipID_Doc2kTSOP 0x21 /* internal number for MTD */
-#define DOC_ChipID_DocMil 0x30
-#define DOC_ChipID_DocMilPlus32 0x40
-#define DOC_ChipID_DocMilPlus16 0x41
-
-#define CDSN_CTRL_FR_B 0x80
-#define CDSN_CTRL_FR_B0 0x40
-#define CDSN_CTRL_FR_B1 0x80
-
-#define CDSN_CTRL_ECC_IO 0x20
-#define CDSN_CTRL_FLASH_IO 0x10
-#define CDSN_CTRL_WP 0x08
-#define CDSN_CTRL_ALE 0x04
-#define CDSN_CTRL_CLE 0x02
-#define CDSN_CTRL_CE 0x01
-
-#define DOC_ECC_RESET 0
-#define DOC_ECC_ERROR 0x80
-#define DOC_ECC_RW 0x20
-#define DOC_ECC__EN 0x08
-#define DOC_TOGGLE_BIT 0x04
-#define DOC_ECC_RESV 0x02
-#define DOC_ECC_IGNORE 0x01
-
-#define DOC_FLASH_CE 0x80
-#define DOC_FLASH_WP 0x40
-#define DOC_FLASH_BANK 0x02
-
-/* We have to also set the reserved bit 1 for enable */
-#define DOC_ECC_EN (DOC_ECC__EN | DOC_ECC_RESV)
-#define DOC_ECC_DIS (DOC_ECC_RESV)
-
-struct Nand {
- char floor, chip;
- unsigned long curadr;
- unsigned char curmode;
- /* Also some erase/write/pipeline info when we get that far */
-};
-
-#define MAX_FLOORS 4
-#define MAX_CHIPS 4
-
-#define MAX_FLOORS_MIL 1
-#define MAX_CHIPS_MIL 1
-
-#define MAX_FLOORS_MPLUS 2
-#define MAX_CHIPS_MPLUS 1
-
-#define ADDR_COLUMN 1
-#define ADDR_PAGE 2
-#define ADDR_COLUMN_PAGE 3
-
-struct DiskOnChip {
- unsigned long physadr;
- void __iomem *virtadr;
- unsigned long totlen;
- unsigned char ChipID; /* Type of DiskOnChip */
- int ioreg;
-
- unsigned long mfr; /* Flash IDs - only one type of flash per device */
- unsigned long id;
- int chipshift;
- char page256;
- char pageadrlen;
- char interleave; /* Internal interleaving - Millennium Plus style */
- unsigned long erasesize;
-
- int curfloor;
- int curchip;
-
- int numchips;
- struct Nand *chips;
- struct mtd_info *nextdoc;
- struct mutex lock;
-};
-
-int doc_decode_ecc(unsigned char sector[512], unsigned char ecc1[6]);
-
-#endif /* __MTD_DOC2000_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/flashchip.h b/ANDROID_3.4.5/include/linux/mtd/flashchip.h
deleted file mode 100644
index b63fa457..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/flashchip.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright © 2000 Red Hat UK Limited
- * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_FLASHCHIP_H__
-#define __MTD_FLASHCHIP_H__
-
-/* For spinlocks. sched.h includes spinlock.h from whichever directory it
- * happens to be in - so we don't have to care whether we're on 2.2, which
- * has asm/spinlock.h, or 2.4, which has linux/spinlock.h
- */
-#include <linux/sched.h>
-#include <linux/mutex.h>
-
-typedef enum {
- FL_READY,
- FL_STATUS,
- FL_CFI_QUERY,
- FL_JEDEC_QUERY,
- FL_ERASING,
- FL_ERASE_SUSPENDING,
- FL_ERASE_SUSPENDED,
- FL_WRITING,
- FL_WRITING_TO_BUFFER,
- FL_OTP_WRITE,
- FL_WRITE_SUSPENDING,
- FL_WRITE_SUSPENDED,
- FL_PM_SUSPENDED,
- FL_SYNCING,
- FL_UNLOADING,
- FL_LOCKING,
- FL_UNLOCKING,
- FL_POINT,
- FL_XIP_WHILE_ERASING,
- FL_XIP_WHILE_WRITING,
- FL_SHUTDOWN,
- /* These 2 come from nand_state_t, which has been unified here */
- FL_READING,
- FL_CACHEDPRG,
- /* These 4 come from onenand_state_t, which has been unified here */
- FL_RESETING,
- FL_OTPING,
- FL_PREPARING_ERASE,
- FL_VERIFYING_ERASE,
-
- FL_UNKNOWN
-} flstate_t;
-
-
-
-/* NOTE: confusingly, this can be used to refer to more than one chip at a time,
- if they're interleaved. This can even refer to individual partitions on
- the same physical chip when present. */
-
-struct flchip {
- unsigned long start; /* Offset within the map */
- // unsigned long len;
- /* We omit len for now, because when we group them together
- we insist that they're all of the same size, and the chip size
- is held in the next level up. If we get more versatile later,
- it'll make it a damn sight harder to find which chip we want from
- a given offset, and we'll want to add the per-chip length field
- back in.
- */
- int ref_point_counter;
- flstate_t state;
- flstate_t oldstate;
-
- unsigned int write_suspended:1;
- unsigned int erase_suspended:1;
- unsigned long in_progress_block_addr;
-
- struct mutex mutex;
- wait_queue_head_t wq; /* Wait on here when we're waiting for the chip
- to be ready */
- int word_write_time;
- int buffer_write_time;
- int erase_time;
-
- int word_write_time_max;
- int buffer_write_time_max;
- int erase_time_max;
-
- void *priv;
-};
-
-/* This is used to handle contention on write/erase operations
- between partitions of the same physical chip. */
-struct flchip_shared {
- struct mutex lock;
- struct flchip *writing;
- struct flchip *erasing;
-};
-
-
-#endif /* __MTD_FLASHCHIP_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/fsmc.h b/ANDROID_3.4.5/include/linux/mtd/fsmc.h
deleted file mode 100644
index b2002922..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/fsmc.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * incude/mtd/fsmc.h
- *
- * ST Microelectronics
- * Flexible Static Memory Controller (FSMC)
- * platform data interface and header file
- *
- * Copyright © 2010 ST Microelectronics
- * Vipin Kumar <vipin.kumar@st.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __MTD_FSMC_H
-#define __MTD_FSMC_H
-
-#include <linux/io.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/physmap.h>
-#include <linux/types.h>
-#include <linux/mtd/partitions.h>
-#include <asm/param.h>
-
-#define FSMC_NAND_BW8 1
-#define FSMC_NAND_BW16 2
-
-#define FSMC_MAX_NOR_BANKS 4
-#define FSMC_MAX_NAND_BANKS 4
-
-#define FSMC_FLASH_WIDTH8 1
-#define FSMC_FLASH_WIDTH16 2
-
-/* fsmc controller registers for NOR flash */
-#define CTRL 0x0
- /* ctrl register definitions */
- #define BANK_ENABLE (1 << 0)
- #define MUXED (1 << 1)
- #define NOR_DEV (2 << 2)
- #define WIDTH_8 (0 << 4)
- #define WIDTH_16 (1 << 4)
- #define RSTPWRDWN (1 << 6)
- #define WPROT (1 << 7)
- #define WRT_ENABLE (1 << 12)
- #define WAIT_ENB (1 << 13)
-
-#define CTRL_TIM 0x4
- /* ctrl_tim register definitions */
-
-#define FSMC_NOR_BANK_SZ 0x8
-#define FSMC_NOR_REG_SIZE 0x40
-
-#define FSMC_NOR_REG(base, bank, reg) (base + \
- FSMC_NOR_BANK_SZ * (bank) + \
- reg)
-
-/* fsmc controller registers for NAND flash */
-#define PC 0x00
- /* pc register definitions */
- #define FSMC_RESET (1 << 0)
- #define FSMC_WAITON (1 << 1)
- #define FSMC_ENABLE (1 << 2)
- #define FSMC_DEVTYPE_NAND (1 << 3)
- #define FSMC_DEVWID_8 (0 << 4)
- #define FSMC_DEVWID_16 (1 << 4)
- #define FSMC_ECCEN (1 << 6)
- #define FSMC_ECCPLEN_512 (0 << 7)
- #define FSMC_ECCPLEN_256 (1 << 7)
- #define FSMC_TCLR_1 (1)
- #define FSMC_TCLR_SHIFT (9)
- #define FSMC_TCLR_MASK (0xF)
- #define FSMC_TAR_1 (1)
- #define FSMC_TAR_SHIFT (13)
- #define FSMC_TAR_MASK (0xF)
-#define STS 0x04
- /* sts register definitions */
- #define FSMC_CODE_RDY (1 << 15)
-#define COMM 0x08
- /* comm register definitions */
- #define FSMC_TSET_0 0
- #define FSMC_TSET_SHIFT 0
- #define FSMC_TSET_MASK 0xFF
- #define FSMC_TWAIT_6 6
- #define FSMC_TWAIT_SHIFT 8
- #define FSMC_TWAIT_MASK 0xFF
- #define FSMC_THOLD_4 4
- #define FSMC_THOLD_SHIFT 16
- #define FSMC_THOLD_MASK 0xFF
- #define FSMC_THIZ_1 1
- #define FSMC_THIZ_SHIFT 24
- #define FSMC_THIZ_MASK 0xFF
-#define ATTRIB 0x0C
-#define IOATA 0x10
-#define ECC1 0x14
-#define ECC2 0x18
-#define ECC3 0x1C
-#define FSMC_NAND_BANK_SZ 0x20
-
-#define FSMC_NAND_REG(base, bank, reg) (base + FSMC_NOR_REG_SIZE + \
- (FSMC_NAND_BANK_SZ * (bank)) + \
- reg)
-
-#define FSMC_BUSY_WAIT_TIMEOUT (1 * HZ)
-
-/*
- * There are 13 bytes of ecc for every 512 byte block in FSMC version 8
- * and it has to be read consecutively and immediately after the 512
- * byte data block for hardware to generate the error bit offsets
- * Managing the ecc bytes in the following way is easier. This way is
- * similar to oobfree structure maintained already in u-boot nand driver
- */
-#define MAX_ECCPLACE_ENTRIES 32
-
-struct fsmc_nand_eccplace {
- uint8_t offset;
- uint8_t length;
-};
-
-struct fsmc_eccplace {
- struct fsmc_nand_eccplace eccplace[MAX_ECCPLACE_ENTRIES];
-};
-
-struct fsmc_nand_timings {
- uint8_t tclr;
- uint8_t tar;
- uint8_t thiz;
- uint8_t thold;
- uint8_t twait;
- uint8_t tset;
-};
-
-enum access_mode {
- USE_DMA_ACCESS = 1,
- USE_WORD_ACCESS,
-};
-
-/**
- * fsmc_nand_platform_data - platform specific NAND controller config
- * @partitions: partition table for the platform, use a default fallback
- * if this is NULL
- * @nr_partitions: the number of partitions in the previous entry
- * @options: different options for the driver
- * @width: bus width
- * @bank: default bank
- * @select_bank: callback to select a certain bank, this is
- * platform-specific. If the controller only supports one bank
- * this may be set to NULL
- */
-struct fsmc_nand_platform_data {
- struct fsmc_nand_timings *nand_timings;
- struct mtd_partition *partitions;
- unsigned int nr_partitions;
- unsigned int options;
- unsigned int width;
- unsigned int bank;
-
- /* CLE, ALE offsets */
- unsigned int cle_off;
- unsigned int ale_off;
- enum access_mode mode;
-
- void (*select_bank)(uint32_t bank, uint32_t busw);
-
- /* priv structures for dma accesses */
- void *read_dma_priv;
- void *write_dma_priv;
-};
-
-extern int __init fsmc_nor_init(struct platform_device *pdev,
- unsigned long base, uint32_t bank, uint32_t width);
-extern void __init fsmc_init_board_info(struct platform_device *pdev,
- struct mtd_partition *partitions, unsigned int nr_partitions,
- unsigned int width);
-
-#endif /* __MTD_FSMC_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/ftl.h b/ANDROID_3.4.5/include/linux/mtd/ftl.h
deleted file mode 100644
index 0555f7a0..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/ftl.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Derived from (and probably identical to):
- * ftl.h 1.7 1999/10/25 20:23:17
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_FTL_H
-#define _LINUX_FTL_H
-
-typedef struct erase_unit_header_t {
- uint8_t LinkTargetTuple[5];
- uint8_t DataOrgTuple[10];
- uint8_t NumTransferUnits;
- uint32_t EraseCount;
- uint16_t LogicalEUN;
- uint8_t BlockSize;
- uint8_t EraseUnitSize;
- uint16_t FirstPhysicalEUN;
- uint16_t NumEraseUnits;
- uint32_t FormattedSize;
- uint32_t FirstVMAddress;
- uint16_t NumVMPages;
- uint8_t Flags;
- uint8_t Code;
- uint32_t SerialNumber;
- uint32_t AltEUHOffset;
- uint32_t BAMOffset;
- uint8_t Reserved[12];
- uint8_t EndTuple[2];
-} erase_unit_header_t;
-
-/* Flags in erase_unit_header_t */
-#define HIDDEN_AREA 0x01
-#define REVERSE_POLARITY 0x02
-#define DOUBLE_BAI 0x04
-
-/* Definitions for block allocation information */
-
-#define BLOCK_FREE(b) ((b) == 0xffffffff)
-#define BLOCK_DELETED(b) (((b) == 0) || ((b) == 0xfffffffe))
-
-#define BLOCK_TYPE(b) ((b) & 0x7f)
-#define BLOCK_ADDRESS(b) ((b) & ~0x7f)
-#define BLOCK_NUMBER(b) ((b) >> 9)
-#define BLOCK_CONTROL 0x30
-#define BLOCK_DATA 0x40
-#define BLOCK_REPLACEMENT 0x60
-#define BLOCK_BAD 0x70
-
-#endif /* _LINUX_FTL_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/gen_probe.h b/ANDROID_3.4.5/include/linux/mtd/gen_probe.h
deleted file mode 100644
index 2c456054..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/gen_probe.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright © 2001 Red Hat UK Limited
- * Copyright © 2001-2010 David Woodhouse <dwmw2@infradead.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __LINUX_MTD_GEN_PROBE_H__
-#define __LINUX_MTD_GEN_PROBE_H__
-
-#include <linux/mtd/flashchip.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/cfi.h>
-#include <linux/bitops.h>
-
-struct chip_probe {
- char *name;
- int (*probe_chip)(struct map_info *map, __u32 base,
- unsigned long *chip_map, struct cfi_private *cfi);
-};
-
-struct mtd_info *mtd_do_chip_probe(struct map_info *map, struct chip_probe *cp);
-
-#endif /* __LINUX_MTD_GEN_PROBE_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/gpmi-nand.h b/ANDROID_3.4.5/include/linux/mtd/gpmi-nand.h
deleted file mode 100644
index 69b6dbf4..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/gpmi-nand.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __MACH_MXS_GPMI_NAND_H__
-#define __MACH_MXS_GPMI_NAND_H__
-
-/* The size of the resources is fixed. */
-#define GPMI_NAND_RES_SIZE 6
-
-/* Resource names for the GPMI NAND driver. */
-#define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "GPMI NAND GPMI Registers"
-#define GPMI_NAND_GPMI_INTERRUPT_RES_NAME "GPMI NAND GPMI Interrupt"
-#define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "GPMI NAND BCH Registers"
-#define GPMI_NAND_BCH_INTERRUPT_RES_NAME "GPMI NAND BCH Interrupt"
-#define GPMI_NAND_DMA_CHANNELS_RES_NAME "GPMI NAND DMA Channels"
-#define GPMI_NAND_DMA_INTERRUPT_RES_NAME "GPMI NAND DMA Interrupt"
-
-/**
- * struct gpmi_nand_platform_data - GPMI NAND driver platform data.
- *
- * This structure communicates platform-specific information to the GPMI NAND
- * driver that can't be expressed as resources.
- *
- * @platform_init: A pointer to a function the driver will call to
- * initialize the platform (e.g., set up the pin mux).
- * @min_prop_delay_in_ns: Minimum propagation delay of GPMI signals to and
- * from the NAND Flash device, in nanoseconds.
- * @max_prop_delay_in_ns: Maximum propagation delay of GPMI signals to and
- * from the NAND Flash device, in nanoseconds.
- * @max_chip_count: The maximum number of chips for which the driver
- * should configure the hardware. This value most
- * likely reflects the number of pins that are
- * connected to a NAND Flash device. If this is
- * greater than the SoC hardware can support, the
- * driver will print a message and fail to initialize.
- * @partitions: An optional pointer to an array of partition
- * descriptions.
- * @partition_count: The number of elements in the partitions array.
- */
-struct gpmi_nand_platform_data {
- /* SoC hardware information. */
- int (*platform_init)(void);
-
- /* NAND Flash information. */
- unsigned int min_prop_delay_in_ns;
- unsigned int max_prop_delay_in_ns;
- unsigned int max_chip_count;
-
- /* Medium information. */
- struct mtd_partition *partitions;
- unsigned partition_count;
-};
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/inftl.h b/ANDROID_3.4.5/include/linux/mtd/inftl.h
deleted file mode 100644
index 02cd5f9b..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/inftl.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * inftl.h -- defines to support the Inverse NAND Flash Translation Layer
- *
- * (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com)
- */
-
-#ifndef __MTD_INFTL_H__
-#define __MTD_INFTL_H__
-
-#ifndef __KERNEL__
-#error This is a kernel header. Perhaps include nftl-user.h instead?
-#endif
-
-#include <linux/mtd/blktrans.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/nftl.h>
-
-#include <mtd/inftl-user.h>
-
-#ifndef INFTL_MAJOR
-#define INFTL_MAJOR 96
-#endif
-#define INFTL_PARTN_BITS 4
-
-#ifdef __KERNEL__
-
-struct INFTLrecord {
- struct mtd_blktrans_dev mbd;
- __u16 MediaUnit;
- __u32 EraseSize;
- struct INFTLMediaHeader MediaHdr;
- int usecount;
- unsigned char heads;
- unsigned char sectors;
- unsigned short cylinders;
- __u16 numvunits;
- __u16 firstEUN;
- __u16 lastEUN;
- __u16 numfreeEUNs;
- __u16 LastFreeEUN; /* To speed up finding a free EUN */
- int head,sect,cyl;
- __u16 *PUtable; /* Physical Unit Table */
- __u16 *VUtable; /* Virtual Unit Table */
- unsigned int nb_blocks; /* number of physical blocks */
- unsigned int nb_boot_blocks; /* number of blocks used by the bios */
- struct erase_info instr;
- struct nand_ecclayout oobinfo;
-};
-
-int INFTL_mount(struct INFTLrecord *s);
-int INFTL_formatblock(struct INFTLrecord *s, int block);
-
-void INFTL_dumptables(struct INFTLrecord *s);
-void INFTL_dumpVUchains(struct INFTLrecord *s);
-
-int inftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len,
- size_t *retlen, uint8_t *buf);
-int inftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len,
- size_t *retlen, uint8_t *buf);
-
-#endif /* __KERNEL__ */
-
-#endif /* __MTD_INFTL_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/latch-addr-flash.h b/ANDROID_3.4.5/include/linux/mtd/latch-addr-flash.h
deleted file mode 100644
index e94b8e12..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/latch-addr-flash.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Interface for NOR flash driver whose high address lines are latched
- *
- * Copyright © 2008 MontaVista Software, Inc. <source@mvista.com>
- *
- * This file is licensed under the terms of the GNU General Public License
- * version 2. This program is licensed "as is" without any warranty of any
- * kind, whether express or implied.
- */
-#ifndef __LATCH_ADDR_FLASH__
-#define __LATCH_ADDR_FLASH__
-
-struct map_info;
-struct mtd_partition;
-
-struct latch_addr_flash_data {
- unsigned int width;
- unsigned int size;
-
- int (*init)(void *data, int cs);
- void (*done)(void *data);
- void (*set_window)(unsigned long offset, void *data);
- void *data;
-
- unsigned int nr_parts;
- struct mtd_partition *parts;
-};
-
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/map.h b/ANDROID_3.4.5/include/linux/mtd/map.h
deleted file mode 100644
index 3595a023..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/map.h
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org> et al.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/* Overhauled routines for dealing with different mmap regions of flash */
-
-#ifndef __LINUX_MTD_MAP_H__
-#define __LINUX_MTD_MAP_H__
-
-#include <linux/types.h>
-#include <linux/list.h>
-#include <linux/string.h>
-#include <linux/bug.h>
-#include <linux/kernel.h>
-
-#include <asm/unaligned.h>
-#include <asm/io.h>
-#include <asm/barrier.h>
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
-#define map_bankwidth(map) 1
-#define map_bankwidth_is_1(map) (map_bankwidth(map) == 1)
-#define map_bankwidth_is_large(map) (0)
-#define map_words(map) (1)
-#define MAX_MAP_BANKWIDTH 1
-#else
-#define map_bankwidth_is_1(map) (0)
-#endif
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_2
-# ifdef map_bankwidth
-# undef map_bankwidth
-# define map_bankwidth(map) ((map)->bankwidth)
-# else
-# define map_bankwidth(map) 2
-# define map_bankwidth_is_large(map) (0)
-# define map_words(map) (1)
-# endif
-#define map_bankwidth_is_2(map) (map_bankwidth(map) == 2)
-#undef MAX_MAP_BANKWIDTH
-#define MAX_MAP_BANKWIDTH 2
-#else
-#define map_bankwidth_is_2(map) (0)
-#endif
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_4
-# ifdef map_bankwidth
-# undef map_bankwidth
-# define map_bankwidth(map) ((map)->bankwidth)
-# else
-# define map_bankwidth(map) 4
-# define map_bankwidth_is_large(map) (0)
-# define map_words(map) (1)
-# endif
-#define map_bankwidth_is_4(map) (map_bankwidth(map) == 4)
-#undef MAX_MAP_BANKWIDTH
-#define MAX_MAP_BANKWIDTH 4
-#else
-#define map_bankwidth_is_4(map) (0)
-#endif
-
-/* ensure we never evaluate anything shorted than an unsigned long
- * to zero, and ensure we'll never miss the end of an comparison (bjd) */
-
-#define map_calc_words(map) ((map_bankwidth(map) + (sizeof(unsigned long)-1))/ sizeof(unsigned long))
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_8
-# ifdef map_bankwidth
-# undef map_bankwidth
-# define map_bankwidth(map) ((map)->bankwidth)
-# if BITS_PER_LONG < 64
-# undef map_bankwidth_is_large
-# define map_bankwidth_is_large(map) (map_bankwidth(map) > BITS_PER_LONG/8)
-# undef map_words
-# define map_words(map) map_calc_words(map)
-# endif
-# else
-# define map_bankwidth(map) 8
-# define map_bankwidth_is_large(map) (BITS_PER_LONG < 64)
-# define map_words(map) map_calc_words(map)
-# endif
-#define map_bankwidth_is_8(map) (map_bankwidth(map) == 8)
-#undef MAX_MAP_BANKWIDTH
-#define MAX_MAP_BANKWIDTH 8
-#else
-#define map_bankwidth_is_8(map) (0)
-#endif
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_16
-# ifdef map_bankwidth
-# undef map_bankwidth
-# define map_bankwidth(map) ((map)->bankwidth)
-# undef map_bankwidth_is_large
-# define map_bankwidth_is_large(map) (map_bankwidth(map) > BITS_PER_LONG/8)
-# undef map_words
-# define map_words(map) map_calc_words(map)
-# else
-# define map_bankwidth(map) 16
-# define map_bankwidth_is_large(map) (1)
-# define map_words(map) map_calc_words(map)
-# endif
-#define map_bankwidth_is_16(map) (map_bankwidth(map) == 16)
-#undef MAX_MAP_BANKWIDTH
-#define MAX_MAP_BANKWIDTH 16
-#else
-#define map_bankwidth_is_16(map) (0)
-#endif
-
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_32
-# ifdef map_bankwidth
-# undef map_bankwidth
-# define map_bankwidth(map) ((map)->bankwidth)
-# undef map_bankwidth_is_large
-# define map_bankwidth_is_large(map) (map_bankwidth(map) > BITS_PER_LONG/8)
-# undef map_words
-# define map_words(map) map_calc_words(map)
-# else
-# define map_bankwidth(map) 32
-# define map_bankwidth_is_large(map) (1)
-# define map_words(map) map_calc_words(map)
-# endif
-#define map_bankwidth_is_32(map) (map_bankwidth(map) == 32)
-#undef MAX_MAP_BANKWIDTH
-#define MAX_MAP_BANKWIDTH 32
-#else
-#define map_bankwidth_is_32(map) (0)
-#endif
-
-#ifndef map_bankwidth
-#warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
-static inline int map_bankwidth(void *map)
-{
- BUG();
- return 0;
-}
-#define map_bankwidth_is_large(map) (0)
-#define map_words(map) (0)
-#define MAX_MAP_BANKWIDTH 1
-#endif
-
-static inline int map_bankwidth_supported(int w)
-{
- switch (w) {
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
- case 1:
-#endif
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_2
- case 2:
-#endif
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_4
- case 4:
-#endif
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_8
- case 8:
-#endif
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_16
- case 16:
-#endif
-#ifdef CONFIG_MTD_MAP_BANK_WIDTH_32
- case 32:
-#endif
- return 1;
-
- default:
- return 0;
- }
-}
-
-#define MAX_MAP_LONGS ( ((MAX_MAP_BANKWIDTH*8) + BITS_PER_LONG - 1) / BITS_PER_LONG )
-
-typedef union {
- unsigned long x[MAX_MAP_LONGS];
-} map_word;
-
-/* The map stuff is very simple. You fill in your struct map_info with
- a handful of routines for accessing the device, making sure they handle
- paging etc. correctly if your device needs it. Then you pass it off
- to a chip probe routine -- either JEDEC or CFI probe or both -- via
- do_map_probe(). If a chip is recognised, the probe code will invoke the
- appropriate chip driver (if present) and return a struct mtd_info.
- At which point, you fill in the mtd->module with your own module
- address, and register it with the MTD core code. Or you could partition
- it and register the partitions instead, or keep it for your own private
- use; whatever.
-
- The mtd->priv field will point to the struct map_info, and any further
- private data required by the chip driver is linked from the
- mtd->priv->fldrv_priv field. This allows the map driver to get at
- the destructor function map->fldrv_destroy() when it's tired
- of living.
-*/
-
-struct map_info {
- const char *name;
- unsigned long size;
- resource_size_t phys;
-#define NO_XIP (-1UL)
-
- void __iomem *virt;
- void *cached;
-
- int swap; /* this mapping's byte-swapping requirement */
- int bankwidth; /* in octets. This isn't necessarily the width
- of actual bus cycles -- it's the repeat interval
- in bytes, before you are talking to the first chip again.
- */
-
-#ifdef CONFIG_MTD_COMPLEX_MAPPINGS
- map_word (*read)(struct map_info *, unsigned long);
- void (*copy_from)(struct map_info *, void *, unsigned long, ssize_t);
-
- void (*write)(struct map_info *, const map_word, unsigned long);
- void (*copy_to)(struct map_info *, unsigned long, const void *, ssize_t);
-
- /* We can perhaps put in 'point' and 'unpoint' methods, if we really
- want to enable XIP for non-linear mappings. Not yet though. */
-#endif
- /* It's possible for the map driver to use cached memory in its
- copy_from implementation (and _only_ with copy_from). However,
- when the chip driver knows some flash area has changed contents,
- it will signal it to the map driver through this routine to let
- the map driver invalidate the corresponding cache as needed.
- If there is no cache to care about this can be set to NULL. */
- void (*inval_cache)(struct map_info *, unsigned long, ssize_t);
-
- /* set_vpp() must handle being reentered -- enable, enable, disable
- must leave it enabled. */
- void (*set_vpp)(struct map_info *, int);
-
- unsigned long pfow_base;
- unsigned long map_priv_1;
- unsigned long map_priv_2;
- void *fldrv_priv;
- struct mtd_chip_driver *fldrv;
-};
-
-struct mtd_chip_driver {
- struct mtd_info *(*probe)(struct map_info *map);
- void (*destroy)(struct mtd_info *);
- struct module *module;
- char *name;
- struct list_head list;
-};
-
-void register_mtd_chip_driver(struct mtd_chip_driver *);
-void unregister_mtd_chip_driver(struct mtd_chip_driver *);
-
-struct mtd_info *do_map_probe(const char *name, struct map_info *map);
-void map_destroy(struct mtd_info *mtd);
-
-#define ENABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 1); } while(0)
-#define DISABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 0); } while(0)
-
-#define INVALIDATE_CACHED_RANGE(map, from, size) \
- do { if(map->inval_cache) map->inval_cache(map, from, size); } while(0)
-
-
-static inline int map_word_equal(struct map_info *map, map_word val1, map_word val2)
-{
- int i;
- for (i=0; i<map_words(map); i++) {
- if (val1.x[i] != val2.x[i])
- return 0;
- }
- return 1;
-}
-
-static inline map_word map_word_and(struct map_info *map, map_word val1, map_word val2)
-{
- map_word r;
- int i;
-
- for (i=0; i<map_words(map); i++) {
- r.x[i] = val1.x[i] & val2.x[i];
- }
- return r;
-}
-
-static inline map_word map_word_clr(struct map_info *map, map_word val1, map_word val2)
-{
- map_word r;
- int i;
-
- for (i=0; i<map_words(map); i++) {
- r.x[i] = val1.x[i] & ~val2.x[i];
- }
- return r;
-}
-
-static inline map_word map_word_or(struct map_info *map, map_word val1, map_word val2)
-{
- map_word r;
- int i;
-
- for (i=0; i<map_words(map); i++) {
- r.x[i] = val1.x[i] | val2.x[i];
- }
- return r;
-}
-
-#define map_word_andequal(m, a, b, z) map_word_equal(m, z, map_word_and(m, a, b))
-
-static inline int map_word_bitsset(struct map_info *map, map_word val1, map_word val2)
-{
- int i;
-
- for (i=0; i<map_words(map); i++) {
- if (val1.x[i] & val2.x[i])
- return 1;
- }
- return 0;
-}
-
-static inline map_word map_word_load(struct map_info *map, const void *ptr)
-{
- map_word r;
-
- if (map_bankwidth_is_1(map))
- r.x[0] = *(unsigned char *)ptr;
- else if (map_bankwidth_is_2(map))
- r.x[0] = get_unaligned((uint16_t *)ptr);
- else if (map_bankwidth_is_4(map))
- r.x[0] = get_unaligned((uint32_t *)ptr);
-#if BITS_PER_LONG >= 64
- else if (map_bankwidth_is_8(map))
- r.x[0] = get_unaligned((uint64_t *)ptr);
-#endif
- else if (map_bankwidth_is_large(map))
- memcpy(r.x, ptr, map->bankwidth);
-
- return r;
-}
-
-static inline map_word map_word_load_partial(struct map_info *map, map_word orig, const unsigned char *buf, int start, int len)
-{
- int i;
-
- if (map_bankwidth_is_large(map)) {
- char *dest = (char *)&orig;
- memcpy(dest+start, buf, len);
- } else {
- for (i=start; i < start+len; i++) {
- int bitpos;
-#ifdef __LITTLE_ENDIAN
- bitpos = i*8;
-#else /* __BIG_ENDIAN */
- bitpos = (map_bankwidth(map)-1-i)*8;
-#endif
- orig.x[0] &= ~(0xff << bitpos);
- orig.x[0] |= buf[i-start] << bitpos;
- }
- }
- return orig;
-}
-
-#if BITS_PER_LONG < 64
-#define MAP_FF_LIMIT 4
-#else
-#define MAP_FF_LIMIT 8
-#endif
-
-static inline map_word map_word_ff(struct map_info *map)
-{
- map_word r;
- int i;
-
- if (map_bankwidth(map) < MAP_FF_LIMIT) {
- int bw = 8 * map_bankwidth(map);
- r.x[0] = (1 << bw) - 1;
- } else {
- for (i=0; i<map_words(map); i++)
- r.x[i] = ~0UL;
- }
- return r;
-}
-
-static inline map_word inline_map_read(struct map_info *map, unsigned long ofs)
-{
- map_word r;
-
- if (map_bankwidth_is_1(map))
- r.x[0] = __raw_readb(map->virt + ofs);
- else if (map_bankwidth_is_2(map))
- r.x[0] = __raw_readw(map->virt + ofs);
- else if (map_bankwidth_is_4(map))
- r.x[0] = __raw_readl(map->virt + ofs);
-#if BITS_PER_LONG >= 64
- else if (map_bankwidth_is_8(map))
- r.x[0] = __raw_readq(map->virt + ofs);
-#endif
- else if (map_bankwidth_is_large(map))
- memcpy_fromio(r.x, map->virt+ofs, map->bankwidth);
- else
- BUG();
-
- return r;
-}
-
-static inline void inline_map_write(struct map_info *map, const map_word datum, unsigned long ofs)
-{
- if (map_bankwidth_is_1(map))
- __raw_writeb(datum.x[0], map->virt + ofs);
- else if (map_bankwidth_is_2(map))
- __raw_writew(datum.x[0], map->virt + ofs);
- else if (map_bankwidth_is_4(map))
- __raw_writel(datum.x[0], map->virt + ofs);
-#if BITS_PER_LONG >= 64
- else if (map_bankwidth_is_8(map))
- __raw_writeq(datum.x[0], map->virt + ofs);
-#endif
- else if (map_bankwidth_is_large(map))
- memcpy_toio(map->virt+ofs, datum.x, map->bankwidth);
- mb();
-}
-
-static inline void inline_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-{
- if (map->cached)
- memcpy(to, (char *)map->cached + from, len);
- else
- memcpy_fromio(to, map->virt + from, len);
-}
-
-static inline void inline_map_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-{
- memcpy_toio(map->virt + to, from, len);
-}
-
-#ifdef CONFIG_MTD_COMPLEX_MAPPINGS
-#define map_read(map, ofs) (map)->read(map, ofs)
-#define map_copy_from(map, to, from, len) (map)->copy_from(map, to, from, len)
-#define map_write(map, datum, ofs) (map)->write(map, datum, ofs)
-#define map_copy_to(map, to, from, len) (map)->copy_to(map, to, from, len)
-
-extern void simple_map_init(struct map_info *);
-#define map_is_linear(map) (map->phys != NO_XIP)
-
-#else
-#define map_read(map, ofs) inline_map_read(map, ofs)
-#define map_copy_from(map, to, from, len) inline_map_copy_from(map, to, from, len)
-#define map_write(map, datum, ofs) inline_map_write(map, datum, ofs)
-#define map_copy_to(map, to, from, len) inline_map_copy_to(map, to, from, len)
-
-
-#define simple_map_init(map) BUG_ON(!map_bankwidth_supported((map)->bankwidth))
-#define map_is_linear(map) ({ (void)(map); 1; })
-
-#endif /* !CONFIG_MTD_COMPLEX_MAPPINGS */
-
-#endif /* __LINUX_MTD_MAP_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/mtd.h b/ANDROID_3.4.5/include/linux/mtd/mtd.h
deleted file mode 100644
index 80affde5..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/mtd.h
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org> et al.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_MTD_H__
-#define __MTD_MTD_H__
-
-#include <linux/types.h>
-#include <linux/uio.h>
-#include <linux/notifier.h>
-#include <linux/device.h>
-
-#include <mtd/mtd-abi.h>
-
-#include <asm/div64.h>
-
-#define MTD_CHAR_MAJOR 90
-#define MTD_BLOCK_MAJOR 31
-#define MAX_MTD_DEVICES 32
-
-#define MTD_ERASE_PENDING 0x01
-#define MTD_ERASING 0x02
-#define MTD_ERASE_SUSPEND 0x04
-#define MTD_ERASE_DONE 0x08
-#define MTD_ERASE_FAILED 0x10
-
-#define MTD_FAIL_ADDR_UNKNOWN -1LL
-
-/*
- * If the erase fails, fail_addr might indicate exactly which block failed. If
- * fail_addr = MTD_FAIL_ADDR_UNKNOWN, the failure was not at the device level
- * or was not specific to any particular block.
- */
-struct erase_info {
- struct mtd_info *mtd;
- uint64_t addr;
- uint64_t len;
- uint64_t fail_addr;
- u_long time;
- u_long retries;
- unsigned dev;
- unsigned cell;
- void (*callback) (struct erase_info *self);
- u_long priv;
- u_char state;
- struct erase_info *next;
-};
-
-struct mtd_erase_region_info {
- uint64_t offset; /* At which this region starts, from the beginning of the MTD */
- uint32_t erasesize; /* For this region */
- uint32_t numblocks; /* Number of blocks of erasesize in this region */
- unsigned long *lockmap; /* If keeping bitmap of locks */
-};
-
-/**
- * struct mtd_oob_ops - oob operation operands
- * @mode: operation mode
- *
- * @len: number of data bytes to write/read
- *
- * @retlen: number of data bytes written/read
- *
- * @ooblen: number of oob bytes to write/read
- * @oobretlen: number of oob bytes written/read
- * @ooboffs: offset of oob data in the oob area (only relevant when
- * mode = MTD_OPS_PLACE_OOB or MTD_OPS_RAW)
- * @datbuf: data buffer - if NULL only oob data are read/written
- * @oobbuf: oob data buffer
- *
- * Note, it is allowed to read more than one OOB area at one go, but not write.
- * The interface assumes that the OOB write requests program only one page's
- * OOB area.
- */
-struct mtd_oob_ops {
- unsigned int mode;
- size_t len;
- size_t retlen;
- size_t ooblen;
- size_t oobretlen;
- uint32_t ooboffs;
- uint8_t *datbuf;
- uint8_t *oobbuf;
-};
-
-#define MTD_MAX_OOBFREE_ENTRIES_LARGE 32
-#define MTD_MAX_ECCPOS_ENTRIES_LARGE 448
-/*
- * Internal ECC layout control structure. For historical reasons, there is a
- * similar, smaller struct nand_ecclayout_user (in mtd-abi.h) that is retained
- * for export to user-space via the ECCGETLAYOUT ioctl.
- * nand_ecclayout should be expandable in the future simply by the above macros.
- */
-struct nand_ecclayout {
- __u32 eccbytes;
- __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES_LARGE];
- __u32 oobavail;
- struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES_LARGE];
-};
-
-struct module; /* only needed for owner field in mtd_info */
-
-struct mtd_info {
- u_char type;
- uint32_t flags;
- uint64_t size; // Total size of the MTD
-
- /* "Major" erase size for the device. Naïve users may take this
- * to be the only erase size available, or may use the more detailed
- * information below if they desire
- */
- uint32_t erasesize;
- /* Minimal writable flash unit size. In case of NOR flash it is 1 (even
- * though individual bits can be cleared), in case of NAND flash it is
- * one NAND page (or half, or one-fourths of it), in case of ECC-ed NOR
- * it is of ECC block size, etc. It is illegal to have writesize = 0.
- * Any driver registering a struct mtd_info must ensure a writesize of
- * 1 or larger.
- */
- uint32_t writesize;
-
- /*
- * Size of the write buffer used by the MTD. MTD devices having a write
- * buffer can write multiple writesize chunks at a time. E.g. while
- * writing 4 * writesize bytes to a device with 2 * writesize bytes
- * buffer the MTD driver can (but doesn't have to) do 2 writesize
- * operations, but not 4. Currently, all NANDs have writebufsize
- * equivalent to writesize (NAND page size). Some NOR flashes do have
- * writebufsize greater than writesize.
- */
- uint32_t writebufsize;
-
- uint32_t oobsize; // Amount of OOB data per block (e.g. 16)
- uint32_t oobavail; // Available OOB bytes per block
-
- uint32_t realerasesize; //dan_multi add for multi plane access
- uint32_t realwritesize;
- uint32_t realoobsize;
- int planenum;
-
- /*
- * If erasesize is a power of 2 then the shift is stored in
- * erasesize_shift otherwise erasesize_shift is zero. Ditto writesize.
- */
- unsigned int erasesize_shift;
- unsigned int writesize_shift;
- /* Masks based on erasesize_shift and writesize_shift */
- unsigned int erasesize_mask;
- unsigned int writesize_mask;
-
- // Kernel-only stuff starts here.
- const char *name;
- int index;
-
- /* ECC layout structure pointer - read only! */
- struct nand_ecclayout *ecclayout;
-
- /* max number of correctible bit errors per writesize */
- unsigned int ecc_strength;
-
- /* Data for variable erase regions. If numeraseregions is zero,
- * it means that the whole device has erasesize as given above.
- */
- int numeraseregions;
- struct mtd_erase_region_info *eraseregions;
-
- /*
- * Do not call via these pointers, use corresponding mtd_*()
- * wrappers instead.
- */
- int (*_erase) (struct mtd_info *mtd, struct erase_info *instr);
- int (*_point) (struct mtd_info *mtd, loff_t from, size_t len,
- size_t *retlen, void **virt, resource_size_t *phys);
- int (*_unpoint) (struct mtd_info *mtd, loff_t from, size_t len);
- unsigned long (*_get_unmapped_area) (struct mtd_info *mtd,
- unsigned long len,
- unsigned long offset,
- unsigned long flags);
- int (*_read) (struct mtd_info *mtd, loff_t from, size_t len,
- size_t *retlen, u_char *buf);
- int (*_write) (struct mtd_info *mtd, loff_t to, size_t len,
- size_t *retlen, const u_char *buf);
- int (*_panic_write) (struct mtd_info *mtd, loff_t to, size_t len,
- size_t *retlen, const u_char *buf);
- int (*_read_oob) (struct mtd_info *mtd, loff_t from,
- struct mtd_oob_ops *ops);
- int (*read_bbinfo_facmk) (struct mtd_info *mtd, loff_t from,
- struct mtd_oob_ops *ops); //Vincent 20090526
- int (*_write_oob) (struct mtd_info *mtd, loff_t to,
- struct mtd_oob_ops *ops);
- int (*_get_fact_prot_info) (struct mtd_info *mtd, struct otp_info *buf,
- size_t len);
- int (*get_para) (struct mtd_info *mtd, int chip);
- int (*_read_fact_prot_reg) (struct mtd_info *mtd, loff_t from,
- size_t len, size_t *retlen, u_char *buf);
- int (*_get_user_prot_info) (struct mtd_info *mtd, struct otp_info *buf,
- size_t len);
- int (*_read_user_prot_reg) (struct mtd_info *mtd, loff_t from,
- size_t len, size_t *retlen, u_char *buf);
- int (*_write_user_prot_reg) (struct mtd_info *mtd, loff_t to,
- size_t len, size_t *retlen, u_char *buf);
- int (*_lock_user_prot_reg) (struct mtd_info *mtd, loff_t from,
- size_t len);
- int (*_writev) (struct mtd_info *mtd, const struct kvec *vecs,
- unsigned long count, loff_t to, size_t *retlen);
- void (*_sync) (struct mtd_info *mtd);
- int (*_lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
- int (*_unlock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
- int (*_is_locked) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
- int (*_block_isbad) (struct mtd_info *mtd, loff_t ofs);
- int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
- int (*_suspend) (struct mtd_info *mtd);
- void (*_resume) (struct mtd_info *mtd);
- /*
- * If the driver is something smart, like UBI, it may need to maintain
- * its own reference counting. The below functions are only for driver.
- */
- int (*_get_device) (struct mtd_info *mtd);
- void (*_put_device) (struct mtd_info *mtd);
-
- /* Backing device capabilities for this device
- * - provides mmap capabilities
- */
- struct backing_dev_info *backing_dev_info;
-
- struct notifier_block reboot_notifier; /* default mode before reboot */
-
- /* ECC status information */
- struct mtd_ecc_stats ecc_stats;
- /* Subpage shift (NAND) */
- int subpage_sft;
-
- void *priv;
-
- struct module *owner;
- struct device dev;
- int usecount;
- int blkcnt;
- int pagecnt;
- int dwECCBitNum;
- int dwRetry;
- int dwRdmz;
- int dwDDR;
- int id;
- int id2;
- unsigned int spec_clk;
- int spec_tadl;
- int bbt_sw_rdmz;
- uint32_t pageSizek;
- int ecc_err_cnt;
- int ecc_err_level;
-};
-
-int mtd_erase(struct mtd_info *mtd, struct erase_info *instr);
-int mtd_point(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
- void **virt, resource_size_t *phys);
-int mtd_unpoint(struct mtd_info *mtd, loff_t from, size_t len);
-unsigned long mtd_get_unmapped_area(struct mtd_info *mtd, unsigned long len,
- unsigned long offset, unsigned long flags);
-int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
- u_char *buf);
-int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
- const u_char *buf);
-int mtd_panic_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
- const u_char *buf);
-
-static inline int mtd_read_oob(struct mtd_info *mtd, loff_t from,
- struct mtd_oob_ops *ops)
-{
- ops->retlen = ops->oobretlen = 0;
- if (!mtd->_read_oob)
- return -EOPNOTSUPP;
- return mtd->_read_oob(mtd, from, ops);
-}
-
-static inline int mtd_write_oob(struct mtd_info *mtd, loff_t to,
- struct mtd_oob_ops *ops)
-{
- ops->retlen = ops->oobretlen = 0;
- if (!mtd->_write_oob)
- return -EOPNOTSUPP;
- if (!(mtd->flags & MTD_WRITEABLE))
- return -EROFS;
- return mtd->_write_oob(mtd, to, ops);
-}
-
-int mtd_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf,
- size_t len);
-int mtd_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
- size_t *retlen, u_char *buf);
-int mtd_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf,
- size_t len);
-int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
- size_t *retlen, u_char *buf);
-int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
- size_t *retlen, u_char *buf);
-int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
-
-int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
- unsigned long count, loff_t to, size_t *retlen);
-
-static inline void mtd_sync(struct mtd_info *mtd)
-{
- if (mtd->_sync)
- mtd->_sync(mtd);
-}
-
-int mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
-int mtd_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
-int mtd_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len);
-int mtd_block_isbad(struct mtd_info *mtd, loff_t ofs);
-int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs);
-
-static inline int mtd_suspend(struct mtd_info *mtd)
-{
- return mtd->_suspend ? mtd->_suspend(mtd) : 0;
-}
-
-static inline void mtd_resume(struct mtd_info *mtd)
-{
- if (mtd->_resume)
- mtd->_resume(mtd);
-}
-
-static inline uint32_t mtd_div_by_eb(uint64_t sz, struct mtd_info *mtd)
-{
- if (mtd->erasesize_shift)
- return sz >> mtd->erasesize_shift;
- do_div(sz, mtd->erasesize);
- return sz;
-}
-
-static inline uint32_t mtd_mod_by_eb(uint64_t sz, struct mtd_info *mtd)
-{
- if (mtd->erasesize_shift)
- return sz & mtd->erasesize_mask;
- return do_div(sz, mtd->erasesize);
-}
-
-static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd)
-{
- if (mtd->writesize_shift)
- return sz >> mtd->writesize_shift;
- do_div(sz, mtd->writesize);
- return sz;
-}
-
-static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd)
-{
- if (mtd->writesize_shift)
- return sz & mtd->writesize_mask;
- return do_div(sz, mtd->writesize);
-}
-
-static inline int mtd_has_oob(const struct mtd_info *mtd)
-{
- return mtd->_read_oob && mtd->_write_oob;
-}
-
-static inline int mtd_can_have_bb(const struct mtd_info *mtd)
-{
- return !!mtd->_block_isbad;
-}
-
- /* Kernel-side ioctl definitions */
-
-struct mtd_partition;
-struct mtd_part_parser_data;
-extern int add_mtd_device(struct mtd_info *mtd);
-extern int del_mtd_device (struct mtd_info *mtd);
-
-extern int mtd_device_parse_register(struct mtd_info *mtd,
- const char **part_probe_types,
- struct mtd_part_parser_data *parser_data,
- const struct mtd_partition *defparts,
- int defnr_parts);
-#define mtd_device_register(master, parts, nr_parts) \
- mtd_device_parse_register(master, NULL, NULL, parts, nr_parts)
-extern int mtd_device_unregister(struct mtd_info *master);
-extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num);
-extern int __get_mtd_device(struct mtd_info *mtd);
-extern void __put_mtd_device(struct mtd_info *mtd);
-extern struct mtd_info *get_mtd_device_nm(const char *name);
-extern void put_mtd_device(struct mtd_info *mtd);
-typedef int (*SF_FPTR)(int l);
-extern SF_FPTR wmt_sf_prot;
-
-
-struct mtd_notifier {
- void (*add)(struct mtd_info *mtd);
- void (*remove)(struct mtd_info *mtd);
- struct list_head list;
-};
-
-
-extern void register_mtd_user (struct mtd_notifier *new);
-extern int unregister_mtd_user (struct mtd_notifier *old);
-void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size);
-
-void mtd_erase_callback(struct erase_info *instr);
-
-static inline int mtd_is_bitflip(int err) {
- return err == -EUCLEAN;
-}
-
-static inline int mtd_is_eccerr(int err) {
- return err == -EBADMSG;
-}
-
-static inline int mtd_is_bitflip_or_eccerr(int err) {
- return mtd_is_bitflip(err) || mtd_is_eccerr(err);
-}
-
-#endif /* __MTD_MTD_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/mtdram.h b/ANDROID_3.4.5/include/linux/mtd/mtdram.h
deleted file mode 100644
index 68891313..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/mtdram.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef __MTD_MTDRAM_H__
-#define __MTD_MTDRAM_H__
-
-#include <linux/mtd/mtd.h>
-int mtdram_init_device(struct mtd_info *mtd, void *mapped_address,
- unsigned long size, char *name);
-
-#endif /* __MTD_MTDRAM_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/nand-gpio.h b/ANDROID_3.4.5/include/linux/mtd/nand-gpio.h
deleted file mode 100644
index 51534e50..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/nand-gpio.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __LINUX_MTD_NAND_GPIO_H
-#define __LINUX_MTD_NAND_GPIO_H
-
-#include <linux/mtd/nand.h>
-
-struct gpio_nand_platdata {
- int gpio_nce;
- int gpio_nwp;
- int gpio_cle;
- int gpio_ale;
- int gpio_rdy;
- void (*adjust_parts)(struct gpio_nand_platdata *, size_t);
- struct mtd_partition *parts;
- unsigned int num_parts;
- unsigned int options;
- int chip_delay;
-};
-
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/nand.h b/ANDROID_3.4.5/include/linux/mtd/nand.h
deleted file mode 100644
index 19eb23c1..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/nand.h
+++ /dev/null
@@ -1,828 +0,0 @@
-/*
- * linux/include/linux/mtd/nand.h
- *
- * Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org>
- * Steven J. Hill <sjhill@realitydiluted.com>
- * Thomas Gleixner <tglx@linutronix.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Info:
- * Contains standard defines and IDs for NAND flash devices
- *
- * Changelog:
- * See git changelog.
- */
-#ifndef __LINUX_MTD_NAND_H
-#define __LINUX_MTD_NAND_H
-
-#include <linux/wait.h>
-#include <linux/spinlock.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/flashchip.h>
-#include <linux/mtd/bbm.h>
-
-struct mtd_info;
-struct nand_flash_dev;
-/* Scan and identify a NAND device */
-extern int nand_scan(struct mtd_info *mtd, int max_chips);
-/*
- * Separate phases of nand_scan(), allowing board driver to intervene
- * and override command or ECC setup according to flash type.
- */
-extern int nand_scan_ident(struct mtd_info *mtd, int max_chips,
- struct nand_flash_dev *table);
-extern int nand_scan_tail(struct mtd_info *mtd);
-
-/* Free resources held by the NAND device */
-extern void nand_release(struct mtd_info *mtd);
-
-/* Internal helper for board drivers which need to override command function */
-extern void nand_wait_ready(struct mtd_info *mtd);
-
-/* locks all blocks present in the device */
-extern int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
-
-/* unlocks specified locked blocks */
-extern int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
-
-/* The maximum number of NAND chips in an array */
-#define NAND_MAX_CHIPS 8
-
-/*
- * This constant declares the max. oobsize / page, which
- * is supported now. If you add a chip with bigger oobsize/page
- * adjust this accordingly.
- */
-#define NAND_MAX_OOBSIZE 2560
-#define NAND_MAX_PAGESIZE 32768
-
-/*
- * Constants for hardware specific CLE/ALE/NCE function
- *
- * These are bits which can be or'ed to set/clear multiple
- * bits in one go.
- */
-/* Select the chip by setting nCE to low */
-#define NAND_NCE 0x01
-/* Select the command latch by setting CLE to high */
-#define NAND_CLE 0x02
-/* Select the address latch by setting ALE to high */
-#define NAND_ALE 0x04
-
-#define NAND_CTRL_CLE (NAND_NCE | NAND_CLE)
-#define NAND_CTRL_ALE (NAND_NCE | NAND_ALE)
-#define NAND_CTRL_CHANGE 0x80
-
-/*
- * Standard NAND flash commands
- */
-#define NAND_CMD_READ0 0
-#define NAND_CMD_READ1 1
-#define NAND_CMD_RNDOUT 5
-#define NAND_CMD_PAGEPROG 0x10
-#define NAND_CMD_READOOB 0x50
-#define NAND_CMD_ERASE1 0x60
-#define NAND_CMD_STATUS 0x70
-#define NAND_CMD_STATUS_MULTI 0x71
-#define NAND_CMD_SEQIN 0x80
-#define NAND_CMD_RNDIN 0x85
-#define NAND_CMD_READID 0x90
-#define NAND_CMD_ERASE2 0xd0
-#define NAND_CMD_ERASE3 0xd1
-#define NAND_CMD_PARAM 0xec
-#define NAND_CMD_RESET 0xff
-#define NAND_CMD_RESET_NO_STATUS_READ 0xFF1
-#define NAND_CMD_HYNIX_RETRY_END 0x38
-
-#define NAND_CMD_LOCK 0x2a
-#define NAND_CMD_UNLOCK1 0x23
-#define NAND_CMD_UNLOCK2 0x24
-
-/* Extended commands for large page devices */
-#define NAND_CMD_READSTART 0x30
-#define NAND_CMD_RNDOUTSTART 0xE0
-#define NAND_CMD_CACHEDPROG 0x15
-
-/* Extended commands for AG-AND device */
-/*
- * Note: the command for NAND_CMD_DEPLETE1 is really 0x00 but
- * there is no way to distinguish that from NAND_CMD_READ0
- * until the remaining sequence of commands has been completed
- * so add a high order bit and mask it off in the command.
- */
-#define NAND_CMD_DEPLETE1 0x100
-#define NAND_CMD_DEPLETE2 0x38
-#define NAND_CMD_STATUS_MULTI 0x71
-#define NAND_CMD_STATUS_ERROR 0x72
-/* multi-bank error status (banks 0-3) */
-#define NAND_CMD_STATUS_ERROR0 0x73
-#define NAND_CMD_STATUS_ERROR1 0x74
-#define NAND_CMD_STATUS_ERROR2 0x75
-#define NAND_CMD_STATUS_ERROR3 0x76
-#define NAND_CMD_STATUS_RESET 0x7f
-#define NAND_CMD_STATUS_CLEAR 0xff
-
-#define MULTI_READ_1CYCLE 0x200
-#define MULTI_READ_2CYCLE 0x201
-#define MULTI_COPY_1CYCLE 0x202
-#define MULTI_COPY_2CYCLE 0x203
-#define MULTI_COPY_3CYCLE 0x204
-#define COPY_BACK_1CYCLE 0x205
-#define COPY_BACK_2CYCLE 0x206
-
-
-/*
- * Support Nand special commands
- */
-#define CACHE_READ (1<<0)
-#define CACHE_PROG (1<<1)
-#define COPY_BACK (1<<2)
-#define INTEL_COPY_BACK (1<<3)
-#define RANDOM_INPUT (1<<4)
-#define RANDOM_OUTPUT (1<<5)
-#define PLANE2_READ (1<<6)
-#define PLANE2_PROG (1<<7)
-#define PLANE2_CACHE_READ (1<<8)
-#define PLANE2_CACHE_PROG (1<<9)
-#define PLANE2_COPY_BACK (1<<10)
-#define PLANE2_INTEL_COPY_BACK (1<<11)
-#define PLANE2_RANDOM_OUTPUT (1<<12)
-#define PLANE2_ERASE (1<<13)
-
-#define PLANE4_READ (1<<16)
-#define PLANE4_PROG (1<<17)
-#define PLANE4_CACHE_READ (1<<18)
-#define PLANE4_CACHE_PROG (1<<19)
-#define PLANE4_COPY_BACK (1<<20)
-#define PLANE4_INTEL_COPY_BACK (1<<21)
-#define PLANE4_RANDOM_OUTPUT (1<<22)
-#define PLANE4_ERASE (1<<23)
-
-
-#define NAND_CMD_NONE -1
-
-/* Status bits */
-#define NAND_STATUS_FAIL 0x01
-#define NAND_STATUS_FAIL_N1 0x02
-#define NAND_STATUS_TRUE_READY 0x20
-#define NAND_STATUS_READY 0x40
-#define NAND_STATUS_WP 0x80
-
-/*
- * Constants for ECC_MODES
- */
-typedef enum {
- NAND_ECC_NONE,
- NAND_ECC_SOFT,
- NAND_ECC_HW,
- NAND_ECC_HW_SYNDROME,
- NAND_ECC_HW_OOB_FIRST,
- NAND_ECC_SOFT_BCH,
-} nand_ecc_modes_t;
-
-/*
- * Constants for Hardware ECC
- */
-/* Reset Hardware ECC for read */
-#define NAND_ECC_READ 0
-/* Reset Hardware ECC for write */
-#define NAND_ECC_WRITE 1
-/* Enable Hardware ECC before syndrome is read back from flash */
-#define NAND_ECC_READSYN 2
-
-/* Bit mask for flags passed to do_nand_read_ecc */
-#define NAND_GET_DEVICE 0x80
-
-
-/*
- * Option constants for bizarre disfunctionality and real
- * features.
- */
-/* Chip can not auto increment pages */
-#define NAND_NO_AUTOINCR 0x00000001
-/* Buswidth is 16 bit */
-#define NAND_BUSWIDTH_16 0x00000002
-/* Device supports partial programming without padding */
-#define NAND_NO_PADDING 0x00000004
-/* Chip has cache program function */
-#define NAND_CACHEPRG 0x00000008
-/* Chip has copy back function */
-#define NAND_COPYBACK 0x00000010
-/*
- * AND Chip which has 4 banks and a confusing page / block
- * assignment. See Renesas datasheet for further information.
- */
-#define NAND_IS_AND 0x00000020
-/*
- * Chip has a array of 4 pages which can be read without
- * additional ready /busy waits.
- */
-#define NAND_4PAGE_ARRAY 0x00000040
-/*
- * Chip requires that BBT is periodically rewritten to prevent
- * bits from adjacent blocks from 'leaking' in altering data.
- * This happens with the Renesas AG-AND chips, possibly others.
- */
-#define BBT_AUTO_REFRESH 0x00000080
-/*
- * Chip does not require ready check on read. True
- * for all large page devices, as they do not support
- * autoincrement.
- */
-#define NAND_NO_READRDY 0x00000100
-/* Chip does not allow subpage writes */
-#define NAND_NO_SUBPAGE_WRITE 0x00000200
-
-/* Device is one of 'new' xD cards that expose fake nand command set */
-#define NAND_BROKEN_XD 0x00000400
-
-/* Device behaves just like nand, but is readonly */
-#define NAND_ROM 0x00000800
-
-/* Options valid for Samsung large page devices */
-#define NAND_SAMSUNG_LP_OPTIONS \
- (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK)
-
-/* Macros to identify the above */
-#define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR))
-#define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING))
-#define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG))
-#define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK))
-/* Large page NAND with SOFT_ECC should support subpage reads */
-#define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT) \
- && (chip->page_shift > 9))
-
-/* Mask to zero out the chip options, which come from the id table */
-#define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR)
-
-/* Non chip related options */
-/* This option skips the bbt scan during initialization. */
-#define NAND_SKIP_BBTSCAN 0x00010000
-/*
- * This option is defined if the board driver allocates its own buffers
- * (e.g. because it needs them DMA-coherent).
- */
-#define NAND_OWN_BUFFERS 0x00020000
-/* Chip may not exist, so silence any errors in scan */
-#define NAND_SCAN_SILENT_NODEV 0x00040000
-
-/* Options set by nand scan */
-/* Nand scan has allocated controller struct */
-#define NAND_CONTROLLER_ALLOC 0x80000000
-
-/* Cell info constants */
-#define NAND_CI_CHIPNR_MSK 0x03
-#define NAND_CI_CELLTYPE_MSK 0x0C
-
-/* Keep gcc happy */
-struct nand_chip;
-
-struct nand_onfi_params {
- /* rev info and features block */
- /* 'O' 'N' 'F' 'I' */
- u8 sig[4];
- __le16 revision;
- __le16 features;
- __le16 opt_cmd;
- u8 reserved[22];
-
- /* manufacturer information block */
- char manufacturer[12];
- char model[20];
- u8 jedec_id;
- __le16 date_code;
- u8 reserved2[13];
-
- /* memory organization block */
- __le32 byte_per_page;
- __le16 spare_bytes_per_page;
- __le32 data_bytes_per_ppage;
- __le16 spare_bytes_per_ppage;
- __le32 pages_per_block;
- __le32 blocks_per_lun;
- u8 lun_count;
- u8 addr_cycles;
- u8 bits_per_cell;
- __le16 bb_per_lun;
- __le16 block_endurance;
- u8 guaranteed_good_blocks;
- __le16 guaranteed_block_endurance;
- u8 programs_per_page;
- u8 ppage_attr;
- u8 ecc_bits;
- u8 interleaved_bits;
- u8 interleaved_ops;
- u8 reserved3[13];
-
- /* electrical parameter block */
- u8 io_pin_capacitance_max;
- __le16 async_timing_mode;
- __le16 program_cache_timing_mode;
- __le16 t_prog;
- __le16 t_bers;
- __le16 t_r;
- __le16 t_ccs;
- __le16 src_sync_timing_mode;
- __le16 src_ssync_features;
- __le16 clk_pin_capacitance_typ;
- __le16 io_pin_capacitance_typ;
- __le16 input_pin_capacitance_typ;
- u8 input_pin_capacitance_max;
- u8 driver_strenght_support;
- __le16 t_int_r;
- __le16 t_ald;
- u8 reserved4[7];
-
- /* vendor */
- u8 reserved5[90];
-
- __le16 crc;
-} __attribute__((packed));
-
-#define ONFI_CRC_BASE 0x4F4E
-
-/**
- * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independent devices
- * @lock: protection lock
- * @active: the mtd device which holds the controller currently
- * @wq: wait queue to sleep on if a NAND operation is in
- * progress used instead of the per chip wait queue
- * when a hw controller is available.
- */
-struct nand_hw_control {
- spinlock_t lock;
- struct nand_chip *active;
- wait_queue_head_t wq;
-};
-
-/**
- * struct nand_ecc_ctrl - Control structure for ECC
- * @mode: ECC mode
- * @steps: number of ECC steps per page
- * @size: data bytes per ECC step
- * @bytes: ECC bytes per step
- * @strength: max number of correctible bits per ECC step
- * @total: total number of ECC bytes per page
- * @prepad: padding information for syndrome based ECC generators
- * @postpad: padding information for syndrome based ECC generators
- * @layout: ECC layout control struct pointer
- * @priv: pointer to private ECC control data
- * @hwctl: function to control hardware ECC generator. Must only
- * be provided if an hardware ECC is available
- * @calculate: function for ECC calculation or readback from ECC hardware
- * @correct: function for ECC correction, matching to ECC generator (sw/hw)
- * @read_page_raw: function to read a raw page without ECC
- * @write_page_raw: function to write a raw page without ECC
- * @read_page: function to read a page according to the ECC generator
- * requirements.
- * @read_subpage: function to read parts of the page covered by ECC.
- * @write_page: function to write a page according to the ECC generator
- * requirements.
- * @write_oob_raw: function to write chip OOB data without ECC
- * @read_oob_raw: function to read chip OOB data without ECC
- * @read_oob: function to read chip OOB data
- * @write_oob: function to write chip OOB data
- */
-struct nand_ecc_ctrl {
- nand_ecc_modes_t mode;
- int steps;
- int size;
- int bytes;
- int total;
- int strength;
- int prepad;
- int postpad;
- struct nand_ecclayout *layout;
- void *priv;
- void (*hwctl)(struct mtd_info *mtd, int mode);
- int (*calculate)(struct mtd_info *mtd, const uint8_t *dat,
- uint8_t *ecc_code);
- int (*correct)(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc,
- uint8_t *calc_ecc);
- int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf, int page);
- void (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
- const uint8_t *buf);
- int (*read_page)(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf, int page);
- int (*read_subpage)(struct mtd_info *mtd, struct nand_chip *chip,
- uint32_t offs, uint32_t len, uint8_t *buf);
- void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
- const uint8_t *buf);
- int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
- int page);
- int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
- int page, int sndcmd);
- int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page,
- int sndcmd);
- int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip,
- int page);
- int (*read_bb_oob)(struct mtd_info *mtd,
- struct nand_chip *chip,
- int page,
- int sndcmd);
-};
-
-/**
- * struct nand_buffers - buffer structure for read/write
- * @ecccalc: buffer for calculated ECC
- * @ecccode: buffer for ECC read from flash
- * @databuf: buffer for data - dynamically sized
- *
- * Do not change the order of buffers. databuf and oobrbuf must be in
- * consecutive order.
- */
-struct nand_buffers {
- uint8_t ecccalc[NAND_MAX_OOBSIZE];
- uint8_t ecccode[NAND_MAX_OOBSIZE];
- uint8_t databuf[NAND_MAX_PAGESIZE + NAND_MAX_OOBSIZE];
-};
-
-/**
- * struct nand_chip - NAND Private Flash Chip Data
- * @IO_ADDR_R: [BOARDSPECIFIC] address to read the 8 I/O lines of the
- * flash device
- * @IO_ADDR_W: [BOARDSPECIFIC] address to write the 8 I/O lines of the
- * flash device.
- * @read_byte: [REPLACEABLE] read one byte from the chip
- * @read_word: [REPLACEABLE] read one word from the chip
- * @write_buf: [REPLACEABLE] write data from the buffer to the chip
- * @read_buf: [REPLACEABLE] read data from the chip into the buffer
- * @verify_buf: [REPLACEABLE] verify buffer contents against the chip
- * data.
- * @select_chip: [REPLACEABLE] select chip nr
- * @block_bad: [REPLACEABLE] check, if the block is bad
- * @block_markbad: [REPLACEABLE] mark the block bad
- * @cmd_ctrl: [BOARDSPECIFIC] hardwarespecific function for controlling
- * ALE/CLE/nCE. Also used to write command and address
- * @init_size: [BOARDSPECIFIC] hardwarespecific function for setting
- * mtd->oobsize, mtd->writesize and so on.
- * @id_data contains the 8 bytes values of NAND_CMD_READID.
- * Return with the bus width.
- * @dev_ready: [BOARDSPECIFIC] hardwarespecific function for accessing
- * device ready/busy line. If set to NULL no access to
- * ready/busy is available and the ready/busy information
- * is read from the chip status register.
- * @cmdfunc: [REPLACEABLE] hardwarespecific function for writing
- * commands to the chip.
- * @waitfunc: [REPLACEABLE] hardwarespecific function for wait on
- * ready.
- * @ecc: [BOARDSPECIFIC] ECC control structure
- * @buffers: buffer structure for read/write
- * @hwcontrol: platform-specific hardware control structure
- * @erase_cmd: [INTERN] erase command write function, selectable due
- * to AND support.
- * @scan_bbt: [REPLACEABLE] function to scan bad block table
- * @chip_delay: [BOARDSPECIFIC] chip dependent delay for transferring
- * data from array to read regs (tR).
- * @state: [INTERN] the current state of the NAND device
- * @oob_poi: "poison value buffer," used for laying out OOB data
- * before writing
- * @page_shift: [INTERN] number of address bits in a page (column
- * address bits).
- * @phys_erase_shift: [INTERN] number of address bits in a physical eraseblock
- * @bbt_erase_shift: [INTERN] number of address bits in a bbt entry
- * @chip_shift: [INTERN] number of address bits in one chip
- * @options: [BOARDSPECIFIC] various chip options. They can partly
- * be set to inform nand_scan about special functionality.
- * See the defines for further explanation.
- * @bbt_options: [INTERN] bad block specific options. All options used
- * here must come from bbm.h. By default, these options
- * will be copied to the appropriate nand_bbt_descr's.
- * @badblockpos: [INTERN] position of the bad block marker in the oob
- * area.
- * @badblockbits: [INTERN] minimum number of set bits in a good block's
- * bad block marker position; i.e., BBM == 11110111b is
- * not bad when badblockbits == 7
- * @cellinfo: [INTERN] MLC/multichip data from chip ident
- * @numchips: [INTERN] number of physical chips
- * @chipsize: [INTERN] the size of one chip for multichip arrays
- * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1
- * @pagebuf: [INTERN] holds the pagenumber which is currently in
- * data_buf.
- * @subpagesize: [INTERN] holds the subpagesize
- * @onfi_version: [INTERN] holds the chip ONFI version (BCD encoded),
- * non 0 if ONFI supported.
- * @onfi_params: [INTERN] holds the ONFI page parameter when ONFI is
- * supported, 0 otherwise.
- * @ecclayout: [REPLACEABLE] the default ECC placement scheme
- * @bbt: [INTERN] bad block table pointer
- * @bbt_td: [REPLACEABLE] bad block table descriptor for flash
- * lookup.
- * @bbt_md: [REPLACEABLE] bad block table mirror descriptor
- * @badblock_pattern: [REPLACEABLE] bad block scan pattern used for initial
- * bad block scan.
- * @controller: [REPLACEABLE] a pointer to a hardware controller
- * structure which is shared among multiple independent
- * devices.
- * @priv: [OPTIONAL] pointer to private chip data
- * @errstat: [OPTIONAL] hardware specific function to perform
- * additional error status checks (determine if errors are
- * correctable).
- * @write_page: [REPLACEABLE] High-level page write function
- */
-
-struct nand_chip {
- void __iomem *IO_ADDR_R;
- void __iomem *IO_ADDR_W;
-
- uint8_t (*read_byte)(struct mtd_info *mtd);
- u16 (*read_word)(struct mtd_info *mtd);
- void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
- void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
- int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
- void (*select_chip)(struct mtd_info *mtd, int chip);
- int (*block_bad)(struct mtd_info *mtd, loff_t ofs, int getchip);
- int (*block_markbad)(struct mtd_info *mtd, loff_t ofs, int type);
- void (*cmd_ctrl)(struct mtd_info *mtd, int dat, unsigned int ctrl);
- int (*init_size)(struct mtd_info *mtd, struct nand_chip *this,
- u8 *id_data);
- int (*dev_ready)(struct mtd_info *mtd);
- void (*cmdfunc)(struct mtd_info *mtd, unsigned command, int column,
- int page_addr);
- int(*waitfunc)(struct mtd_info *mtd, struct nand_chip *this);
- void (*erase_cmd)(struct mtd_info *mtd, int page);
- int (*scan_bbt)(struct mtd_info *mtd);
- int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state,
- int status, int page);
- int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
- const uint8_t *buf, int page, int cached, int raw);
- int (*get_para)(struct mtd_info *mtd, struct nand_chip *chip);
-
- int chip_delay;
- unsigned int options;
- unsigned int bbt_options;
-
- int page_shift;
- int pagecnt_shift;
- int phys_erase_shift;
- int bbt_erase_shift;
- int chip_shift;
- int numchips;
- uint64_t chipsize;
- int pagemask;
- int pagebuf;
- int subpagesize;
- uint8_t cellinfo;
- int badblockpos;
- int badblockbits;
-
- int onfi_version;
- struct nand_onfi_params onfi_params;
-
- flstate_t state;
-
- uint8_t *oob_poi;
- struct nand_hw_control *controller;
- struct nand_ecclayout *ecclayout;
-
- struct nand_ecc_ctrl ecc;
- struct nand_buffers *buffers;
- struct nand_hw_control hwcontrol;
-
- uint8_t *bbt;
- struct nand_bbt_descr *bbt_td;
- struct nand_bbt_descr *bbt_md;
-
- struct nand_bbt_descr *badblock_pattern;
- struct nand_bbt_descr *retry_pattern;
- int page_offset[2];
- struct nand_read_retry_param *cur_chip;
- int realplanenum;
- int bbt_plane[2];
- int status_plane[2];
-
- void *priv;
-};
-
-/*
- * NAND Flash Manufacturer ID Codes
- */
-#define NAND_MFR_TOSHIBA 0x98
-#define NAND_MFR_SAMSUNG 0xec
-#define NAND_MFR_FUJITSU 0x04
-#define NAND_MFR_NATIONAL 0x8f
-#define NAND_MFR_RENESAS 0x07
-#define NAND_MFR_STMICRO 0x20
-#define NAND_MFR_HYNIX 0xad
-#define NAND_MFR_MICRON 0x2c
-#define NAND_MFR_SANDISK 0x45
-#define NAND_MFR_AMD 0x01
-#define NAND_MFR_INTEL 0x89
-#define NAND_MFR_MXIC 0xc2
-#define NAND_MFR_MIRA 0x92
-#define NAND_MFR_MACRONIX 0xc2
-
-/**
- * struct nand_flash_dev - NAND Flash Device ID Structure
- * @name: Identify the device type
- * @id: device ID code
- * @pagesize: Pagesize in bytes. Either 256 or 512 or 0
- * If the pagesize is 0, then the real pagesize
- * and the eraseize are determined from the
- * extended id bytes in the chip
- * @erasesize: Size of an erase block in the flash device.
- * @chipsize: Total chipsize in Mega Bytes
- * @options: Bitfield to store chip relevant options
- */
-struct nand_flash_dev {
- char *name;
- int id;
- unsigned long pagesize;
- unsigned long chipsize;
- unsigned long erasesize;
- unsigned long options;
-};
-
-#define BOOT_MAGIC_SIZE 0x8
-struct nand_rdtry_param_hdr {
- unsigned char magic[BOOT_MAGIC_SIZE];
- unsigned int nand_id; //nand id
- unsigned int nand_id_5th; //nand 5th id
- unsigned int eslc_reg_cnt; // Enhanced SLC register count.
- unsigned int total_retry_cnt; // total retry count
- unsigned int retry_reg_cnt; // retry register count
- //unsigned char eslc[eslc_reg]; //eslc default data.
- //unsigned char retry_data[total_retry_cnt * retry_reg_cnt]; /* param data */
-};
-//All
-struct nand_read_retry_param {
- char magic[32];
- unsigned int nand_id;
- unsigned int nand_id_5th;
- unsigned int eslc_reg_num;
- unsigned char eslc_offset[32];
- unsigned char eslc_def_value[32];
- unsigned char eslc_set_value[32];
- unsigned int retry_reg_num;
- unsigned char retry_offset[32];
- unsigned char retry_def_value[32];
- unsigned char retry_value[256];
- unsigned int otp_len;
- unsigned char otp_offset[32];
- unsigned char otp_data[32];
- unsigned int total_try_times;
- int cur_try_times;
- int (*set_parameter)(struct mtd_info *mtd, int mode, int def_mode);
- int (*get_parameter)(struct mtd_info *mtd, int mode);
- int (*get_otp_table)(struct mtd_info *mtd, struct nand_chip *chip);
- int retry; //1: in retry mode
-};
-/* #define RETRY_DEBUG */
-
-
-/* DannierChen-2009-10-07 add for new nand flash support list */
-#ifndef DWORD
-#define DWORD unsigned int
-#endif
-#define MAX_PRODUCT_NAME_LENGTH 0x20
-struct WMT_nand_flash_dev {
- DWORD dwFlashID; //composed by 4 bytes of ID. For example:0xADF1801D
- DWORD dwBlockCount; //block count of one chip. For example: 1024
- DWORD dwPageSize; //page size. For example:2048(other value can be 512 or 4096)
- DWORD dwSpareSize; //spare area size. For example:16(almost all kinds of nand is 16)
- DWORD dwBlockSize; //block size = dwPageSize * PageCntPerBlock. For example:131072
- DWORD dwAddressCycle; //address cycle 4 or 5
- DWORD dwBI0Position; //BI0 page postion in block
- DWORD dwBI1Position; //BI1 page postion in block
- DWORD dwBIOffset; //BI offset in page
- DWORD dwDataWidth; //data with X8 or X16
- DWORD dwPageProgramLimit; //chip can program PAGE_PROGRAM_LIMIT times within the same page
- DWORD dwSeqRowReadSupport; //whether support sequential row read, 1 = support 0 = not support
- DWORD dwSeqPageProgram; //chip need sequential page program in a block. 1 = need
- DWORD dwNandType; //MLC or SLC
- DWORD dwECCBitNum; //ECC bit number needed
- DWORD dwRWTimming; //NFC Read Pulse width and Read hold time, write so does. default =0x12101210
- DWORD dwTadl; //NFC write TADL timeing config
- DWORD dwDDR; //NFC support toshia ddr(toggle) mode = 1 not support = 0
- DWORD dwRetry; //NFC Read Retry support = 1 not support = 0
- DWORD dwRdmz; //NFC Randomizer support = 1 not support = 0
- DWORD dwFlashID2; //composed by additional 2 bytes of ID from original 4 bytes.
- DWORD dwSpeedUpCmd; /* supprot speed up nand command ex: 2-plane cache read and so on.. */
- char ProductName[MAX_PRODUCT_NAME_LENGTH]; //product name. for example "HYNIX_NF_HY27UF081G2A"
- unsigned long options;
-};
-/**
- * struct nand_manufacturers - NAND Flash Manufacturer ID Structure
- * @name: Manufacturer name
- * @id: manufacturer ID code of device.
-*/
-struct nand_manufacturers {
- int id;
- char *name;
-};
-
-extern struct WMT_nand_flash_dev WMT_nand_flash_ids[];
-extern struct nand_flash_dev nand_flash_ids[];
-extern struct nand_manufacturers nand_manuf_ids[];
-
-extern int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd);
-extern int nand_update_bbt(struct mtd_info *mtd, loff_t offs);
-extern int nand_default_bbt(struct mtd_info *mtd);
-extern int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt, int allow_readfail);
-extern int nand_isbad_bbt_multi(struct mtd_info *mtd, loff_t offs, int allowbbt, int allow_readfail);
-extern int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
- int allowbbt);
-extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len,
- size_t *retlen, uint8_t *buf);
-extern struct nand_read_retry_param chip_table[];
-extern int hynix_get_parameter(struct mtd_info *mtd, int mode);
-extern int hynix_set_parameter(struct mtd_info *mtd, int mode, int def_mode);
-extern int hynix_get_otp(struct mtd_info *mtd, struct nand_chip *chip);
-extern int toshiba_get_parameter(struct mtd_info *mtd, int mode);
-extern int toshiba_set_parameter(struct mtd_info *mtd, int mode, int def_mode);
-extern int samsung_get_parameter(struct mtd_info *mtd, int mode);
-extern int samsung_set_parameter(struct mtd_info *mtd, int mode, int def_mode);
-extern int sandisk_get_parameter(struct mtd_info *mtd, int mode);
-extern int sandisk_set_parameter(struct mtd_info *mtd, int mode, int def_mode);
-extern int micron_get_parameter(struct mtd_info *mtd, int mode);
-extern int micron_set_parameter(struct mtd_info *mtd, int mode, int def_mode);
-
-
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
-#endif
-#define READ_RETRY_CHIP_NUM ARRAY_SIZE(chip_table)
-#define ESLC_MODE 0
-#define READ_RETRY_MODE 1
-#define TEST_MODE 2
-#define DEFAULT_VALUE 0
-#define ECC_ERROR_VALUE 1
-/**
- * struct platform_nand_chip - chip level device structure
- * @nr_chips: max. number of chips to scan for
- * @chip_offset: chip number offset
- * @nr_partitions: number of partitions pointed to by partitions (or zero)
- * @partitions: mtd partition list
- * @chip_delay: R/B delay value in us
- * @options: Option flags, e.g. 16bit buswidth
- * @bbt_options: BBT option flags, e.g. NAND_BBT_USE_FLASH
- * @ecclayout: ECC layout info structure
- * @part_probe_types: NULL-terminated array of probe types
- */
-struct platform_nand_chip {
- int nr_chips;
- int chip_offset;
- int nr_partitions;
- struct mtd_partition *partitions;
- struct nand_ecclayout *ecclayout;
- int chip_delay;
- unsigned int options;
- unsigned int bbt_options;
- const char **part_probe_types;
-};
-
-/* Keep gcc happy */
-struct platform_device;
-
-/**
- * struct platform_nand_ctrl - controller level device structure
- * @probe: platform specific function to probe/setup hardware
- * @remove: platform specific function to remove/teardown hardware
- * @hwcontrol: platform specific hardware control structure
- * @dev_ready: platform specific function to read ready/busy pin
- * @select_chip: platform specific chip select function
- * @cmd_ctrl: platform specific function for controlling
- * ALE/CLE/nCE. Also used to write command and address
- * @write_buf: platform specific function for write buffer
- * @read_buf: platform specific function for read buffer
- * @priv: private data to transport driver specific settings
- *
- * All fields are optional and depend on the hardware driver requirements
- */
-struct platform_nand_ctrl {
- int (*probe)(struct platform_device *pdev);
- void (*remove)(struct platform_device *pdev);
- void (*hwcontrol)(struct mtd_info *mtd, int cmd);
- int (*dev_ready)(struct mtd_info *mtd);
- void (*select_chip)(struct mtd_info *mtd, int chip);
- void (*cmd_ctrl)(struct mtd_info *mtd, int dat, unsigned int ctrl);
- void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
- void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
- void *priv;
-};
-
-/**
- * struct platform_nand_data - container structure for platform-specific data
- * @chip: chip level chip structure
- * @ctrl: controller level device structure
- */
-struct platform_nand_data {
- struct platform_nand_chip chip;
- struct platform_nand_ctrl ctrl;
-};
-
-/* Some helpers to access the data structures */
-static inline
-struct platform_nand_chip *get_platform_nandchip(struct mtd_info *mtd)
-{
- struct nand_chip *chip = mtd->priv;
-
- return chip->priv;
-}
-
-#endif /* __LINUX_MTD_NAND_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/nand_bch.h b/ANDROID_3.4.5/include/linux/mtd/nand_bch.h
deleted file mode 100644
index 74acf536..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/nand_bch.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright © 2011 Ivan Djelic <ivan.djelic@parrot.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This file is the header for the NAND BCH ECC implementation.
- */
-
-#ifndef __MTD_NAND_BCH_H__
-#define __MTD_NAND_BCH_H__
-
-struct mtd_info;
-struct nand_bch_control;
-
-#if defined(CONFIG_MTD_NAND_ECC_BCH)
-
-static inline int mtd_nand_has_bch(void) { return 1; }
-
-/*
- * Calculate BCH ecc code
- */
-int nand_bch_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
- u_char *ecc_code);
-
-/*
- * Detect and correct bit errors
- */
-int nand_bch_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc,
- u_char *calc_ecc);
-/*
- * Initialize BCH encoder/decoder
- */
-struct nand_bch_control *
-nand_bch_init(struct mtd_info *mtd, unsigned int eccsize,
- unsigned int eccbytes, struct nand_ecclayout **ecclayout);
-/*
- * Release BCH encoder/decoder resources
- */
-void nand_bch_free(struct nand_bch_control *nbc);
-
-#else /* !CONFIG_MTD_NAND_ECC_BCH */
-
-static inline int mtd_nand_has_bch(void) { return 0; }
-
-static inline int
-nand_bch_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
- u_char *ecc_code)
-{
- return -1;
-}
-
-static inline int
-nand_bch_correct_data(struct mtd_info *mtd, unsigned char *buf,
- unsigned char *read_ecc, unsigned char *calc_ecc)
-{
- return -1;
-}
-
-static inline struct nand_bch_control *
-nand_bch_init(struct mtd_info *mtd, unsigned int eccsize,
- unsigned int eccbytes, struct nand_ecclayout **ecclayout)
-{
- return NULL;
-}
-
-static inline void nand_bch_free(struct nand_bch_control *nbc) {}
-
-#endif /* CONFIG_MTD_NAND_ECC_BCH */
-
-#endif /* __MTD_NAND_BCH_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/nand_ecc.h b/ANDROID_3.4.5/include/linux/mtd/nand_ecc.h
deleted file mode 100644
index 4d8406c8..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/nand_ecc.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * drivers/mtd/nand_ecc.h
- *
- * Copyright (C) 2000-2010 Steven J. Hill <sjhill@realitydiluted.com>
- * David Woodhouse <dwmw2@infradead.org>
- * Thomas Gleixner <tglx@linutronix.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This file is the header for the ECC algorithm.
- */
-
-#ifndef __MTD_NAND_ECC_H__
-#define __MTD_NAND_ECC_H__
-
-struct mtd_info;
-
-/*
- * Calculate 3 byte ECC code for eccsize byte block
- */
-void __nand_calculate_ecc(const u_char *dat, unsigned int eccsize,
- u_char *ecc_code);
-
-/*
- * Calculate 3 byte ECC code for 256/512 byte block
- */
-int nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code);
-
-/*
- * Detect and correct a 1 bit error for eccsize byte block
- */
-int __nand_correct_data(u_char *dat, u_char *read_ecc, u_char *calc_ecc,
- unsigned int eccsize);
-
-/*
- * Detect and correct a 1 bit error for 256/512 byte block
- */
-int nand_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc);
-
-#endif /* __MTD_NAND_ECC_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/ndfc.h b/ANDROID_3.4.5/include/linux/mtd/ndfc.h
deleted file mode 100644
index d0558a98..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/ndfc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * linux/include/linux/mtd/ndfc.h
- *
- * Copyright (c) 2006 Thomas Gleixner <tglx@linutronix.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Info:
- * Contains defines, datastructures for ndfc nand controller
- *
- */
-#ifndef __LINUX_MTD_NDFC_H
-#define __LINUX_MTD_NDFC_H
-
-/* NDFC Register definitions */
-#define NDFC_CMD 0x00
-#define NDFC_ALE 0x04
-#define NDFC_DATA 0x08
-#define NDFC_ECC 0x10
-#define NDFC_BCFG0 0x30
-#define NDFC_BCFG1 0x34
-#define NDFC_BCFG2 0x38
-#define NDFC_BCFG3 0x3c
-#define NDFC_CCR 0x40
-#define NDFC_STAT 0x44
-#define NDFC_HWCTL 0x48
-#define NDFC_REVID 0x50
-
-#define NDFC_STAT_IS_READY 0x01000000
-
-#define NDFC_CCR_RESET_CE 0x80000000 /* CE Reset */
-#define NDFC_CCR_RESET_ECC 0x40000000 /* ECC Reset */
-#define NDFC_CCR_RIE 0x20000000 /* Interrupt Enable on Device Rdy */
-#define NDFC_CCR_REN 0x10000000 /* Enable wait for Rdy in LinearR */
-#define NDFC_CCR_ROMEN 0x08000000 /* Enable ROM In LinearR */
-#define NDFC_CCR_ARE 0x04000000 /* Auto-Read Enable */
-#define NDFC_CCR_BS(x) (((x) & 0x3) << 24) /* Select Bank on CE[x] */
-#define NDFC_CCR_BS_MASK 0x03000000 /* Select Bank */
-#define NDFC_CCR_ARAC0 0x00000000 /* 3 Addr, 1 Col 2 Row 512b page */
-#define NDFC_CCR_ARAC1 0x00001000 /* 4 Addr, 1 Col 3 Row 512b page */
-#define NDFC_CCR_ARAC2 0x00002000 /* 4 Addr, 2 Col 2 Row 2K page */
-#define NDFC_CCR_ARAC3 0x00003000 /* 5 Addr, 2 Col 3 Row 2K page */
-#define NDFC_CCR_ARAC_MASK 0x00003000 /* Auto-Read mode Addr Cycles */
-#define NDFC_CCR_RPG 0x0000C000 /* Auto-Read Page */
-#define NDFC_CCR_EBCC 0x00000004 /* EBC Configuration Completed */
-#define NDFC_CCR_DHC 0x00000002 /* Direct Hardware Control Enable */
-
-#define NDFC_BxCFG_EN 0x80000000 /* Bank Enable */
-#define NDFC_BxCFG_CED 0x40000000 /* nCE Style */
-#define NDFC_BxCFG_SZ_MASK 0x08000000 /* Bank Size */
-#define NDFC_BxCFG_SZ_8BIT 0x00000000 /* 8bit */
-#define NDFC_BxCFG_SZ_16BIT 0x08000000 /* 16bit */
-
-#define NDFC_MAX_BANKS 4
-
-struct ndfc_controller_settings {
- uint32_t ccr_settings;
- uint64_t ndfc_erpn;
-};
-
-struct ndfc_chip_settings {
- uint32_t bank_settings;
-};
-
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/nftl.h b/ANDROID_3.4.5/include/linux/mtd/nftl.h
deleted file mode 100644
index b059629e..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/nftl.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __MTD_NFTL_H__
-#define __MTD_NFTL_H__
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/blktrans.h>
-
-#include <mtd/nftl-user.h>
-
-/* these info are used in ReplUnitTable */
-#define BLOCK_NIL 0xffff /* last block of a chain */
-#define BLOCK_FREE 0xfffe /* free block */
-#define BLOCK_NOTEXPLORED 0xfffd /* non explored block, only used during mounting */
-#define BLOCK_RESERVED 0xfffc /* bios block or bad block */
-
-struct NFTLrecord {
- struct mtd_blktrans_dev mbd;
- __u16 MediaUnit, SpareMediaUnit;
- __u32 EraseSize;
- struct NFTLMediaHeader MediaHdr;
- int usecount;
- unsigned char heads;
- unsigned char sectors;
- unsigned short cylinders;
- __u16 numvunits;
- __u16 lastEUN; /* should be suppressed */
- __u16 numfreeEUNs;
- __u16 LastFreeEUN; /* To speed up finding a free EUN */
- int head,sect,cyl;
- __u16 *EUNtable; /* [numvunits]: First EUN for each virtual unit */
- __u16 *ReplUnitTable; /* [numEUNs]: ReplUnitNumber for each */
- unsigned int nb_blocks; /* number of physical blocks */
- unsigned int nb_boot_blocks; /* number of blocks used by the bios */
- struct erase_info instr;
- struct nand_ecclayout oobinfo;
-};
-
-int NFTL_mount(struct NFTLrecord *s);
-int NFTL_formatblock(struct NFTLrecord *s, int block);
-
-int nftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len,
- size_t *retlen, uint8_t *buf);
-int nftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len,
- size_t *retlen, uint8_t *buf);
-
-#ifndef NFTL_MAJOR
-#define NFTL_MAJOR 93
-#endif
-
-#define MAX_NFTLS 16
-#define MAX_SECTORS_PER_UNIT 64
-#define NFTL_PARTN_BITS 4
-
-#endif /* __MTD_NFTL_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/onenand.h b/ANDROID_3.4.5/include/linux/mtd/onenand.h
deleted file mode 100644
index 4596503c..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/onenand.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * linux/include/linux/mtd/onenand.h
- *
- * Copyright © 2005-2009 Samsung Electronics
- * Kyungmin Park <kyungmin.park@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __LINUX_MTD_ONENAND_H
-#define __LINUX_MTD_ONENAND_H
-
-#include <linux/spinlock.h>
-#include <linux/completion.h>
-#include <linux/mtd/flashchip.h>
-#include <linux/mtd/onenand_regs.h>
-#include <linux/mtd/bbm.h>
-
-#define MAX_DIES 2
-#define MAX_BUFFERRAM 2
-
-/* Scan and identify a OneNAND device */
-extern int onenand_scan(struct mtd_info *mtd, int max_chips);
-/* Free resources held by the OneNAND device */
-extern void onenand_release(struct mtd_info *mtd);
-
-/**
- * struct onenand_bufferram - OneNAND BufferRAM Data
- * @blockpage: block & page address in BufferRAM
- */
-struct onenand_bufferram {
- int blockpage;
-};
-
-/**
- * struct onenand_chip - OneNAND Private Flash Chip Data
- * @base: [BOARDSPECIFIC] address to access OneNAND
- * @dies: [INTERN][FLEX-ONENAND] number of dies on chip
- * @boundary: [INTERN][FLEX-ONENAND] Boundary of the dies
- * @diesize: [INTERN][FLEX-ONENAND] Size of the dies
- * @chipsize: [INTERN] the size of one chip for multichip arrays
- * FIXME For Flex-OneNAND, chipsize holds maximum possible
- * device size ie when all blocks are considered MLC
- * @device_id: [INTERN] device ID
- * @density_mask: chip density, used for DDP devices
- * @verstion_id: [INTERN] version ID
- * @options: [BOARDSPECIFIC] various chip options. They can
- * partly be set to inform onenand_scan about
- * @erase_shift: [INTERN] number of address bits in a block
- * @page_shift: [INTERN] number of address bits in a page
- * @page_mask: [INTERN] a page per block mask
- * @writesize: [INTERN] a real page size
- * @bufferram_index: [INTERN] BufferRAM index
- * @bufferram: [INTERN] BufferRAM info
- * @readw: [REPLACEABLE] hardware specific function for read short
- * @writew: [REPLACEABLE] hardware specific function for write short
- * @command: [REPLACEABLE] hardware specific function for writing
- * commands to the chip
- * @wait: [REPLACEABLE] hardware specific function for wait on ready
- * @bbt_wait: [REPLACEABLE] hardware specific function for bbt wait on ready
- * @unlock_all: [REPLACEABLE] hardware specific function for unlock all
- * @read_bufferram: [REPLACEABLE] hardware specific function for BufferRAM Area
- * @write_bufferram: [REPLACEABLE] hardware specific function for BufferRAM Area
- * @read_word: [REPLACEABLE] hardware specific function for read
- * register of OneNAND
- * @write_word: [REPLACEABLE] hardware specific function for write
- * register of OneNAND
- * @mmcontrol: sync burst read function
- * @chip_probe: [REPLACEABLE] hardware specific function for chip probe
- * @block_markbad: function to mark a block as bad
- * @scan_bbt: [REPLACEALBE] hardware specific function for scanning
- * Bad block Table
- * @chip_lock: [INTERN] spinlock used to protect access to this
- * structure and the chip
- * @wq: [INTERN] wait queue to sleep on if a OneNAND
- * operation is in progress
- * @state: [INTERN] the current state of the OneNAND device
- * @page_buf: [INTERN] page main data buffer
- * @oob_buf: [INTERN] page oob data buffer
- * @subpagesize: [INTERN] holds the subpagesize
- * @ecclayout: [REPLACEABLE] the default ecc placement scheme
- * @bbm: [REPLACEABLE] pointer to Bad Block Management
- * @priv: [OPTIONAL] pointer to private chip date
- */
-struct onenand_chip {
- void __iomem *base;
- unsigned dies;
- unsigned boundary[MAX_DIES];
- loff_t diesize[MAX_DIES];
- unsigned int chipsize;
- unsigned int device_id;
- unsigned int version_id;
- unsigned int technology;
- unsigned int density_mask;
- unsigned int options;
-
- unsigned int erase_shift;
- unsigned int page_shift;
- unsigned int page_mask;
- unsigned int writesize;
-
- unsigned int bufferram_index;
- struct onenand_bufferram bufferram[MAX_BUFFERRAM];
-
- int (*command)(struct mtd_info *mtd, int cmd, loff_t address, size_t len);
- int (*wait)(struct mtd_info *mtd, int state);
- int (*bbt_wait)(struct mtd_info *mtd, int state);
- void (*unlock_all)(struct mtd_info *mtd);
- int (*read_bufferram)(struct mtd_info *mtd, int area,
- unsigned char *buffer, int offset, size_t count);
- int (*write_bufferram)(struct mtd_info *mtd, int area,
- const unsigned char *buffer, int offset, size_t count);
- unsigned short (*read_word)(void __iomem *addr);
- void (*write_word)(unsigned short value, void __iomem *addr);
- void (*mmcontrol)(struct mtd_info *mtd, int sync_read);
- int (*chip_probe)(struct mtd_info *mtd);
- int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
- int (*scan_bbt)(struct mtd_info *mtd);
- int (*enable)(struct mtd_info *mtd);
- int (*disable)(struct mtd_info *mtd);
-
- struct completion complete;
- int irq;
-
- spinlock_t chip_lock;
- wait_queue_head_t wq;
- flstate_t state;
- unsigned char *page_buf;
- unsigned char *oob_buf;
-#ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE
- unsigned char *verify_buf;
-#endif
-
- int subpagesize;
- struct nand_ecclayout *ecclayout;
-
- void *bbm;
-
- void *priv;
-
- /*
- * Shows that the current operation is composed
- * of sequence of commands. For example, cache program.
- * Such command status OnGo bit is checked at the end of
- * sequence.
- */
- unsigned int ongoing;
-};
-
-/*
- * Helper macros
- */
-#define ONENAND_PAGES_PER_BLOCK (1<<6)
-
-#define ONENAND_CURRENT_BUFFERRAM(this) (this->bufferram_index)
-#define ONENAND_NEXT_BUFFERRAM(this) (this->bufferram_index ^ 1)
-#define ONENAND_SET_NEXT_BUFFERRAM(this) (this->bufferram_index ^= 1)
-#define ONENAND_SET_PREV_BUFFERRAM(this) (this->bufferram_index ^= 1)
-#define ONENAND_SET_BUFFERRAM0(this) (this->bufferram_index = 0)
-#define ONENAND_SET_BUFFERRAM1(this) (this->bufferram_index = 1)
-
-#define FLEXONENAND(this) \
- (this->device_id & DEVICE_IS_FLEXONENAND)
-#define ONENAND_GET_SYS_CFG1(this) \
- (this->read_word(this->base + ONENAND_REG_SYS_CFG1))
-#define ONENAND_SET_SYS_CFG1(v, this) \
- (this->write_word(v, this->base + ONENAND_REG_SYS_CFG1))
-
-#define ONENAND_IS_DDP(this) \
- (this->device_id & ONENAND_DEVICE_IS_DDP)
-
-#define ONENAND_IS_MLC(this) \
- (this->technology & ONENAND_TECHNOLOGY_IS_MLC)
-
-#ifdef CONFIG_MTD_ONENAND_2X_PROGRAM
-#define ONENAND_IS_2PLANE(this) \
- (this->options & ONENAND_HAS_2PLANE)
-#else
-#define ONENAND_IS_2PLANE(this) (0)
-#endif
-
-#define ONENAND_IS_CACHE_PROGRAM(this) \
- (this->options & ONENAND_HAS_CACHE_PROGRAM)
-
-#define ONENAND_IS_NOP_1(this) \
- (this->options & ONENAND_HAS_NOP_1)
-
-/* Check byte access in OneNAND */
-#define ONENAND_CHECK_BYTE_ACCESS(addr) (addr & 0x1)
-
-/*
- * Options bits
- */
-#define ONENAND_HAS_CONT_LOCK (0x0001)
-#define ONENAND_HAS_UNLOCK_ALL (0x0002)
-#define ONENAND_HAS_2PLANE (0x0004)
-#define ONENAND_HAS_4KB_PAGE (0x0008)
-#define ONENAND_HAS_CACHE_PROGRAM (0x0010)
-#define ONENAND_HAS_NOP_1 (0x0020)
-#define ONENAND_SKIP_UNLOCK_CHECK (0x0100)
-#define ONENAND_PAGEBUF_ALLOC (0x1000)
-#define ONENAND_OOBBUF_ALLOC (0x2000)
-#define ONENAND_SKIP_INITIAL_UNLOCKING (0x4000)
-
-#define ONENAND_IS_4KB_PAGE(this) \
- (this->options & ONENAND_HAS_4KB_PAGE)
-
-/*
- * OneNAND Flash Manufacturer ID Codes
- */
-#define ONENAND_MFR_SAMSUNG 0xec
-#define ONENAND_MFR_NUMONYX 0x20
-
-/**
- * struct onenand_manufacturers - NAND Flash Manufacturer ID Structure
- * @name: Manufacturer name
- * @id: manufacturer ID code of device.
-*/
-struct onenand_manufacturers {
- int id;
- char *name;
-};
-
-int onenand_bbt_read_oob(struct mtd_info *mtd, loff_t from,
- struct mtd_oob_ops *ops);
-unsigned onenand_block(struct onenand_chip *this, loff_t addr);
-loff_t onenand_addr(struct onenand_chip *this, int block);
-int flexonenand_region(struct mtd_info *mtd, loff_t addr);
-
-struct mtd_partition;
-
-struct onenand_platform_data {
- void (*mmcontrol)(struct mtd_info *mtd, int sync_read);
- int (*read_bufferram)(struct mtd_info *mtd, int area,
- unsigned char *buffer, int offset, size_t count);
- struct mtd_partition *parts;
- unsigned int nr_parts;
-};
-
-#endif /* __LINUX_MTD_ONENAND_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/onenand_regs.h b/ANDROID_3.4.5/include/linux/mtd/onenand_regs.h
deleted file mode 100644
index d60130f8..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/onenand_regs.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * linux/include/linux/mtd/onenand_regs.h
- *
- * OneNAND Register header file
- *
- * Copyright (C) 2005-2007 Samsung Electronics
- * Kyungmin Park <kyungmin.park@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ONENAND_REG_H
-#define __ONENAND_REG_H
-
-/* Memory Address Map Translation (Word order) */
-#define ONENAND_MEMORY_MAP(x) ((x) << 1)
-
-/*
- * External BufferRAM area
- */
-#define ONENAND_BOOTRAM ONENAND_MEMORY_MAP(0x0000)
-#define ONENAND_DATARAM ONENAND_MEMORY_MAP(0x0200)
-#define ONENAND_SPARERAM ONENAND_MEMORY_MAP(0x8010)
-
-/*
- * OneNAND Registers
- */
-#define ONENAND_REG_MANUFACTURER_ID ONENAND_MEMORY_MAP(0xF000)
-#define ONENAND_REG_DEVICE_ID ONENAND_MEMORY_MAP(0xF001)
-#define ONENAND_REG_VERSION_ID ONENAND_MEMORY_MAP(0xF002)
-#define ONENAND_REG_DATA_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF003)
-#define ONENAND_REG_BOOT_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF004)
-#define ONENAND_REG_NUM_BUFFERS ONENAND_MEMORY_MAP(0xF005)
-#define ONENAND_REG_TECHNOLOGY ONENAND_MEMORY_MAP(0xF006)
-
-#define ONENAND_REG_START_ADDRESS1 ONENAND_MEMORY_MAP(0xF100)
-#define ONENAND_REG_START_ADDRESS2 ONENAND_MEMORY_MAP(0xF101)
-#define ONENAND_REG_START_ADDRESS3 ONENAND_MEMORY_MAP(0xF102)
-#define ONENAND_REG_START_ADDRESS4 ONENAND_MEMORY_MAP(0xF103)
-#define ONENAND_REG_START_ADDRESS5 ONENAND_MEMORY_MAP(0xF104)
-#define ONENAND_REG_START_ADDRESS6 ONENAND_MEMORY_MAP(0xF105)
-#define ONENAND_REG_START_ADDRESS7 ONENAND_MEMORY_MAP(0xF106)
-#define ONENAND_REG_START_ADDRESS8 ONENAND_MEMORY_MAP(0xF107)
-
-#define ONENAND_REG_START_BUFFER ONENAND_MEMORY_MAP(0xF200)
-#define ONENAND_REG_COMMAND ONENAND_MEMORY_MAP(0xF220)
-#define ONENAND_REG_SYS_CFG1 ONENAND_MEMORY_MAP(0xF221)
-#define ONENAND_REG_SYS_CFG2 ONENAND_MEMORY_MAP(0xF222)
-#define ONENAND_REG_CTRL_STATUS ONENAND_MEMORY_MAP(0xF240)
-#define ONENAND_REG_INTERRUPT ONENAND_MEMORY_MAP(0xF241)
-#define ONENAND_REG_START_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24C)
-#define ONENAND_REG_END_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24D)
-#define ONENAND_REG_WP_STATUS ONENAND_MEMORY_MAP(0xF24E)
-
-#define ONENAND_REG_ECC_STATUS ONENAND_MEMORY_MAP(0xFF00)
-#define ONENAND_REG_ECC_M0 ONENAND_MEMORY_MAP(0xFF01)
-#define ONENAND_REG_ECC_S0 ONENAND_MEMORY_MAP(0xFF02)
-#define ONENAND_REG_ECC_M1 ONENAND_MEMORY_MAP(0xFF03)
-#define ONENAND_REG_ECC_S1 ONENAND_MEMORY_MAP(0xFF04)
-#define ONENAND_REG_ECC_M2 ONENAND_MEMORY_MAP(0xFF05)
-#define ONENAND_REG_ECC_S2 ONENAND_MEMORY_MAP(0xFF06)
-#define ONENAND_REG_ECC_M3 ONENAND_MEMORY_MAP(0xFF07)
-#define ONENAND_REG_ECC_S3 ONENAND_MEMORY_MAP(0xFF08)
-
-/*
- * Device ID Register F001h (R)
- */
-#define DEVICE_IS_FLEXONENAND (1 << 9)
-#define FLEXONENAND_PI_MASK (0x3ff)
-#define FLEXONENAND_PI_UNLOCK_SHIFT (14)
-#define ONENAND_DEVICE_DENSITY_MASK (0xf)
-#define ONENAND_DEVICE_DENSITY_SHIFT (4)
-#define ONENAND_DEVICE_IS_DDP (1 << 3)
-#define ONENAND_DEVICE_IS_DEMUX (1 << 2)
-#define ONENAND_DEVICE_VCC_MASK (0x3)
-
-#define ONENAND_DEVICE_DENSITY_512Mb (0x002)
-#define ONENAND_DEVICE_DENSITY_1Gb (0x003)
-#define ONENAND_DEVICE_DENSITY_2Gb (0x004)
-#define ONENAND_DEVICE_DENSITY_4Gb (0x005)
-
-/*
- * Version ID Register F002h (R)
- */
-#define ONENAND_VERSION_PROCESS_SHIFT (8)
-
-/*
- * Technology Register F006h (R)
- */
-#define ONENAND_TECHNOLOGY_IS_MLC (1 << 0)
-
-/*
- * Start Address 1 F100h (R/W) & Start Address 2 F101h (R/W)
- */
-#define ONENAND_DDP_SHIFT (15)
-#define ONENAND_DDP_CHIP0 (0)
-#define ONENAND_DDP_CHIP1 (1 << ONENAND_DDP_SHIFT)
-
-/*
- * Start Address 8 F107h (R/W)
- */
-/* Note: It's actually 0x3f in case of SLC */
-#define ONENAND_FPA_MASK (0x7f)
-#define ONENAND_FPA_SHIFT (2)
-#define ONENAND_FSA_MASK (0x03)
-
-/*
- * Start Buffer Register F200h (R/W)
- */
-#define ONENAND_BSA_MASK (0x03)
-#define ONENAND_BSA_SHIFT (8)
-#define ONENAND_BSA_BOOTRAM (0 << 2)
-#define ONENAND_BSA_DATARAM0 (2 << 2)
-#define ONENAND_BSA_DATARAM1 (3 << 2)
-/* Note: It's actually 0x03 in case of SLC */
-#define ONENAND_BSC_MASK (0x07)
-
-/*
- * Command Register F220h (R/W)
- */
-#define ONENAND_CMD_READ (0x00)
-#define ONENAND_CMD_READOOB (0x13)
-#define ONENAND_CMD_PROG (0x80)
-#define ONENAND_CMD_PROGOOB (0x1A)
-#define ONENAND_CMD_2X_PROG (0x7D)
-#define ONENAND_CMD_2X_CACHE_PROG (0x7F)
-#define ONENAND_CMD_UNLOCK (0x23)
-#define ONENAND_CMD_LOCK (0x2A)
-#define ONENAND_CMD_LOCK_TIGHT (0x2C)
-#define ONENAND_CMD_UNLOCK_ALL (0x27)
-#define ONENAND_CMD_ERASE (0x94)
-#define ONENAND_CMD_MULTIBLOCK_ERASE (0x95)
-#define ONENAND_CMD_ERASE_VERIFY (0x71)
-#define ONENAND_CMD_RESET (0xF0)
-#define ONENAND_CMD_OTP_ACCESS (0x65)
-#define ONENAND_CMD_READID (0x90)
-#define FLEXONENAND_CMD_PI_UPDATE (0x05)
-#define FLEXONENAND_CMD_PI_ACCESS (0x66)
-#define FLEXONENAND_CMD_RECOVER_LSB (0x05)
-
-/* NOTE: Those are not *REAL* commands */
-#define ONENAND_CMD_BUFFERRAM (0x1978)
-#define FLEXONENAND_CMD_READ_PI (0x1985)
-
-/*
- * System Configuration 1 Register F221h (R, R/W)
- */
-#define ONENAND_SYS_CFG1_SYNC_READ (1 << 15)
-#define ONENAND_SYS_CFG1_BRL_7 (7 << 12)
-#define ONENAND_SYS_CFG1_BRL_6 (6 << 12)
-#define ONENAND_SYS_CFG1_BRL_5 (5 << 12)
-#define ONENAND_SYS_CFG1_BRL_4 (4 << 12)
-#define ONENAND_SYS_CFG1_BRL_3 (3 << 12)
-#define ONENAND_SYS_CFG1_BRL_10 (2 << 12)
-#define ONENAND_SYS_CFG1_BRL_9 (1 << 12)
-#define ONENAND_SYS_CFG1_BRL_8 (0 << 12)
-#define ONENAND_SYS_CFG1_BRL_SHIFT (12)
-#define ONENAND_SYS_CFG1_BL_32 (4 << 9)
-#define ONENAND_SYS_CFG1_BL_16 (3 << 9)
-#define ONENAND_SYS_CFG1_BL_8 (2 << 9)
-#define ONENAND_SYS_CFG1_BL_4 (1 << 9)
-#define ONENAND_SYS_CFG1_BL_CONT (0 << 9)
-#define ONENAND_SYS_CFG1_BL_SHIFT (9)
-#define ONENAND_SYS_CFG1_NO_ECC (1 << 8)
-#define ONENAND_SYS_CFG1_RDY (1 << 7)
-#define ONENAND_SYS_CFG1_INT (1 << 6)
-#define ONENAND_SYS_CFG1_IOBE (1 << 5)
-#define ONENAND_SYS_CFG1_RDY_CONF (1 << 4)
-#define ONENAND_SYS_CFG1_VHF (1 << 3)
-#define ONENAND_SYS_CFG1_HF (1 << 2)
-#define ONENAND_SYS_CFG1_SYNC_WRITE (1 << 1)
-
-/*
- * Controller Status Register F240h (R)
- */
-#define ONENAND_CTRL_ONGO (1 << 15)
-#define ONENAND_CTRL_LOCK (1 << 14)
-#define ONENAND_CTRL_LOAD (1 << 13)
-#define ONENAND_CTRL_PROGRAM (1 << 12)
-#define ONENAND_CTRL_ERASE (1 << 11)
-#define ONENAND_CTRL_ERROR (1 << 10)
-#define ONENAND_CTRL_RSTB (1 << 7)
-#define ONENAND_CTRL_OTP_L (1 << 6)
-#define ONENAND_CTRL_OTP_BL (1 << 5)
-
-/*
- * Interrupt Status Register F241h (R)
- */
-#define ONENAND_INT_MASTER (1 << 15)
-#define ONENAND_INT_READ (1 << 7)
-#define ONENAND_INT_WRITE (1 << 6)
-#define ONENAND_INT_ERASE (1 << 5)
-#define ONENAND_INT_RESET (1 << 4)
-#define ONENAND_INT_CLEAR (0 << 0)
-
-/*
- * NAND Flash Write Protection Status Register F24Eh (R)
- */
-#define ONENAND_WP_US (1 << 2)
-#define ONENAND_WP_LS (1 << 1)
-#define ONENAND_WP_LTS (1 << 0)
-
-/*
- * ECC Status Reigser FF00h (R)
- */
-#define ONENAND_ECC_1BIT (1 << 0)
-#define ONENAND_ECC_1BIT_ALL (0x5555)
-#define ONENAND_ECC_2BIT (1 << 1)
-#define ONENAND_ECC_2BIT_ALL (0xAAAA)
-#define FLEXONENAND_UNCORRECTABLE_ERROR (0x1010)
-#define ONENAND_ECC_3BIT (1 << 2)
-#define ONENAND_ECC_4BIT (1 << 3)
-#define ONENAND_ECC_4BIT_UNCORRECTABLE (0x1010)
-
-/*
- * One-Time Programmable (OTP)
- */
-#define FLEXONENAND_OTP_LOCK_OFFSET (2048)
-#define ONENAND_OTP_LOCK_OFFSET (14)
-
-#endif /* __ONENAND_REG_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/partitions.h b/ANDROID_3.4.5/include/linux/mtd/partitions.h
deleted file mode 100644
index e4f732ae..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/partitions.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * MTD partitioning layer definitions
- *
- * (C) 2000 Nicolas Pitre <nico@fluxnic.net>
- *
- * This code is GPL
- */
-
-#ifndef MTD_PARTITIONS_H
-#define MTD_PARTITIONS_H
-
-#include <linux/types.h>
-
-
-/*
- * Partition definition structure:
- *
- * An array of struct partition is passed along with a MTD object to
- * mtd_device_register() to create them.
- *
- * For each partition, these fields are available:
- * name: string that will be used to label the partition's MTD device.
- * size: the partition size; if defined as MTDPART_SIZ_FULL, the partition
- * will extend to the end of the master MTD device.
- * offset: absolute starting position within the master MTD device; if
- * defined as MTDPART_OFS_APPEND, the partition will start where the
- * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block;
- * if MTDPART_OFS_RETAIN, consume as much as possible, leaving size
- * after the end of partition.
- * mask_flags: contains flags that have to be masked (removed) from the
- * master MTD flag set for the corresponding MTD partition.
- * For example, to force a read-only partition, simply adding
- * MTD_WRITEABLE to the mask_flags will do the trick.
- *
- * Note: writeable partitions require their size and offset be
- * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
- */
-
-struct mtd_partition {
- char *name; /* identifier string */
- uint64_t size; /* partition size */
- uint64_t offset; /* offset within the master MTD space */
- uint32_t mask_flags; /* master MTD flags to mask out for this partition */
- struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only) */
-};
-
-#define MTDPART_OFS_RETAIN (-3)
-#define MTDPART_OFS_NXTBLK (-2)
-#define MTDPART_OFS_APPEND (-1)
-#define MTDPART_SIZ_FULL (0)
-
-
-struct mtd_info;
-struct device_node;
-
-/**
- * struct mtd_part_parser_data - used to pass data to MTD partition parsers.
- * @origin: for RedBoot, start address of MTD device
- * @of_node: for OF parsers, device node containing partitioning information
- */
-struct mtd_part_parser_data {
- unsigned long origin;
- struct device_node *of_node;
-};
-
-
-/*
- * Functions dealing with the various ways of partitioning the space
- */
-
-struct mtd_part_parser {
- struct list_head list;
- struct module *owner;
- const char *name;
- int (*parse_fn)(struct mtd_info *, struct mtd_partition **,
- struct mtd_part_parser_data *);
-};
-
-extern int register_mtd_parser(struct mtd_part_parser *parser);
-extern int deregister_mtd_parser(struct mtd_part_parser *parser);
-
-int mtd_is_partition(struct mtd_info *mtd);
-int mtd_add_partition(struct mtd_info *master, char *name,
- long long offset, long long length);
-int mtd_del_partition(struct mtd_info *master, int partno);
-uint64_t mtd_get_device_size(struct mtd_info *mtd);
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/pfow.h b/ANDROID_3.4.5/include/linux/mtd/pfow.h
deleted file mode 100644
index b730d4f8..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/pfow.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Primary function overlay window definitions
- * and service functions used by LPDDR chips
- */
-#ifndef __LINUX_MTD_PFOW_H
-#define __LINUX_MTD_PFOW_H
-
-#include <linux/mtd/qinfo.h>
-
-/* PFOW registers addressing */
-/* Address of symbol "P" */
-#define PFOW_QUERY_STRING_P 0x0000
-/* Address of symbol "F" */
-#define PFOW_QUERY_STRING_F 0x0002
-/* Address of symbol "O" */
-#define PFOW_QUERY_STRING_O 0x0004
-/* Address of symbol "W" */
-#define PFOW_QUERY_STRING_W 0x0006
-/* Identification info for LPDDR chip */
-#define PFOW_MANUFACTURER_ID 0x0020
-#define PFOW_DEVICE_ID 0x0022
-/* Address in PFOW where prog buffer can can be found */
-#define PFOW_PROGRAM_BUFFER_OFFSET 0x0040
-/* Size of program buffer in words */
-#define PFOW_PROGRAM_BUFFER_SIZE 0x0042
-/* Address command code register */
-#define PFOW_COMMAND_CODE 0x0080
-/* command data register */
-#define PFOW_COMMAND_DATA 0x0084
-/* command address register lower address bits */
-#define PFOW_COMMAND_ADDRESS_L 0x0088
-/* command address register upper address bits */
-#define PFOW_COMMAND_ADDRESS_H 0x008a
-/* number of bytes to be proggrammed lower address bits */
-#define PFOW_DATA_COUNT_L 0x0090
-/* number of bytes to be proggrammed higher address bits */
-#define PFOW_DATA_COUNT_H 0x0092
-/* command execution register, the only possible value is 0x01 */
-#define PFOW_COMMAND_EXECUTE 0x00c0
-/* 0x01 should be written at this address to clear buffer */
-#define PFOW_CLEAR_PROGRAM_BUFFER 0x00c4
-/* device program/erase suspend register */
-#define PFOW_PROGRAM_ERASE_SUSPEND 0x00c8
-/* device status register */
-#define PFOW_DSR 0x00cc
-
-/* LPDDR memory device command codes */
-/* They are possible values of PFOW command code register */
-#define LPDDR_WORD_PROGRAM 0x0041
-#define LPDDR_BUFF_PROGRAM 0x00E9
-#define LPDDR_BLOCK_ERASE 0x0020
-#define LPDDR_LOCK_BLOCK 0x0061
-#define LPDDR_UNLOCK_BLOCK 0x0062
-#define LPDDR_READ_BLOCK_LOCK_STATUS 0x0065
-#define LPDDR_INFO_QUERY 0x0098
-#define LPDDR_READ_OTP 0x0097
-#define LPDDR_PROG_OTP 0x00C0
-#define LPDDR_RESUME 0x00D0
-
-/* Defines possible value of PFOW command execution register */
-#define LPDDR_START_EXECUTION 0x0001
-
-/* Defines possible value of PFOW program/erase suspend register */
-#define LPDDR_SUSPEND 0x0001
-
-/* Possible values of PFOW device status register */
-/* access R - read; RC read & clearable */
-#define DSR_DPS (1<<1) /* RC; device protect status
- * 0 - not protected 1 - locked */
-#define DSR_PSS (1<<2) /* R; program suspend status;
- * 0-prog in progress/completed,
- * 1- prog suspended */
-#define DSR_VPPS (1<<3) /* RC; 0-Vpp OK, * 1-Vpp low */
-#define DSR_PROGRAM_STATUS (1<<4) /* RC; 0-successful, 1-error */
-#define DSR_ERASE_STATUS (1<<5) /* RC; erase or blank check status;
- * 0-success erase/blank check,
- * 1 blank check error */
-#define DSR_ESS (1<<6) /* R; erase suspend status;
- * 0-erase in progress/complete,
- * 1 erase suspended */
-#define DSR_READY_STATUS (1<<7) /* R; Device status
- * 0-busy,
- * 1-ready */
-#define DSR_RPS (0x3<<8) /* RC; region program status
- * 00 - Success,
- * 01-re-program attempt in region with
- * object mode data,
- * 10-object mode program w attempt in
- * region with control mode data
- * 11-attempt to program invalid half
- * with 0x41 command */
-#define DSR_AOS (1<<12) /* RC; 1- AO related failure */
-#define DSR_AVAILABLE (1<<15) /* R; Device availbility
- * 1 - Device available
- * 0 - not available */
-
-/* The superset of all possible error bits in DSR */
-#define DSR_ERR 0x133A
-
-static inline void send_pfow_command(struct map_info *map,
- unsigned long cmd_code, unsigned long adr,
- unsigned long len, map_word *datum)
-{
- int bits_per_chip = map_bankwidth(map) * 8;
- int chipnum;
- struct lpddr_private *lpddr = map->fldrv_priv;
- chipnum = adr >> lpddr->chipshift;
-
- map_write(map, CMD(cmd_code), map->pfow_base + PFOW_COMMAND_CODE);
- map_write(map, CMD(adr & ((1<<bits_per_chip) - 1)),
- map->pfow_base + PFOW_COMMAND_ADDRESS_L);
- map_write(map, CMD(adr>>bits_per_chip),
- map->pfow_base + PFOW_COMMAND_ADDRESS_H);
- if (len) {
- map_write(map, CMD(len & ((1<<bits_per_chip) - 1)),
- map->pfow_base + PFOW_DATA_COUNT_L);
- map_write(map, CMD(len>>bits_per_chip),
- map->pfow_base + PFOW_DATA_COUNT_H);
- }
- if (datum)
- map_write(map, *datum, map->pfow_base + PFOW_COMMAND_DATA);
-
- /* Command execution start */
- map_write(map, CMD(LPDDR_START_EXECUTION),
- map->pfow_base + PFOW_COMMAND_EXECUTE);
-}
-
-static inline void print_drs_error(unsigned dsr)
-{
- int prog_status = (dsr & DSR_RPS) >> 8;
-
- if (!(dsr & DSR_AVAILABLE))
- printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
- if (prog_status & 0x03)
- printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
- "half with 41h command\n");
- else if (prog_status & 0x02)
- printk(KERN_NOTICE"DSR.9,8: (10) Object Mode Program attempt "
- "in region with Control Mode data\n");
- else if (prog_status & 0x01)
- printk(KERN_NOTICE"DSR.9,8: (01) Program attempt in region "
- "with Object Mode data\n");
- if (!(dsr & DSR_READY_STATUS))
- printk(KERN_NOTICE"DSR.7: (0) Device is Busy\n");
- if (dsr & DSR_ESS)
- printk(KERN_NOTICE"DSR.6: (1) Erase Suspended\n");
- if (dsr & DSR_ERASE_STATUS)
- printk(KERN_NOTICE"DSR.5: (1) Erase/Blank check error\n");
- if (dsr & DSR_PROGRAM_STATUS)
- printk(KERN_NOTICE"DSR.4: (1) Program Error\n");
- if (dsr & DSR_VPPS)
- printk(KERN_NOTICE"DSR.3: (1) Vpp low detect, operation "
- "aborted\n");
- if (dsr & DSR_PSS)
- printk(KERN_NOTICE"DSR.2: (1) Program suspended\n");
- if (dsr & DSR_DPS)
- printk(KERN_NOTICE"DSR.1: (1) Aborted Erase/Program attempt "
- "on locked block\n");
-}
-#endif /* __LINUX_MTD_PFOW_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/physmap.h b/ANDROID_3.4.5/include/linux/mtd/physmap.h
deleted file mode 100644
index d2887e76..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/physmap.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * For boards with physically mapped flash and using
- * drivers/mtd/maps/physmap.c mapping driver.
- *
- * Copyright (C) 2003 MontaVista Software Inc.
- * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- */
-
-#ifndef __LINUX_MTD_PHYSMAP__
-#define __LINUX_MTD_PHYSMAP__
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-struct map_info;
-struct platform_device;
-
-struct physmap_flash_data {
- unsigned int width;
- int (*init)(struct platform_device *);
- void (*exit)(struct platform_device *);
- void (*set_vpp)(struct platform_device *, int);
- unsigned int nr_parts;
- unsigned int pfow_base;
- char *probe_type;
- struct mtd_partition *parts;
- const char **part_probe_types;
-};
-
-#endif /* __LINUX_MTD_PHYSMAP__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/pismo.h b/ANDROID_3.4.5/include/linux/mtd/pismo.h
deleted file mode 100644
index 8dfb7e14..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/pismo.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * PISMO memory driver - http://www.pismoworld.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License.
- */
-#ifndef __LINUX_MTD_PISMO_H
-#define __LINUX_MTD_PISMO_H
-
-struct pismo_pdata {
- void (*set_vpp)(void *, int);
- void *vpp_data;
- phys_addr_t cs_addrs[5];
-};
-
-#endif
diff --git a/ANDROID_3.4.5/include/linux/mtd/plat-ram.h b/ANDROID_3.4.5/include/linux/mtd/plat-ram.h
deleted file mode 100644
index e07890af..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/plat-ram.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* linux/include/linux/mtd/plat-ram.h
- *
- * (c) 2004 Simtec Electronics
- * http://www.simtec.co.uk/products/SWLINUX/
- * Ben Dooks <ben@simtec.co.uk>
- *
- * Generic platform device based RAM map
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
-
-#ifndef __LINUX_MTD_PLATRAM_H
-#define __LINUX_MTD_PLATRAM_H __FILE__
-
-#define PLATRAM_RO (0)
-#define PLATRAM_RW (1)
-
-struct platdata_mtd_ram {
- const char *mapname;
- const char **map_probes;
- const char **probes;
- struct mtd_partition *partitions;
- int nr_partitions;
- int bankwidth;
-
- /* control callbacks */
-
- void (*set_rw)(struct device *dev, int to);
-};
-
-#endif /* __LINUX_MTD_PLATRAM_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/qinfo.h b/ANDROID_3.4.5/include/linux/mtd/qinfo.h
deleted file mode 100644
index 7b3d487d..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/qinfo.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef __LINUX_MTD_QINFO_H
-#define __LINUX_MTD_QINFO_H
-
-#include <linux/mtd/map.h>
-#include <linux/wait.h>
-#include <linux/spinlock.h>
-#include <linux/delay.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/flashchip.h>
-#include <linux/mtd/partitions.h>
-
-/* lpddr_private describes lpddr flash chip in memory map
- * @ManufactId - Chip Manufacture ID
- * @DevId - Chip Device ID
- * @qinfo - pointer to qinfo records describing the chip
- * @numchips - number of chips including virual RWW partitions
- * @chipshift - Chip/partiton size 2^chipshift
- * @chips - per-chip data structure
- */
-struct lpddr_private {
- uint16_t ManufactId;
- uint16_t DevId;
- struct qinfo_chip *qinfo;
- int numchips;
- unsigned long chipshift;
- struct flchip chips[0];
-};
-
-/* qinfo_query_info structure contains request information for
- * each qinfo record
- * @major - major number of qinfo record
- * @major - minor number of qinfo record
- * @id_str - descriptive string to access the record
- * @desc - detailed description for the qinfo record
- */
-struct qinfo_query_info {
- uint8_t major;
- uint8_t minor;
- char *id_str;
- char *desc;
-};
-
-/*
- * qinfo_chip structure contains necessary qinfo records data
- * @DevSizeShift - Device size 2^n bytes
- * @BufSizeShift - Program buffer size 2^n bytes
- * @TotalBlocksNum - Total number of blocks
- * @UniformBlockSizeShift - Uniform block size 2^UniformBlockSizeShift bytes
- * @HWPartsNum - Number of hardware partitions
- * @SuspEraseSupp - Suspend erase supported
- * @SingleWordProgTime - Single word program 2^SingleWordProgTime u-sec
- * @ProgBufferTime - Program buffer write 2^ProgBufferTime u-sec
- * @BlockEraseTime - Block erase 2^BlockEraseTime m-sec
- */
-struct qinfo_chip {
- /* General device info */
- uint16_t DevSizeShift;
- uint16_t BufSizeShift;
- /* Erase block information */
- uint16_t TotalBlocksNum;
- uint16_t UniformBlockSizeShift;
- /* Partition information */
- uint16_t HWPartsNum;
- /* Optional features */
- uint16_t SuspEraseSupp;
- /* Operation typical time */
- uint16_t SingleWordProgTime;
- uint16_t ProgBufferTime;
- uint16_t BlockEraseTime;
-};
-
-/* defines for fixup usage */
-#define LPDDR_MFR_ANY 0xffff
-#define LPDDR_ID_ANY 0xffff
-#define NUMONYX_MFGR_ID 0x0089
-#define R18_DEVICE_ID_1G 0x893c
-
-static inline map_word lpddr_build_cmd(u_long cmd, struct map_info *map)
-{
- map_word val = { {0} };
- val.x[0] = cmd;
- return val;
-}
-
-#define CMD(x) lpddr_build_cmd(x, map)
-#define CMDVAL(cmd) cmd.x[0]
-
-struct mtd_info *lpddr_cmdset(struct map_info *);
-
-#endif
-
diff --git a/ANDROID_3.4.5/include/linux/mtd/sh_flctl.h b/ANDROID_3.4.5/include/linux/mtd/sh_flctl.h
deleted file mode 100644
index a38e1fa8..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/sh_flctl.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * SuperH FLCTL nand controller
- *
- * Copyright © 2008 Renesas Solutions Corp.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef __SH_FLCTL_H__
-#define __SH_FLCTL_H__
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/nand.h>
-#include <linux/mtd/partitions.h>
-#include <linux/pm_qos.h>
-
-/* FLCTL registers */
-#define FLCMNCR(f) (f->reg + 0x0)
-#define FLCMDCR(f) (f->reg + 0x4)
-#define FLCMCDR(f) (f->reg + 0x8)
-#define FLADR(f) (f->reg + 0xC)
-#define FLADR2(f) (f->reg + 0x3C)
-#define FLDATAR(f) (f->reg + 0x10)
-#define FLDTCNTR(f) (f->reg + 0x14)
-#define FLINTDMACR(f) (f->reg + 0x18)
-#define FLBSYTMR(f) (f->reg + 0x1C)
-#define FLBSYCNT(f) (f->reg + 0x20)
-#define FLDTFIFO(f) (f->reg + 0x24)
-#define FLECFIFO(f) (f->reg + 0x28)
-#define FLTRCR(f) (f->reg + 0x2C)
-#define FLHOLDCR(f) (f->reg + 0x38)
-#define FL4ECCRESULT0(f) (f->reg + 0x80)
-#define FL4ECCRESULT1(f) (f->reg + 0x84)
-#define FL4ECCRESULT2(f) (f->reg + 0x88)
-#define FL4ECCRESULT3(f) (f->reg + 0x8C)
-#define FL4ECCCR(f) (f->reg + 0x90)
-#define FL4ECCCNT(f) (f->reg + 0x94)
-#define FLERRADR(f) (f->reg + 0x98)
-
-/* FLCMNCR control bits */
-#define ECCPOS2 (0x1 << 25)
-#define _4ECCCNTEN (0x1 << 24)
-#define _4ECCEN (0x1 << 23)
-#define _4ECCCORRECT (0x1 << 22)
-#define SHBUSSEL (0x1 << 20)
-#define SEL_16BIT (0x1 << 19)
-#define SNAND_E (0x1 << 18) /* SNAND (0=512 1=2048)*/
-#define QTSEL_E (0x1 << 17)
-#define ENDIAN (0x1 << 16) /* 1 = little endian */
-#define FCKSEL_E (0x1 << 15)
-#define ECCPOS_00 (0x00 << 12)
-#define ECCPOS_01 (0x01 << 12)
-#define ECCPOS_02 (0x02 << 12)
-#define ACM_SACCES_MODE (0x01 << 10)
-#define NANWF_E (0x1 << 9)
-#define SE_D (0x1 << 8) /* Spare area disable */
-#define CE1_ENABLE (0x1 << 4) /* Chip Enable 1 */
-#define CE0_ENABLE (0x1 << 3) /* Chip Enable 0 */
-#define TYPESEL_SET (0x1 << 0)
-
-/*
- * Clock settings using the PULSEx registers from FLCMNCR
- *
- * Some hardware uses bits called PULSEx instead of FCKSEL_E and QTSEL_E
- * to control the clock divider used between the High-Speed Peripheral Clock
- * and the FLCTL internal clock. If so, use CLK_8_BIT_xxx for connecting 8 bit
- * and CLK_16_BIT_xxx for connecting 16 bit bus bandwith NAND chips. For the 16
- * bit version the divider is seperate for the pulse width of high and low
- * signals.
- */
-#define PULSE3 (0x1 << 27)
-#define PULSE2 (0x1 << 17)
-#define PULSE1 (0x1 << 15)
-#define PULSE0 (0x1 << 9)
-#define CLK_8B_0_5 PULSE1
-#define CLK_8B_1 0x0
-#define CLK_8B_1_5 (PULSE1 | PULSE2)
-#define CLK_8B_2 PULSE0
-#define CLK_8B_3 (PULSE0 | PULSE1 | PULSE2)
-#define CLK_8B_4 (PULSE0 | PULSE2)
-#define CLK_16B_6L_2H PULSE0
-#define CLK_16B_9L_3H (PULSE0 | PULSE1 | PULSE2)
-#define CLK_16B_12L_4H (PULSE0 | PULSE2)
-
-/* FLCMDCR control bits */
-#define ADRCNT2_E (0x1 << 31) /* 5byte address enable */
-#define ADRMD_E (0x1 << 26) /* Sector address access */
-#define CDSRC_E (0x1 << 25) /* Data buffer selection */
-#define DOSR_E (0x1 << 24) /* Status read check */
-#define SELRW (0x1 << 21) /* 0:read 1:write */
-#define DOADR_E (0x1 << 20) /* Address stage execute */
-#define ADRCNT_1 (0x00 << 18) /* Address data bytes: 1byte */
-#define ADRCNT_2 (0x01 << 18) /* Address data bytes: 2byte */
-#define ADRCNT_3 (0x02 << 18) /* Address data bytes: 3byte */
-#define ADRCNT_4 (0x03 << 18) /* Address data bytes: 4byte */
-#define DOCMD2_E (0x1 << 17) /* 2nd cmd stage execute */
-#define DOCMD1_E (0x1 << 16) /* 1st cmd stage execute */
-
-/* FLTRCR control bits */
-#define TRSTRT (0x1 << 0) /* translation start */
-#define TREND (0x1 << 1) /* translation end */
-
-/*
- * FLHOLDCR control bits
- *
- * HOLDEN: Bus Occupancy Enable (inverted)
- * Enable this bit when the external bus might be used in between transfers.
- * If not set and the bus gets used by other modules, a deadlock occurs.
- */
-#define HOLDEN (0x1 << 0)
-
-/* FL4ECCCR control bits */
-#define _4ECCFA (0x1 << 2) /* 4 symbols correct fault */
-#define _4ECCEND (0x1 << 1) /* 4 symbols end */
-#define _4ECCEXST (0x1 << 0) /* 4 symbols exist */
-
-#define INIT_FL4ECCRESULT_VAL 0x03FF03FF
-#define LOOP_TIMEOUT_MAX 0x00010000
-
-struct sh_flctl {
- struct mtd_info mtd;
- struct nand_chip chip;
- struct platform_device *pdev;
- struct dev_pm_qos_request pm_qos;
- void __iomem *reg;
-
- uint8_t done_buff[2048 + 64]; /* max size 2048 + 64 */
- int read_bytes;
- int index;
- int seqin_column; /* column in SEQIN cmd */
- int seqin_page_addr; /* page_addr in SEQIN cmd */
- uint32_t seqin_read_cmd; /* read cmd in SEQIN cmd */
- int erase1_page_addr; /* page_addr in ERASE1 cmd */
- uint32_t erase_ADRCNT; /* bits of FLCMDCR in ERASE1 cmd */
- uint32_t rw_ADRCNT; /* bits of FLCMDCR in READ WRITE cmd */
- uint32_t flcmncr_base; /* base value of FLCMNCR */
-
- int hwecc_cant_correct[4];
-
- unsigned page_size:1; /* NAND page size (0 = 512, 1 = 2048) */
- unsigned hwecc:1; /* Hardware ECC (0 = disabled, 1 = enabled) */
- unsigned holden:1; /* Hardware has FLHOLDCR and HOLDEN is set */
- unsigned qos_request:1; /* QoS request to prevent deep power shutdown */
-};
-
-struct sh_flctl_platform_data {
- struct mtd_partition *parts;
- int nr_parts;
- unsigned long flcmncr_val;
-
- unsigned has_hwecc:1;
- unsigned use_holden:1;
-};
-
-static inline struct sh_flctl *mtd_to_flctl(struct mtd_info *mtdinfo)
-{
- return container_of(mtdinfo, struct sh_flctl, mtd);
-}
-
-#endif /* __SH_FLCTL_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/sharpsl.h b/ANDROID_3.4.5/include/linux/mtd/sharpsl.h
deleted file mode 100644
index 25f4d2a8..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/sharpsl.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * SharpSL NAND support
- *
- * Copyright (C) 2008 Dmitry Baryshkov
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/mtd/nand.h>
-#include <linux/mtd/nand_ecc.h>
-#include <linux/mtd/partitions.h>
-
-struct sharpsl_nand_platform_data {
- struct nand_bbt_descr *badblock_pattern;
- struct nand_ecclayout *ecc_layout;
- struct mtd_partition *partitions;
- unsigned int nr_partitions;
-};
diff --git a/ANDROID_3.4.5/include/linux/mtd/spear_smi.h b/ANDROID_3.4.5/include/linux/mtd/spear_smi.h
deleted file mode 100644
index 8ae17260..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/spear_smi.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright © 2010 ST Microelectronics
- * Shiraz Hashim <shiraz.hashim@st.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __MTD_SPEAR_SMI_H
-#define __MTD_SPEAR_SMI_H
-
-#include <linux/types.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/of.h>
-
-/* max possible slots for serial-nor flash chip in the SMI controller */
-#define MAX_NUM_FLASH_CHIP 4
-
-/* macro to define partitions for flash devices */
-#define DEFINE_PARTS(n, of, s) \
-{ \
- .name = n, \
- .offset = of, \
- .size = s, \
-}
-
-/**
- * struct spear_smi_flash_info - platform structure for passing flash
- * information
- *
- * name: name of the serial nor flash for identification
- * mem_base: the memory base on which the flash is mapped
- * size: size of the flash in bytes
- * partitions: parition details
- * nr_partitions: number of partitions
- * fast_mode: whether flash supports fast mode
- */
-
-struct spear_smi_flash_info {
- char *name;
- unsigned long mem_base;
- unsigned long size;
- struct mtd_partition *partitions;
- int nr_partitions;
- u8 fast_mode;
-};
-
-/**
- * struct spear_smi_plat_data - platform structure for configuring smi
- *
- * clk_rate: clk rate at which SMI must operate
- * num_flashes: number of flashes present on board
- * board_flash_info: specific details of each flash present on board
- */
-struct spear_smi_plat_data {
- unsigned long clk_rate;
- int num_flashes;
- struct spear_smi_flash_info *board_flash_info;
- struct device_node *np[MAX_NUM_FLASH_CHIP];
-};
-
-#endif /* __MTD_SPEAR_SMI_H */
diff --git a/ANDROID_3.4.5/include/linux/mtd/super.h b/ANDROID_3.4.5/include/linux/mtd/super.h
deleted file mode 100644
index f456230f..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/super.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* MTD-based superblock handling
- *
- * Copyright © 2006 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef __MTD_SUPER_H__
-#define __MTD_SUPER_H__
-
-#ifdef __KERNEL__
-
-#include <linux/mtd/mtd.h>
-#include <linux/fs.h>
-#include <linux/mount.h>
-
-extern struct dentry *mount_mtd(struct file_system_type *fs_type, int flags,
- const char *dev_name, void *data,
- int (*fill_super)(struct super_block *, void *, int));
-extern void kill_mtd_super(struct super_block *sb);
-
-
-#endif /* __KERNEL__ */
-
-#endif /* __MTD_SUPER_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/ubi.h b/ANDROID_3.4.5/include/linux/mtd/ubi.h
deleted file mode 100644
index c2e92b36..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/ubi.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (c) International Business Machines Corp., 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Author: Artem Bityutskiy (Битюцкий Артём)
- */
-
-#ifndef __LINUX_UBI_H__
-#define __LINUX_UBI_H__
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <mtd/ubi-user.h>
-
-
-#define UBI_ALL -1
-/*
- * enum ubi_open_mode - UBI volume open mode constants.
- *
- * UBI_READONLY: read-only mode
- * UBI_READWRITE: read-write mode
- * UBI_EXCLUSIVE: exclusive mode
- */
-enum {
- UBI_READONLY = 1,
- UBI_READWRITE,
- UBI_EXCLUSIVE
-};
-
-/**
- * struct ubi_volume_info - UBI volume description data structure.
- * @vol_id: volume ID
- * @ubi_num: UBI device number this volume belongs to
- * @size: how many physical eraseblocks are reserved for this volume
- * @used_bytes: how many bytes of data this volume contains
- * @used_ebs: how many physical eraseblocks of this volume actually contain any
- * data
- * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @corrupted: non-zero if the volume is corrupted (static volumes only)
- * @upd_marker: non-zero if the volume has update marker set
- * @alignment: volume alignment
- * @usable_leb_size: how many bytes are available in logical eraseblocks of
- * this volume
- * @name_len: volume name length
- * @name: volume name
- * @cdev: UBI volume character device major and minor numbers
- *
- * The @corrupted flag is only relevant to static volumes and is always zero
- * for dynamic ones. This is because UBI does not care about dynamic volume
- * data protection and only cares about protecting static volume data.
- *
- * The @upd_marker flag is set if the volume update operation was interrupted.
- * Before touching the volume data during the update operation, UBI first sets
- * the update marker flag for this volume. If the volume update operation was
- * further interrupted, the update marker indicates this. If the update marker
- * is set, the contents of the volume is certainly damaged and a new volume
- * update operation has to be started.
- *
- * To put it differently, @corrupted and @upd_marker fields have different
- * semantics:
- * o the @corrupted flag means that this static volume is corrupted for some
- * reasons, but not because an interrupted volume update
- * o the @upd_marker field means that the volume is damaged because of an
- * interrupted update operation.
- *
- * I.e., the @corrupted flag is never set if the @upd_marker flag is set.
- *
- * The @used_bytes and @used_ebs fields are only really needed for static
- * volumes and contain the number of bytes stored in this static volume and how
- * many eraseblock this data occupies. In case of dynamic volumes, the
- * @used_bytes field is equivalent to @size*@usable_leb_size, and the @used_ebs
- * field is equivalent to @size.
- *
- * In general, logical eraseblock size is a property of the UBI device, not
- * of the UBI volume. Indeed, the logical eraseblock size depends on the
- * physical eraseblock size and on how much bytes UBI headers consume. But
- * because of the volume alignment (@alignment), the usable size of logical
- * eraseblocks if a volume may be less. The following equation is true:
- * @usable_leb_size = LEB size - (LEB size mod @alignment),
- * where LEB size is the logical eraseblock size defined by the UBI device.
- *
- * The alignment is multiple to the minimal flash input/output unit size or %1
- * if all the available space is used.
- *
- * To put this differently, alignment may be considered is a way to change
- * volume logical eraseblock sizes.
- */
-struct ubi_volume_info {
- int ubi_num;
- int vol_id;
- int size;
- long long used_bytes;
- int used_ebs;
- int vol_type;
- int corrupted;
- int upd_marker;
- int alignment;
- int usable_leb_size;
- int name_len;
- const char *name;
- dev_t cdev;
-};
-
-/**
- * struct ubi_device_info - UBI device description data structure.
- * @ubi_num: ubi device number
- * @leb_size: logical eraseblock size on this UBI device
- * @leb_start: starting offset of logical eraseblocks within physical
- * eraseblocks
- * @min_io_size: minimal I/O unit size
- * @max_write_size: maximum amount of bytes the underlying flash can write at a
- * time (MTD write buffer size)
- * @ro_mode: if this device is in read-only mode
- * @cdev: UBI character device major and minor numbers
- *
- * Note, @leb_size is the logical eraseblock size offered by the UBI device.
- * Volumes of this UBI device may have smaller logical eraseblock size if their
- * alignment is not equivalent to %1.
- *
- * The @max_write_size field describes flash write maximum write unit. For
- * example, NOR flash allows for changing individual bytes, so @min_io_size is
- * %1. However, it does not mean than NOR flash has to write data byte-by-byte.
- * Instead, CFI NOR flashes have a write-buffer of, e.g., 64 bytes, and when
- * writing large chunks of data, they write 64-bytes at a time. Obviously, this
- * improves write throughput.
- *
- * Also, the MTD device may have N interleaved (striped) flash chips
- * underneath, in which case @min_io_size can be physical min. I/O size of
- * single flash chip, while @max_write_size can be N * @min_io_size.
- *
- * The @max_write_size field is always greater or equivalent to @min_io_size.
- * E.g., some NOR flashes may have (@min_io_size = 1, @max_write_size = 64). In
- * contrast, NAND flashes usually have @min_io_size = @max_write_size = NAND
- * page size.
- */
-struct ubi_device_info {
- int ubi_num;
- int leb_size;
- int leb_start;
- int min_io_size;
- int max_write_size;
- int ro_mode;
- dev_t cdev;
-};
-
-/*
- * Volume notification types.
- * @UBI_VOLUME_ADDED: a volume has been added (an UBI device was attached or a
- * volume was created)
- * @UBI_VOLUME_REMOVED: a volume has been removed (an UBI device was detached
- * or a volume was removed)
- * @UBI_VOLUME_RESIZED: a volume has been re-sized
- * @UBI_VOLUME_RENAMED: a volume has been re-named
- * @UBI_VOLUME_UPDATED: data has been written to a volume
- *
- * These constants define which type of event has happened when a volume
- * notification function is invoked.
- */
-enum {
- UBI_VOLUME_ADDED,
- UBI_VOLUME_REMOVED,
- UBI_VOLUME_RESIZED,
- UBI_VOLUME_RENAMED,
- UBI_VOLUME_UPDATED,
-};
-
-/*
- * struct ubi_notification - UBI notification description structure.
- * @di: UBI device description object
- * @vi: UBI volume description object
- *
- * UBI notifiers are called with a pointer to an object of this type. The
- * object describes the notification. Namely, it provides a description of the
- * UBI device and UBI volume the notification informs about.
- */
-struct ubi_notification {
- struct ubi_device_info di;
- struct ubi_volume_info vi;
-};
-
-/* UBI descriptor given to users when they open UBI volumes */
-struct ubi_volume_desc;
-
-int ubi_get_device_info(int ubi_num, struct ubi_device_info *di);
-void ubi_get_volume_info(struct ubi_volume_desc *desc,
- struct ubi_volume_info *vi);
-struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode);
-struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name,
- int mode);
-
-void ubi_update_volume(struct ubi_volume_desc *desc);
-
-struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode);
-
-int ubi_register_volume_notifier(struct notifier_block *nb,
- int ignore_existing);
-int ubi_unregister_volume_notifier(struct notifier_block *nb);
-
-void ubi_close_volume(struct ubi_volume_desc *desc);
-void ubi_set_volume(struct ubi_volume_desc *desc);
-
-int ubi_leb_read(struct ubi_volume_desc *desc, int lnum, char *buf, int offset,
- int len, int check);
-int ubi_leb_write(struct ubi_volume_desc *desc, int lnum, const void *buf,
- int offset, int len);
-
-int ubi_leb_read_oob(struct ubi_volume_desc *desc, int lnum, void *buf, int offset,
- int len, void *spare);
-
-int ubi_leb_write_oob(struct ubi_volume_desc *desc, int lnum, const void *buf, int offset,
- int len, void *spare, int dtype);
-
-int ubi_leb_change(struct ubi_volume_desc *desc, int lnum, const void *buf,
- int len);
-int ubi_leb_erase(struct ubi_volume_desc *desc, int lnum);
-int ubi_leb_unmap(struct ubi_volume_desc *desc, int lnum);
-int ubi_leb_map(struct ubi_volume_desc *desc, int lnum);
-int ubi_is_mapped(struct ubi_volume_desc *desc, int lnum);
-int ubi_sync(int ubi_num);
-int ubi_flush(int ubi_num, int vol_id, int lnum);
-
-/*
- * This function is the same as the 'ubi_leb_read()' function, but it does not
- * provide the checking capability.
- */
-static inline int ubi_read(struct ubi_volume_desc *desc, int lnum, char *buf,
- int offset, int len)
-{
- return ubi_leb_read(desc, lnum, buf, offset, len, 0);
-}
-
-/*
- * This function is the same as the 'ubi_leb_write()' functions, but it does
- * not have the data type argument.
- */
-static inline int ubi_write(struct ubi_volume_desc *desc, int lnum,
- const void *buf, int offset, int len)
-{
- return ubi_leb_write(desc, lnum, buf, offset, len);
-}
-
-/*
- * This function is the same as the 'ubi_leb_change()' functions, but it does
- * not have the data type argument.
- */
-static inline int ubi_change(struct ubi_volume_desc *desc, int lnum,
- const void *buf, int len)
-{
- return ubi_leb_change(desc, lnum, buf, len);
-}
-
-#endif /* !__LINUX_UBI_H__ */
diff --git a/ANDROID_3.4.5/include/linux/mtd/xip.h b/ANDROID_3.4.5/include/linux/mtd/xip.h
deleted file mode 100644
index abed4dec..00000000
--- a/ANDROID_3.4.5/include/linux/mtd/xip.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * MTD primitives for XIP support
- *
- * Author: Nicolas Pitre
- * Created: Nov 2, 2004
- * Copyright: (C) 2004 MontaVista Software, Inc.
- *
- * This XIP support for MTD has been loosely inspired
- * by an earlier patch authored by David Woodhouse.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __LINUX_MTD_XIP_H__
-#define __LINUX_MTD_XIP_H__
-
-
-#ifdef CONFIG_MTD_XIP
-
-/*
- * We really don't want gcc to guess anything.
- * We absolutely _need_ proper inlining.
- */
-#include <linux/compiler.h>
-
-/*
- * Function that are modifying the flash state away from array mode must
- * obviously not be running from flash. The __xipram is therefore marking
- * those functions so they get relocated to ram.
- */
-#define __xipram noinline __attribute__ ((__section__ (".data")))
-
-/*
- * Each architecture has to provide the following macros. They must access
- * the hardware directly and not rely on any other (XIP) functions since they
- * won't be available when used (flash not in array mode).
- *
- * xip_irqpending()
- *
- * return non zero when any hardware interrupt is pending.
- *
- * xip_currtime()
- *
- * return a platform specific time reference to be used with
- * xip_elapsed_since().
- *
- * xip_elapsed_since(x)
- *
- * return in usecs the elapsed timebetween now and the reference x as
- * returned by xip_currtime().
- *
- * note 1: conversion to usec can be approximated, as long as the
- * returned value is <= the real elapsed time.
- * note 2: this should be able to cope with a few seconds without
- * overflowing.
- *
- * xip_iprefetch()
- *
- * Macro to fill instruction prefetch
- * e.g. a series of nops: asm volatile (".rep 8; nop; .endr");
- */
-
-#include <asm/mtd-xip.h>
-
-#ifndef xip_irqpending
-
-#warning "missing IRQ and timer primitives for XIP MTD support"
-#warning "some of the XIP MTD support code will be disabled"
-#warning "your system will therefore be unresponsive when writing or erasing flash"
-
-#define xip_irqpending() (0)
-#define xip_currtime() (0)
-#define xip_elapsed_since(x) (0)
-
-#endif
-
-#ifndef xip_iprefetch
-#define xip_iprefetch() do { } while (0)
-#endif
-
-/*
- * xip_cpu_idle() is used when waiting for a delay equal or larger than
- * the system timer tick period. This should put the CPU into idle mode
- * to save power and to be woken up only when some interrupts are pending.
- * This should not rely upon standard kernel code.
- */
-#ifndef xip_cpu_idle
-#define xip_cpu_idle() do { } while (0)
-#endif
-
-#else
-
-#define __xipram
-
-#endif /* CONFIG_MTD_XIP */
-
-#endif /* __LINUX_MTD_XIP_H__ */