diff options
| author | Bartlomiej Sieka <tur@semihalf.com> | 2006-02-24 09:37:22 +0100 | 
|---|---|---|
| committer | Bartlomiej Sieka <tur@pollux.(none)> | 2006-02-24 09:37:22 +0100 | 
| commit | 038ccac511214b062c56f22b9413f784b86bcd87 (patch) | |
| tree | 9925a8bb04e791550c76e864c5821b12fc478e2e /include/linux/mtd/mtd-abi.h | |
| parent | 84e106c09d324e345f335d2edef246d0b4c9131a (diff) | |
| parent | 8e9655f863246db60c51140153186acc2afdc855 (diff) | |
| download | olio-uboot-2014.01-038ccac511214b062c56f22b9413f784b86bcd87.tar.xz olio-uboot-2014.01-038ccac511214b062c56f22b9413f784b86bcd87.zip | |
Merge with /home/wd/git/u-boot/testing-NAND/ to add new NAND handling.
Diffstat (limited to 'include/linux/mtd/mtd-abi.h')
| -rw-r--r-- | include/linux/mtd/mtd-abi.h | 99 | 
1 files changed, 99 insertions, 0 deletions
| diff --git a/include/linux/mtd/mtd-abi.h b/include/linux/mtd/mtd-abi.h new file mode 100644 index 000000000..3d1d41681 --- /dev/null +++ b/include/linux/mtd/mtd-abi.h @@ -0,0 +1,99 @@ +/* + * $Id: mtd-abi.h,v 1.7 2004/11/23 15:37:32 gleixner Exp $ + * + * Portions of MTD ABI definition which are shared by kernel and user space + */ + +#ifndef __MTD_ABI_H__ +#define __MTD_ABI_H__ + +struct erase_info_user { +	uint32_t start; +	uint32_t length; +}; + +struct mtd_oob_buf { +	uint32_t start; +	uint32_t length; +	unsigned char *ptr; +}; + +#define MTD_ABSENT		0 +#define MTD_RAM			1 +#define MTD_ROM			2 +#define MTD_NORFLASH		3 +#define MTD_NANDFLASH		4 +#define MTD_PEROM		5 +#define MTD_OTHER		14 +#define MTD_UNKNOWN		15 + +#define MTD_CLEAR_BITS		1       /* Bits can be cleared (flash) */ +#define MTD_SET_BITS		2       /* Bits can be set */ +#define MTD_ERASEABLE		4       /* Has an erase function */ +#define MTD_WRITEB_WRITEABLE	8       /* Direct IO is possible */ +#define MTD_VOLATILE		16      /* Set for RAMs */ +#define MTD_XIP			32	/* eXecute-In-Place possible */ +#define MTD_OOB			64	/* Out-of-band data (NAND flash) */ +#define MTD_ECC			128	/* Device capable of automatic ECC */ +#define MTD_NO_VIRTBLOCKS	256	/* Virtual blocks not allowed */ + +/* Some common devices / combinations of capabilities */ +#define MTD_CAP_ROM		0 +#define MTD_CAP_RAM		(MTD_CLEAR_BITS|MTD_SET_BITS|MTD_WRITEB_WRITEABLE) +#define MTD_CAP_NORFLASH        (MTD_CLEAR_BITS|MTD_ERASEABLE) +#define MTD_CAP_NANDFLASH       (MTD_CLEAR_BITS|MTD_ERASEABLE|MTD_OOB) +#define MTD_WRITEABLE		(MTD_CLEAR_BITS|MTD_SET_BITS) + + +/* Types of automatic ECC/Checksum available */ +#define MTD_ECC_NONE		0 	/* No automatic ECC available */ +#define MTD_ECC_RS_DiskOnChip	1	/* Automatic ECC on DiskOnChip */ +#define MTD_ECC_SW		2	/* SW ECC for Toshiba & Samsung devices */ + +/* ECC byte placement */ +#define MTD_NANDECC_OFF		0	/* Switch off ECC (Not recommended) */ +#define MTD_NANDECC_PLACE	1	/* Use the given placement in the structure (YAFFS1 legacy mode) */ +#define MTD_NANDECC_AUTOPLACE	2	/* Use the default placement scheme */ +#define MTD_NANDECC_PLACEONLY	3	/* Use the given placement in the structure (Do not store ecc result on read) */ +#define MTD_NANDECC_AUTOPL_USR 	4	/* Use the given autoplacement scheme rather than using the default */ + +struct mtd_info_user { +	uint8_t type; +	uint32_t flags; +	uint32_t size;	 /* Total size of the MTD */ +	uint32_t erasesize; +	uint32_t oobblock;  /* Size of OOB blocks (e.g. 512) */ +	uint32_t oobsize;   /* Amount of OOB data per block (e.g. 16) */ +	uint32_t ecctype; +	uint32_t eccsize; +}; + +struct region_info_user { +	uint32_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 in this region */ +	uint32_t regionindex; +}; + +#define MEMGETINFO              _IOR('M', 1, struct mtd_info_user) +#define MEMERASE                _IOW('M', 2, struct erase_info_user) +#define MEMWRITEOOB             _IOWR('M', 3, struct mtd_oob_buf) +#define MEMREADOOB              _IOWR('M', 4, struct mtd_oob_buf) +#define MEMLOCK                 _IOW('M', 5, struct erase_info_user) +#define MEMUNLOCK               _IOW('M', 6, struct erase_info_user) +#define MEMGETREGIONCOUNT	_IOR('M', 7, int) +#define MEMGETREGIONINFO	_IOWR('M', 8, struct region_info_user) +#define MEMSETOOBSEL		_IOW('M', 9, struct nand_oobinfo) +#define MEMGETOOBSEL		_IOR('M', 10, struct nand_oobinfo) +#define MEMGETBADBLOCK		_IOW('M', 11, loff_t) +#define MEMSETBADBLOCK		_IOW('M', 12, loff_t) + +struct nand_oobinfo { +	uint32_t useecc; +	uint32_t eccbytes; +	uint32_t oobfree[8][2]; +	uint32_t eccpos[32]; +}; + +#endif /* __MTD_ABI_H__ */ |