diff options
Diffstat (limited to 'include/linux/mtd/mtd.h')
| -rw-r--r-- | include/linux/mtd/mtd.h | 32 | 
1 files changed, 26 insertions, 6 deletions
| 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__ */ |