2 * Normal mappings of Microtronix ukit flash in physical memory
3 * Derived from physmap.c, by Microtronix Datacom Ltd.
6 #include <linux/module.h>
7 #include <linux/types.h>
8 #include <linux/kernel.h>
9 #include <linux/init.h>
10 #include <linux/slab.h>
12 #include <linux/mtd/mtd.h>
13 #include <linux/mtd/map.h>
14 #include <linux/mtd/partitions.h>
18 #define WINDOW_ADDR na_flash_kernel
19 #define WINDOW_SIZE na_flash_kernel_size
22 static struct mtd_info
*mymtd
;
25 struct map_info microtronix_map
= {
26 .name
= "Microtronix map",
28 .bankwidth
= BUSWIDTH
,
32 #ifdef CONFIG_MTD_PARTITIONS
33 static struct mtd_partition
*mtd_parts
;
34 static int mtd_parts_nb
;
36 static struct mtd_partition microtronix_partitions
[] = {
42 .name
= "loader/kernel",
48 #define NUM_PARTITIONS (sizeof(microtronix_partitions)/sizeof(struct mtd_partition))
49 const char *part_probes
[] = {"cmdlinepart", "RedBoot", NULL
};
51 #endif /* CONFIG_MTD_PARTITIONS */
53 int __init
init_microtronix_map(void)
55 static const char *flash_probe_types
[] = {"cfi_probe", "jedec_probe", 0 };
58 microtronix_map
.virt
= (unsigned long *)ioremap_nocache(WINDOW_ADDR
, WINDOW_SIZE
);
60 if (!microtronix_map.virt) {
61 printk("Failed to ioremap\n");
65 simple_map_init(µtronix_map
);
68 type
= flash_probe_types
;
69 for(; !mymtd
&& *type
; type
++) {
70 mymtd
= do_map_probe(*type
, µtronix_map
);
73 mymtd
->owner
= THIS_MODULE
;
75 #ifdef CONFIG_MTD_PARTITIONS
76 mtd_parts_nb
= parse_mtd_partitions(mymtd
, part_probes
,
81 add_mtd_partitions (mymtd
, mtd_parts
, mtd_parts_nb
);
85 if (NUM_PARTITIONS
!= 0)
88 "Using Microtronix development partition definition\n");
89 add_mtd_partitions (mymtd
, microtronix_partitions
, NUM_PARTITIONS
);
94 add_mtd_device(mymtd
);
99 iounmap((void *)microtronix_map
.virt
);
103 static void __exit
cleanup_microtronix_map(void)
105 #ifdef CONFIG_MTD_PARTITIONS
107 del_mtd_partitions(mymtd
);
109 } else if (NUM_PARTITIONS
) {
110 del_mtd_partitions(mymtd
);
112 del_mtd_device(mymtd
);
115 del_mtd_device(mymtd
);
119 iounmap((void *)microtronix_map
.virt
);
120 microtronix_map
.virt
= 0;
123 module_init(init_microtronix_map
);
124 module_exit(cleanup_microtronix_map
);
127 MODULE_LICENSE("GPL");
128 MODULE_AUTHOR("Microtronix Datacom");
129 MODULE_DESCRIPTION("MTD map driver for Microtronix ukit");