diff options
| author | Wolfgang Denk <wd@pollux.denx.de> | 2005-09-14 23:53:32 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@pollux.denx.de> | 2005-09-14 23:53:32 +0200 | 
| commit | ac7eb8a315e25863637a8d2c02af18815458b63f (patch) | |
| tree | a01c125dab82468e09789d2a919e59e45b4a12fc /include/linux | |
| parent | 05b47540aae996908e48e10a5ff8b69862aadef3 (diff) | |
| download | olio-uboot-2014.01-ac7eb8a315e25863637a8d2c02af18815458b63f.tar.xz olio-uboot-2014.01-ac7eb8a315e25863637a8d2c02af18815458b63f.zip | |
Update of new NAND code
Patch by Ladislav Michl, 13 Sep 2005
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mtd/mtd-abi.h | 48 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 34 | ||||
| -rw-r--r-- | include/linux/mtd/nand.h | 44 | 
3 files changed, 63 insertions, 63 deletions
| diff --git a/include/linux/mtd/mtd-abi.h b/include/linux/mtd/mtd-abi.h index afe96b59c..3d1d41681 100644 --- a/include/linux/mtd/mtd-abi.h +++ b/include/linux/mtd/mtd-abi.h @@ -1,7 +1,7 @@  /*   * $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  + * Portions of MTD ABI definition which are shared by kernel and user space   */  #ifndef __MTD_ABI_H__ @@ -27,17 +27,17 @@ struct mtd_oob_buf {  #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 +#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 +/* 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) @@ -45,31 +45,31 @@ struct mtd_oob_buf {  #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 +/* 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 +#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 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 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,  +	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 */ diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 9ef4cced5..13e90803a 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h @@ -1,4 +1,4 @@ -/*  +/*   * $Id: mtd.h,v 1.56 2004/08/09 18:46:04 dmarlin Exp $   *   * Copyright (C) 1999-2003 David Woodhouse <dwmw2@infradead.org> et al. @@ -46,7 +46,7 @@ struct mtd_erase_region_info {  struct mtd_info {  	u_char type;  	u_int32_t flags; -	u_int32_t size;	 // Total size of the MTD +	u_int32_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 @@ -54,25 +54,25 @@ struct mtd_info {  	 */  	u_int32_t erasesize; -	u_int32_t oobblock;  // Size of OOB blocks (e.g. 512) -	u_int32_t oobsize;   // Amount of OOB data per block (e.g. 16) -	u_int32_t oobavail;  // Number of bytes in OOB area available for fs  +	u_int32_t oobblock;  /* Size of OOB blocks (e.g. 512) */ +	u_int32_t oobsize;   /* Amount of OOB data per block (e.g. 16) */ +	u_int32_t oobavail;  /* Number of bytes in OOB area available for fs  */  	u_int32_t ecctype;  	u_int32_t eccsize; -	 -	// Kernel-only stuff starts here. + +	/* Kernel-only stuff starts here. */  	char *name;  	int index; -	// oobinfo is a nand_oobinfo structure, which can be set by iotcl (MEMSETOOBINFO) +	/* oobinfo is a nand_oobinfo structure, which can be set by iotcl (MEMSETOOBINFO) */  	struct nand_oobinfo oobinfo;  	/* Data for variable erase regions. If numeraseregions is zero, -	 * it means that the whole device has erasesize as given above.  +	 * it means that the whole device has erasesize as given above.  	 */  	int numeraseregions; -	struct mtd_erase_region_info *eraseregions;  +	struct mtd_erase_region_info *eraseregions;  	/* This really shouldn't be here. It can go away in 2.5 */  	u_int32_t bank_size; @@ -95,10 +95,10 @@ struct mtd_info {  	int (*read_oob) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);  	int (*write_oob) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf); -	/*  -	 * Methods to access the protection register area, present in some  +	/* +	 * Methods to access the protection register area, present in some  	 * flash devices. The user data is one time programmable but the -	 * factory data is read only.  +	 * factory data is read only.  	 */  	int (*read_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf); @@ -109,14 +109,14 @@ struct mtd_info {  #if 0  	/* kvec-based read/write methods. We need these especially for NAND flash,  	   with its limited number of write cycles per erase. -	   NB: The 'count' parameter is the number of _vectors_, each of  +	   NB: The 'count' parameter is the number of _vectors_, each of  	   which contains an (ofs, len) tuple.  	*/  	int (*readv) (struct mtd_info *mtd, struct kvec *vecs, unsigned long count, loff_t from, size_t *retlen); -	int (*readv_ecc) (struct mtd_info *mtd, struct kvec *vecs, unsigned long count, loff_t from,  +	int (*readv_ecc) (struct mtd_info *mtd, struct kvec *vecs, unsigned long count, loff_t from,  		size_t *retlen, u_char *eccbuf, struct nand_oobinfo *oobsel);  	int (*writev) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to, size_t *retlen); -	int (*writev_ecc) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to,  +	int (*writev_ecc) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to,  		size_t *retlen, u_char *eccbuf, struct nand_oobinfo *oobsel);  #endif  	/* Sync */ @@ -179,7 +179,7 @@ int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs,  #define MTD_WRITEECC(mtd, args...) (*(mtd->write_ecc))(mtd, args)  #define MTD_READOOB(mtd, args...) (*(mtd->read_oob))(mtd, args)  #define MTD_WRITEOOB(mtd, args...) (*(mtd->write_oob))(mtd, args) -#define MTD_SYNC(mtd) do { if (mtd->sync) (*(mtd->sync))(mtd);  } while (0)  +#define MTD_SYNC(mtd) do { if (mtd->sync) (*(mtd->sync))(mtd);  } while (0)  #ifdef CONFIG_MTD_PARTITIONS diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 9a0108f78..065e1cb4e 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -24,7 +24,7 @@   *			bat later if I did something naughty.   *   10-11-2000 SJH     Added private NAND flash structure for driver   *   10-24-2000 SJH     Added prototype for 'nand_scan' function - *   10-29-2001 TG	changed nand_chip structure to support  + *   10-29-2001 TG	changed nand_chip structure to support   *			hardwarespecific function for accessing control lines   *   02-21-2002 TG	added support for different read/write adress and   *			ready/busy line access function @@ -36,14 +36,14 @@   *			CONFIG_MTD_NAND_ECC_JFFS2 is not set   *   08-10-2002 TG	extensions to nand_chip structure to support HW-ECC   * - *   08-29-2002 tglx 	nand_chip structure: data_poi for selecting  + *   08-29-2002 tglx 	nand_chip structure: data_poi for selecting   *			internal / fs-driver buffer   *			support for 6byte/512byte hardware ECC   *			read_ecc, write_ecc extended for different oob-layout   *			oob layout selections: NAND_NONE_OOB, NAND_JFFS2_OOB,   *			NAND_YAFFS_OOB   *  11-25-2002 tglx	Added Manufacturer code FUJITSU, NATIONAL - *			Split manufacturer and device ID structures  + *			Split manufacturer and device ID structures   *   *  02-08-2004 tglx 	added option field to nand structure for chip anomalities   *  05-25-2004 tglx 	added bad block table support, ST-MICRO manufacturer id @@ -120,7 +120,7 @@ extern int nand_read_raw (struct mtd_info *mtd, uint8_t *buf, loff_t from, size_  #define NAND_STATUS_READY	0x40  #define NAND_STATUS_WP		0x80 -/*  +/*   * Constants for ECC_MODES   */ @@ -162,12 +162,12 @@ extern int nand_read_raw (struct mtd_info *mtd, uint8_t *buf, loff_t from, size_  #define NAND_CACHEPRG		0x00000008  /* Chip has copy back function */  #define NAND_COPYBACK		0x00000010 -/* AND Chip which has 4 banks and a confusing page / block  +/* 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  +#define NAND_4PAGE_ARRAY	0x00000040  /* Options valid for Samsung large page devices */  #define NAND_SAMSUNG_LP_OPTIONS \ @@ -186,8 +186,8 @@ extern int nand_read_raw (struct mtd_info *mtd, uint8_t *buf, loff_t from, size_  /* Use a flash based bad block table. This option is passed to the   * default bad block table function. */  #define NAND_USE_FLASH_BBT	0x00010000 -/* The hw ecc generator provides a syndrome instead a ecc value on read  - * This can only work if we have the ecc bytes directly behind the  +/* The hw ecc generator provides a syndrome instead a ecc value on read + * This can only work if we have the ecc bytes directly behind the   * data bytes. Applies for DOC and AG-AND Renesas HW Reed Solomon generators */  #define NAND_HWECC_SYNDROME	0x00020000 @@ -218,7 +218,7 @@ struct nand_chip;  #if 0  /**   * struct nand_hw_control - Control structure for hardware controller (e.g ECC generator) shared among independend devices - * @lock:               protection lock   + * @lock:               protection lock   * @active:		the mtd device which holds the controller currently   */  struct nand_hw_control { @@ -229,8 +229,8 @@ struct nand_hw_control {  /**   * 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  + * @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   * @write_byte:		[REPLACEABLE] write one byte to the chip   * @read_word:		[REPLACEABLE] read one word from the chip @@ -253,7 +253,7 @@ struct nand_hw_control {   *			be provided if a hardware ECC is available   * @erase_cmd:		[INTERN] erase command write function, selectable due to AND support   * @scan_bbt:		[REPLACEABLE] function to scan bad block table - * @eccmode:		[BOARDSPECIFIC] mode of ecc, see defines  + * @eccmode:		[BOARDSPECIFIC] mode of ecc, see defines   * @eccsize: 		[INTERN] databytes used per ecc-calculation   * @eccbytes: 		[INTERN] number of ecc bytes per ecc-calculation step   * @eccsteps:		[INTERN] number of ecc calculation steps per page @@ -265,7 +265,7 @@ struct nand_hw_control {   * @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 - * @data_buf:		[INTERN] internal buffer for one page + oob  + * @data_buf:		[INTERN] internal buffer for one page + oob   * @oob_buf:		[INTERN] oob buffer for one eraseblock   * @oobdirty:		[INTERN] indicates that oob_buf must be reinitialized   * @data_poi:		[INTERN] pointer to a data buffer @@ -280,20 +280,20 @@ struct nand_hw_control {   * @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  + * @badblock_pattern:	[REPLACEABLE] bad block scan pattern used for initial bad block scan   * @controller:		[OPTIONAL] a pointer to a hardware controller structure which is shared among multiple independend devices   * @priv:		[OPTIONAL] pointer to private chip date   */ -  +  struct nand_chip {  	void  __iomem	*IO_ADDR_R;  	void  __iomem 	*IO_ADDR_W; -	 +  	u_char		(*read_byte)(struct mtd_info *mtd);  	void		(*write_byte)(struct mtd_info *mtd, u_char byte);  	u16		(*read_word)(struct mtd_info *mtd);  	void		(*write_word)(struct mtd_info *mtd, u16 word); -	 +  	void		(*write_buf)(struct mtd_info *mtd, const u_char *buf, int len);  	void		(*read_buf)(struct mtd_info *mtd, u_char *buf, int len);  	int		(*verify_buf)(struct mtd_info *mtd, const u_char *buf, int len); @@ -358,7 +358,7 @@ struct nand_chip {   * @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  + *		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. @@ -387,7 +387,7 @@ struct nand_manufacturers {  extern struct nand_flash_dev nand_flash_ids[];  extern struct nand_manufacturers nand_manuf_ids[]; -/**  +/**   * 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 @@ -398,14 +398,14 @@ extern struct nand_manufacturers nand_manuf_ids[];   * @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  + *		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 /  + * @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  + * 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. |