📄 m5272c3.c~
字号:
/* * * Normal mappings of chips in physical memory */#include <linux/module.h>#include <linux/types.h>#include <linux/kernel.h>#include <asm/io.h>#include <linux/mtd/mtd.h>#include <linux/mtd/map.h>#include <linux/mtd/partitions.h>#include <linux/config.h>#define WINDOW_ADDR 0xff000000#define WINDOW_SIZE 0x800000 //4M flash sean #define BUSWIDTH 2static struct mtd_info *mymtd;struct map_info m5272c3_map = { name: "MCF5272C3 flash device", phys: WINDOW_ADDR, size: WINDOW_SIZE, bankwidth: BUSWIDTH};/* * MTD 'PARTITIONING' STUFF *//*#define BOOT_SIZE 0x40000 //256K bootload reserved#define IMAGE_SIZE 0x340000 //kenerl and romfs//#define MIRROR_SIZE 0x000000 //kenerl and romfs#define DATA_SIZE 0x80000 //user space#define MIRROR_SIZE 0x340000#define NUM_PARTITIONS 4*//*#define BOOT_SIZE 0x30000 //192K bootload reserved 2*8K+1*8K+1*8K+(4*8K+2*64K)=192K=30000H // 0x40000=256k#define IMAGE_SIZE 0x340000 //kenerl and romfs 48*64K+4*64K=52*64K=340000H//#define MIRROR_SIZE 0x000000 //kenerl and romfs#define DATA_SIZE 0x90000 //user space 9*64K=90000H // 0x80000=8*64K#define MIRROR_SIZE 0x340000 //kenerl and romfs 48*64K+4*64K=52*64K=340000H #define NUM_PARTITIONS 4*/#define BOOT_SIZE 0x40000 //192K bootload reserved 2*8K+1*8K+1*8K+(4*8K+2*64K)=192K=30000H+64k // 0x40000=256k#define IMAGE_SIZE 0x340000 //kenerl and romfs 48*64K+4*64K=52*64K=340000H//#define MIRROR_SIZE 0x000000 //kenerl and romfs#define DATA_SIZE 0x80000 //user space 9*64K=90000H-64k // 0x80000=8*64K#define MIRROR_SIZE 0x340000 //kenerl and romfs 48*64K+4*64K=52*64K=340000H #define NUM_PARTITIONS 4static struct mtd_partition partition_info[] = { { name: "boot", size: BOOT_SIZE, offset: 0 }, { name: "image", size: IMAGE_SIZE, offset: BOOT_SIZE }, /* { name: "mirror", size: MIRROR_SIZE, offset: (BOOT_SIZE+IMAGE_SIZE) }, { name: "data", size: DATA_SIZE, offset: (BOOT_SIZE+IMAGE_SIZE+MIRROR_SIZE) } */ { name: "data", size: DATA_SIZE, offset: (BOOT_SIZE+IMAGE_SIZE) }, { name: "mirror", size: MIRROR_SIZE, offset: (BOOT_SIZE+IMAGE_SIZE+DATA_SIZE) } };int __init init_m5272c3(void){ printk(KERN_NOTICE "Motorola M5272C3 flash device: 0x%x at 0x%x\n", WINDOW_SIZE, WINDOW_ADDR); m5272c3_map.virt = ioremap(WINDOW_ADDR, WINDOW_SIZE); if (!m5272c3_map.virt) { printk("Failed to ioremap\n"); return -EIO; } simple_map_init(&m5272c3_map); mymtd = do_map_probe("cfi_probe", &m5272c3_map); if (mymtd) { mymtd->owner = THIS_MODULE; add_mtd_device(mymtd); add_mtd_partitions(mymtd, partition_info, NUM_PARTITIONS); return 0; } iounmap((void *)m5272c3_map.virt); return -ENXIO;}static void __exit cleanup_m5272c3(void){ if (mymtd) { del_mtd_device(mymtd); map_destroy(mymtd); } if (m5272c3_map.virt) { iounmap((void *)m5272c3_map.virt); m5272c3_map.virt = 0; }}module_init(init_m5272c3);module_exit(cleanup_m5272c3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -