MOXA linux-2.6.x / linux-2.6.19-uc1 from UC-7110-LX-BOOTLOADER-1.9_VERSION-4.2.tgz
[linux-2.6.19-moxart.git] / drivers / mtd / maps / em1240_ivtc.c
bloba3b98e465b94a3e3d87131876830081f24bf89fe
1 /*
2 * UC-7110-LX Version 2 Flash mapping driver
3 */
5 //#include <linux/config.h>
6 #include <asm/arch/moxa.h>
7 #include <linux/module.h>
8 #include <linux/types.h>
9 #include <linux/kernel.h>
10 #include <linux/init.h>
11 #include <linux/ioport.h>
13 #include <linux/mtd/mtd.h>
14 #include <linux/mtd/map.h>
15 #include <linux/mtd/partitions.h>
17 #include <asm/io.h>
19 #define WINDOW_ADDR CONFIG_FLASH_MEM_BASE
20 //#define WINDOW_SIZE CONFIG_FLASH_SIZE
21 //#define WINDOW_SIZE (0x00800000*4)
22 #define WINDOW_SIZE (0x00800000)
23 #define UC7110_FLASH_SIZE 0x00800000
25 #define RW_PART0_OF 0x0
26 #define RW_PART0_SZ 0x40000 /* Bootloader */
27 #define RW_PART1_OF (RW_PART0_OF+RW_PART0_SZ)
28 #define RW_PART1_SZ 0x200000 /* Kernel */
29 #define RW_PART2_OF (RW_PART1_OF+RW_PART1_SZ)
30 #define RW_PART2_SZ (0x280000-RW_PART0_SZ) /* root file system - JFFS2 */
31 #define RW_PART3_OF (RW_PART2_OF+RW_PART2_SZ)
32 #define RW_PART3_SZ (UC7110_FLASH_SIZE-RW_PART3_OF) /* user disk - JFFS2 */
34 static struct mtd_partition moxart_flash_partitions[] = {
36 .name = "Bootloader",
37 .offset = RW_PART0_OF,
38 .size = RW_PART0_SZ
41 .name = "LinuxKernel",
42 .offset = RW_PART1_OF,
43 .size = RW_PART1_SZ,
44 //.mask_flags = MTD_WRITEABLE
47 .name = "RootFileSystem",
48 .offset = RW_PART2_OF,
49 .size = RW_PART2_SZ,
50 //.mask_flags = MTD_WRITEABLE
53 .name = "UserDisk",
54 .offset = RW_PART3_OF,
55 .size = RW_PART3_SZ
58 struct map_info moxart_flash_map = {
59 .name = "EM1240 FLASH",
60 .size = WINDOW_SIZE,
61 .bankwidth = 2,
62 .phys = WINDOW_ADDR,
63 .virt = IO_ADDRESS(WINDOW_ADDR),
67 #define NUM_MOXART_FLASH_PARTITIONS ARRAY_SIZE(moxart_flash_partitions)
69 static struct mtd_info *moxart_mtd;
71 int __init init_moxart_flash(void)
73 printk(KERN_NOTICE "moxart: flash mapping: 0x%x at 0x%x\n",
74 WINDOW_SIZE, WINDOW_ADDR);
76 simple_map_init(&moxart_flash_map);
78 moxart_mtd = do_map_probe("cfi_probe",&moxart_flash_map);
80 if (moxart_mtd) {
81 moxart_mtd->owner = THIS_MODULE;
82 return add_mtd_partitions(moxart_mtd,
83 moxart_flash_partitions,
84 NUM_MOXART_FLASH_PARTITIONS);
87 return -ENXIO;
90 static void __exit cleanup_moxart_flash(void)
92 if (moxart_mtd) {
93 del_mtd_partitions(moxart_mtd);
94 /* moved iounmap after map_destroy - armin */
95 map_destroy(moxart_mtd);
99 module_init(init_moxart_flash);
100 module_exit(cleanup_moxart_flash);
102 MODULE_LICENSE("GPL");
103 MODULE_AUTHOR("Jimmy_chen@moxa.com.tw");
104 MODULE_DESCRIPTION("MTD map driver for the UC-7110-LX Version 2");