diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mtd/blktrans.h | 2 | ||||
| -rw-r--r-- | include/linux/mtd/doc2000.h | 2 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 32 | ||||
| -rw-r--r-- | include/linux/mtd/nand.h | 12 | ||||
| -rw-r--r-- | include/linux/mtd/nand_ecc.h | 2 | ||||
| -rw-r--r-- | include/linux/mtd/nftl.h | 7 | ||||
| -rw-r--r-- | include/linux/mtd/onenand.h | 1 | ||||
| -rw-r--r-- | include/linux/mtd/onenand_regs.h | 6 | 
8 files changed, 47 insertions, 17 deletions
| diff --git a/include/linux/mtd/blktrans.h b/include/linux/mtd/blktrans.h index d1ded51d7..32acb6ce9 100644 --- a/include/linux/mtd/blktrans.h +++ b/include/linux/mtd/blktrans.h @@ -1,6 +1,4 @@  /* - * $Id: blktrans.h,v 1.6 2005/11/07 11:14:54 gleixner Exp $ - *   * (C) 2003 David Woodhouse <dwmw2@infradead.org>   *   * Interface to Linux block layer for MTD 'translation layers'. diff --git a/include/linux/mtd/doc2000.h b/include/linux/mtd/doc2000.h index 12de2845a..ba29d53ec 100644 --- a/include/linux/mtd/doc2000.h +++ b/include/linux/mtd/doc2000.h @@ -6,8 +6,6 @@   * Copyright (C) 2002-2003 Greg Ungerer <gerg@snapgear.com>   * Copyright (C) 2002-2003 SnapGear Inc   * - * $Id: doc2000.h,v 1.25 2005/11/07 11:14:54 gleixner Exp $ - *   * Released under GPL   */ diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 55d33dd11..354e3a0bc 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h @@ -1,6 +1,4 @@  /* - * $Id: mtd.h,v 1.61 2005/11/07 11:14:54 gleixner Exp $ - *   * Copyright (C) 1999-2003 David Woodhouse <dwmw2@infradead.org> et al.   *   * Released under GPL @@ -132,7 +130,7 @@ struct mtd_info {  	u_int32_t oobavail;  /* Available OOB bytes per block */  	/* Kernel-only stuff starts here. */ -	char *name; +	const char *name;  	int index;  	/* ecc layout structure pointer - read only ! */ @@ -144,18 +142,36 @@ struct mtd_info {  	int numeraseregions;  	struct mtd_erase_region_info *eraseregions; +	/* +	 * Erase is an asynchronous operation.  Device drivers are supposed +	 * to call instr->callback() whenever the operation completes, even +	 * if it completes with a failure. +	 * Callers are supposed to pass a callback function and wait for it +	 * to be called before writing to the block. +	 */  	int (*erase) (struct mtd_info *mtd, struct erase_info *instr);  	/* This stuff for eXecute-In-Place */ -	int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf); +	/* phys is optional and may be set to NULL */ +	int (*point) (struct mtd_info *mtd, loff_t from, size_t len, +			size_t *retlen, void **virt, phys_addr_t *phys);  	/* We probably shouldn't allow XIP if the unpoint isn't a NULL */ -	void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len); +	void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len);  	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); +	/* In blackbox flight recorder like scenarios we want to make successful +	   writes in interrupt context. panic_write() is only intended to be +	   called when its known the kernel is about to panic and we need the +	   write to succeed. Since the kernel is not going to be running for much +	   longer, this function can break locks and delay to ensure the write +	   succeeds (but not sleep). */ + +	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 (*write_oob) (struct mtd_info *mtd, loff_t to, @@ -274,7 +290,11 @@ static inline void mtd_erase_callback(struct erase_info *instr)  			printk(KERN_INFO args);		\  	} while(0)  #else /* CONFIG_MTD_DEBUG */ -#define MTDDEBUG(n, args...) do { } while(0) +#define MTDDEBUG(n, args...)				\ +	do {						\ +		if (0)					\ +			printk(KERN_INFO args);		\ +	} while(0)  #endif /* CONFIG_MTD_DEBUG */  #endif /* __MTD_MTD_H__ */ diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 7ac72de95..39f8aec67 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -1,12 +1,10 @@  /*   *  linux/include/linux/mtd/nand.h   * - *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com> + *  Copyright (c) 2000 David Woodhouse <dwmw2@infradead.org>   *                     Steven J. Hill <sjhill@realitydiluted.com>   *		       Thomas Gleixner <tglx@linutronix.de>   * - * $Id: nand.h,v 1.74 2005/09/15 13:58:50 vwool Exp $ - *   * 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. @@ -190,6 +188,9 @@ typedef enum {  #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) @@ -278,6 +279,10 @@ struct nand_ecc_ctrl {  	int			(*read_page)(struct mtd_info *mtd,  					     struct nand_chip *chip,  					     uint8_t *buf); +	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); @@ -435,6 +440,7 @@ struct nand_chip {  #define NAND_MFR_STMICRO	0x20  #define NAND_MFR_HYNIX		0xad  #define NAND_MFR_MICRON		0x2c +#define NAND_MFR_AMD		0x01  /**   * struct nand_flash_dev - NAND Flash Device ID Structure diff --git a/include/linux/mtd/nand_ecc.h b/include/linux/mtd/nand_ecc.h index 12c5bc342..090da5054 100644 --- a/include/linux/mtd/nand_ecc.h +++ b/include/linux/mtd/nand_ecc.h @@ -3,8 +3,6 @@   *   *  Copyright (C) 2000 Steven J. Hill (sjhill@realitydiluted.com)   * - * $Id: nand_ecc.h,v 1.4 2004/06/17 02:35:02 dbrown Exp $ - *   * 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. diff --git a/include/linux/mtd/nftl.h b/include/linux/mtd/nftl.h index 6731a16e7..fe22e0dce 100644 --- a/include/linux/mtd/nftl.h +++ b/include/linux/mtd/nftl.h @@ -1,6 +1,4 @@  /* - * $Id: nftl.h,v 1.16 2004/06/30 14:49:00 dbrown Exp $ - *   * (C) 1999-2003 David Woodhouse <dwmw2@infradead.org>   */ @@ -43,6 +41,11 @@ struct NFTLrecord {  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 diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h index 420eb140a..4467c2bb2 100644 --- a/include/linux/mtd/onenand.h +++ b/include/linux/mtd/onenand.h @@ -51,6 +51,7 @@ struct onenand_bufferram {   * @param page_shift	[INTERN] number of address bits in a page   * @param ppb_shift	[INTERN] number of address bits in a pages per block   * @param page_mask	[INTERN] a page per block mask + * @param writesize	[INTERN] a real page size   * @param bufferam_index	[INTERN] BufferRAM index   * @param bufferam	[INTERN] BufferRAM info   * @param readw		[REPLACEABLE] hardware specific function for read short diff --git a/include/linux/mtd/onenand_regs.h b/include/linux/mtd/onenand_regs.h index 6a8aa28b1..a245e14bf 100644 --- a/include/linux/mtd/onenand_regs.h +++ b/include/linux/mtd/onenand_regs.h @@ -67,12 +67,16 @@  /*   * Device ID Register F001h (R)   */ +#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) @@ -110,6 +114,8 @@  #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) |