mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	This brings the core NAND code up to date with the Linux kernel. Since there were several drivers in Linux as of the last update that are not in u-boot, I'm not bringing over new drivers that have been added since in the absence of an interested party. I did not update OneNAND since it was recently synced by Kyungmin Park, and I'm not sure exactly what the common ancestor is. Signed-off-by: Scott Wood <scottwood@freescale.com>
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * (C) 2003 David Woodhouse <dwmw2@infradead.org>
 | |
|  *
 | |
|  * Interface to Linux block layer for MTD 'translation layers'.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef __MTD_TRANS_H__
 | |
| #define __MTD_TRANS_H__
 | |
| 
 | |
| /* XXX U-BOOT XXX */
 | |
| #if 0
 | |
| #include <linux/mutex.h>
 | |
| #else
 | |
| #include <linux/list.h>
 | |
| #endif
 | |
| 
 | |
| 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;
 | |
| /* XXX U-BOOT XXX */
 | |
| #if 0
 | |
| 	struct mutex lock;
 | |
| #endif
 | |
| 	int devnum;
 | |
| 	unsigned long size;
 | |
| 	int readonly;
 | |
| 	void *blkcore_priv; /* gendisk in 2.5, devfs_handle in 2.4 */
 | |
| };
 | |
| 
 | |
| struct blkcore_priv; /* Differs for 2.4 and 2.5 kernels; private */
 | |
| 
 | |
| 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);
 | |
| 
 | |
| 	/* 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;
 | |
| 
 | |
| 	struct mtd_blkcore_priv *blkcore_priv;
 | |
| };
 | |
| 
 | |
| 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);
 | |
| 
 | |
| 
 | |
| #endif /* __MTD_TRANS_H__ */
 |