| /* | |
| * Flash memory access on 4G Systems MTX-1 boards | |
| * | |
| * $Id: mtx-1_flash.c,v 1.2 2005/11/07 11:14:27 gleixner Exp $ | |
| * | |
| * (C) 2005 Bruno Randolf <bruno.randolf@4g-systems.biz> | |
| * (C) 2005 Jörn Engel <joern@wohnheim.fh-wedel.de> | |
| * | |
| */ | |
| #include <linux/module.h> | |
| #include <linux/types.h> | |
| #include <linux/init.h> | |
| #include <linux/kernel.h> | |
| #include <linux/mtd/mtd.h> | |
| #include <linux/mtd/map.h> | |
| #include <linux/mtd/partitions.h> | |
| #include <asm/io.h> | |
| static struct map_info mtx1_map = { | |
| .name = "MTX-1 flash", | |
| .bankwidth = 4, | |
| .size = 0x2000000, | |
| .phys = 0x1E000000, | |
| }; | |
| static struct mtd_partition mtx1_partitions[] = { | |
| { | |
| .name = "filesystem", | |
| .size = 0x01C00000, | |
| .offset = 0, | |
| },{ | |
| .name = "yamon", | |
| .size = 0x00100000, | |
| .offset = MTDPART_OFS_APPEND, | |
| .mask_flags = MTD_WRITEABLE, | |
| },{ | |
| .name = "kernel", | |
| .size = 0x002c0000, | |
| .offset = MTDPART_OFS_APPEND, | |
| },{ | |
| .name = "yamon env", | |
| .size = 0x00040000, | |
| .offset = MTDPART_OFS_APPEND, | |
| } | |
| }; | |
| static struct mtd_info *mtx1_mtd; | |
| int __init mtx1_mtd_init(void) | |
| { | |
| int ret = -ENXIO; | |
| simple_map_init(&mtx1_map); | |
| mtx1_map.virt = ioremap(mtx1_map.phys, mtx1_map.size); | |
| if (!mtx1_map.virt) | |
| return -EIO; | |
| mtx1_mtd = do_map_probe("cfi_probe", &mtx1_map); | |
| if (!mtx1_mtd) | |
| goto err; | |
| mtx1_mtd->owner = THIS_MODULE; | |
| ret = add_mtd_partitions(mtx1_mtd, mtx1_partitions, | |
| ARRAY_SIZE(mtx1_partitions)); | |
| if (ret) | |
| goto err; | |
| return 0; | |
| err: | |
| iounmap(mtx1_map.virt); | |
| return ret; | |
| } | |
| static void __exit mtx1_mtd_cleanup(void) | |
| { | |
| if (mtx1_mtd) { | |
| del_mtd_partitions(mtx1_mtd); | |
| map_destroy(mtx1_mtd); | |
| } | |
| if (mtx1_map.virt) | |
| iounmap(mtx1_map.virt); | |
| } | |
| module_init(mtx1_mtd_init); | |
| module_exit(mtx1_mtd_cleanup); | |
| MODULE_AUTHOR("Bruno Randolf <bruno.randolf@4g-systems.biz>"); | |
| MODULE_DESCRIPTION("MTX-1 flash map"); | |
| MODULE_LICENSE("GPL"); |