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

📄 sa1100-flash.c

📁 内核linux2.4.20,可跟rtlinux3.2打补丁 组成实时linux系统,编译内核
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * Flash memory access on SA11x0 based devices *  * (C) 2000 Nicolas Pitre <nico@cam.org> *  * $Id: sa1100-flash.c,v 1.22 2001/10/02 10:04:52 rmk Exp $ */#include <linux/config.h>#include <linux/module.h>#include <linux/types.h>#include <linux/kernel.h>#include <linux/mtd/mtd.h>#include <linux/mtd/map.h>#include <linux/mtd/partitions.h>#include <asm/hardware.h>#include <asm/io.h>#ifndef CONFIG_ARCH_SA1100#error This is for SA1100 architecture only#endif#define WINDOW_ADDR 0xe8000000static __u8 sa1100_read8(struct map_info *map, unsigned long ofs){	return readb(map->map_priv_1 + ofs);}static __u16 sa1100_read16(struct map_info *map, unsigned long ofs){	return readw(map->map_priv_1 + ofs);}static __u32 sa1100_read32(struct map_info *map, unsigned long ofs){	return readl(map->map_priv_1 + ofs);}static void sa1100_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len){	memcpy(to, (void *)(map->map_priv_1 + from), len);}static void sa1100_write8(struct map_info *map, __u8 d, unsigned long adr){	writeb(d, map->map_priv_1 + adr);}static void sa1100_write16(struct map_info *map, __u16 d, unsigned long adr){	writew(d, map->map_priv_1 + adr);}static void sa1100_write32(struct map_info *map, __u32 d, unsigned long adr){	writel(d, map->map_priv_1 + adr);}static void sa1100_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len){	memcpy((void *)(map->map_priv_1 + to), from, len);}#ifdef CONFIG_SA1100_H3600static void h3600_set_vpp(struct map_info *map, int vpp){	if (vpp)		set_h3600_egpio(EGPIO_H3600_VPP_ON);	else		clr_h3600_egpio(EGPIO_H3600_VPP_ON);}#endif#ifdef CONFIG_SA1100_JORNADA720static void jornada720_set_vpp(int vpp){  if (vpp)      PPSR |= 0x80;  else      PPSR &= ~0x80;  PPDR |= 0x80;}#endifstatic struct map_info sa1100_map = {	name:		"SA1100 flash",	read8:		sa1100_read8,	read16:		sa1100_read16,	read32:		sa1100_read32,	copy_from:	sa1100_copy_from,	write8:		sa1100_write8,	write16:	sa1100_write16,	write32:	sa1100_write32,	copy_to:	sa1100_copy_to,	map_priv_1:	WINDOW_ADDR,};/* * Here are partition information for all known SA1100-based devices. * See include/linux/mtd/partitions.h for definition of the mtd_partition * structure. *  * The *_max_flash_size is the maximum possible mapped flash size which * is not necessarily the actual flash size.  It must correspond to the  * value specified in the mapping definition defined by the * "struct map_desc *_io_desc" for the corresponding machine. */#ifdef CONFIG_SA1100_ASSABET/* Phase 4 Assabet has two 28F160B3 flash parts in bank 0: */static unsigned long assabet4_max_flash_size = 0x00400000;static struct mtd_partition assabet4_partitions[] = {        {                name: "bootloader",                size: 0x00020000,                offset: 0,                mask_flags: MTD_WRITEABLE        },{                name: "bootloader params",                size: 0x00020000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "jffs",                size: MTDPART_SIZ_FULL,                offset: MTDPART_OFS_APPEND        }};/* Phase 5 Assabet has two 28F128J3A flash parts in bank 0: */static unsigned long assabet5_max_flash_size = 0x02000000;static struct mtd_partition assabet5_partitions[] = {        {                name: "bootloader",                size: 0x00040000,                offset: 0,                mask_flags: MTD_WRITEABLE        },{                name: "bootloader params",                size: 0x00040000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "jffs",                size: MTDPART_SIZ_FULL,                offset: MTDPART_OFS_APPEND        }};#define assabet_max_flash_size assabet5_max_flash_size#define assabet_partitions     assabet5_partitions#endif#ifdef CONFIG_SA1100_FLEXANET/* Flexanet has two 28F128J3A flash parts in bank 0: */static unsigned long flexanet_max_flash_size = 0x02000000;static struct mtd_partition flexanet_partitions[] = {        {                name: "bootloader",                size: 0x00040000,                offset: 0,                mask_flags: MTD_WRITEABLE        },{                name: "bootloader params",                size: 0x00040000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "kernel",                size: 0x000C0000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "altkernel",                size: 0x000C0000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "root",                size: 0x00400000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "free1",                size: 0x00300000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "free2",                size: 0x00300000,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        },{                name: "free3",                size: MTDPART_SIZ_FULL,                offset: MTDPART_OFS_APPEND,                mask_flags: MTD_WRITEABLE        }};#endif#ifdef CONFIG_SA1100_HUW_WEBPANELstatic unsigned long huw_webpanel_max_flash_size = 0x01000000;static struct mtd_partition huw_webpanel_partitions[] = {	{ 	  name: "Loader",	  size: 0x00040000,	  offset: 0,	},{	  name: "Sector 1",	  size: 0x00040000,	  offset: MTDPART_OFS_APPEND,	},{	  size: MTDPART_SIZ_FULL,	  offset: MTDPART_OFS_APPEND,	}};#endif /* CONFIG_SA1100_HUW_WEBPANEL */#ifdef CONFIG_SA1100_H3600static unsigned long h3600_max_flash_size = 0x02000000;static struct mtd_partition h3600_partitions[] = {	{		name: "H3600 boot firmware",		size: 0x00040000,		offset: 0,		mask_flags: MTD_WRITEABLE  /* force read-only */	},{		name: "H3600 kernel",		size: 0x00080000,		offset: 0x40000	},{		name: "H3600 params",		size: 0x00040000,		offset: 0xC0000	},{#ifdef CONFIG_JFFS2_FS		name: "H3600 root jffs2",		offset: 0x00100000,		size: MTDPART_SIZ_FULL#else		name: "H3600 initrd",		size: 0x00100000,		offset: 0x00100000	},{		name: "H3600 root cramfs",		size: 0x00300000,		offset: 0x00200000	},{		name: "H3600 usr cramfs",		size: 0x00800000,		offset: 0x00500000	},{		name: "H3600 usr local",		offset: 0x00d00000,		size: MTDPART_SIZ_FULL#endif	}};#endif#ifdef CONFIG_SA1100_FREEBIRDstatic unsigned long freebird_max_flash_size = 0x02000000;static struct mtd_partition freebird_partitions[] = {#if CONFIG_SA1100_FREEBIRD_NEW    {     name: "firmware",     size: 0x00040000,     offset: 0,     mask_flags: MTD_WRITEABLE  /* force read-only */    },{     name: "kernel",     size: 0x00080000,     offset: 0x40000    },{     name: "params",     size: 0x00040000,     offset: 0xC0000    },{     name: "initrd",     size: 0x00100000,     offset: 0x00100000    },{     name: "root cramfs",     size: 0x00300000,     offset: 0x00200000    },{     name: "usr cramfs",     size: 0x00C00000,     offset: 0x00500000    },{	 name: "local",	 offset: 0x01100000,	 size: MTDPART_SIZ_FULL 	}#else	{ offset: 0,            		size: 0x00040000,   },	{ offset: MTDPART_OFS_APPEND,   size: 0x000c0000,   },	{ offset: MTDPART_OFS_APPEND,	size: 0x00400000,	},	{ offset: MTDPART_OFS_APPEND,   size: MTDPART_SIZ_FULL  }#endif	};#endif																									#ifdef CONFIG_SA1100_CERFstatic unsigned long cerf_max_flash_size = 0x01000000;static struct mtd_partition cerf_partitions[] = {	{ offset: 0,			size: 0x00800000 	},	{ offset: MTDPART_OFS_APPEND,	size: 0x00800000 	}};#endif#ifdef CONFIG_SA1100_GRAPHICSCLIENTstatic unsigned long graphicsclient_max_flash_size = 0x01000000;static struct mtd_partition graphicsclient_partitions[] = {	{ 	 name: "zImage",	 offset: 0,	 size: 0x100000	},	{          name: "ramdisk.gz",         offset: MTDPART_OFS_APPEND,         size: 0x300000 			},	{ 	  name: "User FS",          offset: MTDPART_OFS_APPEND,	          size: MTDPART_SIZ_FULL	}};#endif#ifdef CONFIG_SA1100_GRAPHICSMASTER

⌨️ 快捷键说明

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