|
@@ -15,10 +15,7 @@
|
|
|
#include <asm/io.h>
|
|
|
#include <linux/mtd/mtd.h>
|
|
|
#include <linux/mtd/map.h>
|
|
|
-
|
|
|
-#ifdef CONFIG_MTD_PARTITIONS
|
|
|
#include <linux/mtd/partitions.h>
|
|
|
-#endif
|
|
|
|
|
|
#define WINDOW_ADDR 0x00000000 /* physical properties of flash */
|
|
|
#define WINDOW_SIZE 0x01000000
|
|
@@ -40,8 +37,6 @@ struct map_info edb7312nor_map = {
|
|
|
.phys = WINDOW_ADDR,
|
|
|
};
|
|
|
|
|
|
-#ifdef CONFIG_MTD_PARTITIONS
|
|
|
-
|
|
|
/*
|
|
|
* MTD partitioning stuff
|
|
|
*/
|
|
@@ -66,8 +61,6 @@ static struct mtd_partition static_partitions[3] =
|
|
|
|
|
|
static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
|
|
|
|
|
|
-#endif
|
|
|
-
|
|
|
static int mtd_parts_nb = 0;
|
|
|
static struct mtd_partition *mtd_parts = 0;
|
|
|
|
|
@@ -96,27 +89,24 @@ static int __init init_edb7312nor(void)
|
|
|
if (mymtd) {
|
|
|
mymtd->owner = THIS_MODULE;
|
|
|
|
|
|
-#ifdef CONFIG_MTD_PARTITIONS
|
|
|
mtd_parts_nb = parse_mtd_partitions(mymtd, probes, &mtd_parts, MTDID);
|
|
|
if (mtd_parts_nb > 0)
|
|
|
- part_type = "detected";
|
|
|
+ part_type = "detected";
|
|
|
|
|
|
- if (mtd_parts_nb == 0)
|
|
|
- {
|
|
|
+ if (mtd_parts_nb == 0) {
|
|
|
mtd_parts = static_partitions;
|
|
|
mtd_parts_nb = ARRAY_SIZE(static_partitions);
|
|
|
part_type = "static";
|
|
|
}
|
|
|
-#endif
|
|
|
- add_mtd_device(mymtd);
|
|
|
+
|
|
|
if (mtd_parts_nb == 0)
|
|
|
- printk(KERN_NOTICE MSG_PREFIX "no partition info available\n");
|
|
|
+ printk(KERN_NOTICE MSG_PREFIX "no partition info available\n");
|
|
|
else
|
|
|
- {
|
|
|
printk(KERN_NOTICE MSG_PREFIX
|
|
|
"using %s partition definition\n", part_type);
|
|
|
- add_mtd_partitions(mymtd, mtd_parts, mtd_parts_nb);
|
|
|
- }
|
|
|
+ /* Register the whole device first. */
|
|
|
+ mtd_device_register(mymtd, NULL, 0);
|
|
|
+ mtd_device_register(mymtd, mtd_parts, mtd_parts_nb);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -127,7 +117,7 @@ static int __init init_edb7312nor(void)
|
|
|
static void __exit cleanup_edb7312nor(void)
|
|
|
{
|
|
|
if (mymtd) {
|
|
|
- del_mtd_device(mymtd);
|
|
|
+ mtd_device_unregister(mymtd);
|
|
|
map_destroy(mymtd);
|
|
|
}
|
|
|
if (edb7312nor_map.virt) {
|