mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +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__ */
 |