⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jedec_probe.c

📁 一个2.4.21版本的嵌入式linux内核
💻 C
📖 第 1 页 / 共 2 页
字号:
/*    Common Flash Interface probe code.   (C) 2000 Red Hat. GPL'd.   $Id: jedec_probe.c,v 1.19 2002/11/12 13:12:10 dwmw2 Exp $   See JEDEC (http://www.jedec.org/) standard JESD21C (section 3.5)   for the standard this probe goes back to.*/#include <linux/config.h>#include <linux/module.h>#include <linux/types.h>#include <linux/kernel.h>#include <asm/io.h>#include <asm/byteorder.h>#include <linux/errno.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/mtd/map.h>#include <linux/mtd/cfi.h>#include <linux/mtd/gen_probe.h>/* Manufacturers */#define MANUFACTURER_AMD	0x0001#define MANUFACTURER_ATMEL	0x001f#define MANUFACTURER_FUJITSU	0x0004#define MANUFACTURER_INTEL	0x0089#define MANUFACTURER_MACRONIX	0x00C2#define MANUFACTURER_ST		0x0020#define MANUFACTURER_SST	0x00BF#define MANUFACTURER_TOSHIBA	0x0098/* AMD */#define AM29F800BB	0x2258#define AM29F800BT	0x22D6#define AM29LV800BB	0x225B#define AM29LV800BT	0x22DA#define AM29LV160DT	0x22C4#define AM29LV160DB	0x2249#define AM29F017D	0x003D#define AM29F016	0x00AD#define AM29F080	0x00D5#define AM29F040	0x00A4#define AM29LV040B	0x004F#define AM29F032B	0x0041/* Atmel */#define AT49BV512	0x0003#define AT29LV512	0x003d#define AT49BV16X	0x00C0#define AT49BV16XT	0x00C2#define AT49BV32X	0x00C8#define AT49BV32XT	0x00C9/* Fujitsu */#define MBM29LV650UE	0x22D7#define MBM29LV320TE	0x22F6#define MBM29LV320BE	0x22F9#define MBM29LV160TE	0x22C4#define MBM29LV160BE	0x2249#define MBM29LV800BA	0x225B#define MBM29LV800TA	0x22DA/* Intel */#define I28F004B3T	0x00d4#define I28F004B3B	0x00d5#define I28F400B3T	0x8894#define I28F400B3B	0x8895#define I28F008S5	0x00a6#define I28F016S5	0x00a0#define I28F008SA	0x00a2#define I28F008B3T	0x00d2#define I28F008B3B	0x00d3#define I28F800B3T	0x8892#define I28F800B3B	0x8893#define I28F016S3	0x00aa#define I28F016B3T	0x00d0#define I28F016B3B	0x00d1#define I28F160B3T	0x8890#define I28F160B3B	0x8891#define I28F320B3T	0x8896#define I28F320B3B	0x8897#define I28F640B3T	0x8898#define I28F640B3B	0x8899#define I82802AB	0x00ad#define I82802AC	0x00ac/* Macronix */#define MX29LV160T	0x22C4#define MX29LV160B	0x2249#define MX29F016	0x00AD#define MX29F004T	0x0045#define MX29F004B	0x0046/* ST - www.st.com */#define M29W800T	0x00D7#define M29W160DT	0x22C4#define M29W160DB	0x2249#define M29W040B	0x00E3/* SST */#define SST29EE512	0x005d#define SST29LE512	0x003d#define SST39LF800	0x2781#define SST39LF160	0x2782#define SST39LF512	0x00D4#define SST39LF010	0x00D5#define SST39LF020	0x00D6#define SST39LF040	0x00D7#define SST39SF010A	0x00B5#define SST39SF020A	0x00B6#define SST49LF030A	0x001C#define SST49LF040A	0x0051#define SST49LF080A	0x005B/* Toshiba */#define TC58FVT160	0x00C2#define TC58FVB160	0x0043#define TC58FVT321	0x009A#define TC58FVB321	0x009C#define TC58FVT641	0x0093#define TC58FVB641	0x0095struct amd_flash_info {	const __u16 mfr_id;	const __u16 dev_id;	const char *name;	const int DevSize;	const int InterfaceDesc;	const int NumEraseRegions;	const int CmdSet;	const ulong regions[4];};#define ERASEINFO(size,blocks) (size<<8)|(blocks-1)#define SIZE_64KiB  16#define SIZE_128KiB 17#define SIZE_256KiB 18#define SIZE_512KiB 19#define SIZE_1MiB   20#define SIZE_2MiB   21#define SIZE_4MiB   22#define SIZE_8MiB   23static const struct amd_flash_info jedec_table[] = {	{		mfr_id: MANUFACTURER_AMD,		dev_id: AM29F032B,		name: "AMD AM29F032B",		DevSize: SIZE_4MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 1,		regions: {ERASEINFO(0x10000,64)		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29LV160DT,		name: "AMD AM29LV160DT",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,31),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29LV160DB,		name: "AMD AM29LV160DB",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,31)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVT160,		name: "Toshiba TC58FVT160",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,31),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVB160,		name: "Toshiba TC58FVB160",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,31)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVB321,		name: "Toshiba TC58FVB321",		DevSize: SIZE_4MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x02000,8),			  ERASEINFO(0x10000,63)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVT321,		name: "Toshiba TC58FVT321",		DevSize: SIZE_4MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x10000,63),			  ERASEINFO(0x02000,8)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVB641,		name: "Toshiba TC58FVB641",		DevSize: SIZE_8MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x02000,8),			  ERASEINFO(0x10000,127)		}	}, {		mfr_id: MANUFACTURER_TOSHIBA,		dev_id: TC58FVT641,		name: "Toshiba TC58FVT641",		DevSize: SIZE_8MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x10000,127),			  ERASEINFO(0x02000,8)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV650UE,		name: "Fujitsu MBM29LV650UE",		DevSize: SIZE_8MiB,		CmdSet: P_ID_AMD_STD,		NumEraseRegions: 1,		regions: {ERASEINFO(0x10000,128)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV320TE,		name: "Fujitsu MBM29LV320TE",		DevSize: SIZE_4MiB,		CmdSet: P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x10000,63),			  ERASEINFO(0x02000,8)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV320BE,		name: "Fujitsu MBM29LV320BE",		DevSize: SIZE_4MiB,		CmdSet: P_ID_AMD_STD,		NumEraseRegions: 2,		regions: {ERASEINFO(0x02000,8),			  ERASEINFO(0x10000,63)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV160TE,		name: "Fujitsu MBM29LV160TE",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,31),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV160BE,		name: "Fujitsu MBM29LV160BE",		DevSize: SIZE_2MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,31)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV800BA,		name: "Fujitsu MBM29LV800BA",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,15)		}	}, {		mfr_id: MANUFACTURER_FUJITSU,		dev_id: MBM29LV800TA,		name: "Fujitsu MBM29LV800TA",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,15), 			  ERASEINFO(0x08000,1), 			  ERASEINFO(0x02000,2), 			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29LV800BB,		name: "AMD AM29LV800BB",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,15),		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29F800BB,		name: "AMD AM29F800BB",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x04000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x10000,15),		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29LV800BT,		name: "AMD AM29LV800BT",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,15),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29F800BT,		name: "AMD AM29F800BT",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,15),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id: MANUFACTURER_AMD,		dev_id: AM29LV800BB,		name: "AMD AM29LV800BB",		DevSize: SIZE_1MiB,		CmdSet:	P_ID_AMD_STD,		NumEraseRegions: 4,		regions: {ERASEINFO(0x10000,15),			  ERASEINFO(0x08000,1),			  ERASEINFO(0x02000,2),			  ERASEINFO(0x04000,1)		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F004B3B,		name:			"Intel 28F004B3B",		DevSize:		SIZE_512KiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 7),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F004B3T,		name:			"Intel 28F004B3T",		DevSize:		SIZE_512KiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 7),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F400B3B,		name:			"Intel 28F400B3B",		DevSize:		SIZE_512KiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 7),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F400B3T,		name:			"Intel 28F400B3T",		DevSize:		SIZE_512KiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 7),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F008B3B,		name:			"Intel 28F008B3B",		DevSize:		SIZE_1MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 15),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F008B3T,		name:			"Intel 28F008B3T",		DevSize:		SIZE_1MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 15),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id: MANUFACTURER_INTEL,		dev_id: I28F008S5,		name: "Intel 28F008S5",		DevSize: SIZE_1MiB,		CmdSet: P_ID_INTEL_EXT,		NumEraseRegions: 1,		regions: {ERASEINFO(0x10000,16),		}	}, {		mfr_id: MANUFACTURER_INTEL,		dev_id: I28F016S5,		name: "Intel 28F016S5",		DevSize: SIZE_2MiB,		CmdSet: P_ID_INTEL_EXT,		NumEraseRegions: 1,		regions: {ERASEINFO(0x10000,32),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F008SA,		name:			"Intel 28F008SA",		DevSize:		SIZE_1MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	1,		regions: {			ERASEINFO(0x10000, 16),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F800B3B,		name:			"Intel 28F800B3B",		DevSize:		SIZE_1MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 15),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F800B3T,		name:			"Intel 28F800B3T",		DevSize:		SIZE_1MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 15),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F016B3B,		name:			"Intel 28F016B3B",		DevSize:		SIZE_2MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 31),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F016S3,		name:			"Intel I28F016S3",		DevSize:		SIZE_2MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	1,		regions: {			ERASEINFO(0x10000, 32),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F016B3T,		name:			"Intel 28F016B3T",		DevSize:		SIZE_2MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 31),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F160B3B,		name:			"Intel 28F160B3B",		DevSize:		SIZE_2MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 31),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F160B3T,		name:			"Intel 28F160B3T",		DevSize:		SIZE_2MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 31),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F320B3B,		name:			"Intel 28F320B3B",		DevSize:		SIZE_4MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 63),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F320B3T,		name:			"Intel 28F320B3T",		DevSize:		SIZE_4MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x10000, 63),			ERASEINFO(0x02000, 8),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F640B3B,		name:			"Intel 28F640B3B",		DevSize:		SIZE_8MiB,		CmdSet:			P_ID_INTEL_STD,		NumEraseRegions:	2,		regions: {			ERASEINFO(0x02000, 8),			ERASEINFO(0x10000, 127),		}	}, {		mfr_id:			MANUFACTURER_INTEL,		dev_id:			I28F640B3T,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -