From: Marc Singer <elf@buici.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mtd@lists.infradead.org
Subject: [PATCH] MTD Maps driver for Sharp LH7a40x
Date: Sat, 12 Jun 2004 09:47:06 -0700 [thread overview]
Message-ID: <20040612164706.GA11273@buici.com> (raw)
This is the MTD patch.
diff -Nru a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
--- a/drivers/mtd/maps/Kconfig Sat Jun 5 10:30:48 2004
+++ b/drivers/mtd/maps/Kconfig Sat Jun 5 10:30:48 2004
@@ -421,6 +421,14 @@
Excalibur XA10 Development Board. If you are building a kernel
for on of these boards then you should say 'Y' otherwise say 'N'.
+config MTD_LPD7A40X
+ tristate "CFI Flash device mapped on Logic PD LH7A40X-10 Card Engines"
+ depends on (MACH_LPD7A400 || MACH_LPD7A404) && MTD_CFI_INTELEXT && MTD_PARTITIONS
+ help
+ This provides a driver for the on-board flash of the Logic PD
+ LH7A40X-10 Card Engines. Static partition mappings
+ correspond to the BLOB loader's layout.
+
config MTD_FORTUNET
tristate "CFI Flash device mapped on the FortuNet board"
depends on ARM && MTD_CFI && MTD_PARTITIONS && SA1100_FORTUNET
diff -Nru a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
--- a/drivers/mtd/maps/Makefile Sat Jun 5 10:30:48 2004
+++ b/drivers/mtd/maps/Makefile Sat Jun 5 10:30:48 2004
@@ -56,3 +56,4 @@
obj-$(CONFIG_MTD_ARCTIC) += arctic-mtd.o
obj-$(CONFIG_MTD_H720X) += h720x-flash.o
obj-$(CONFIG_MTD_IXP4XX) += ixp4xx.o
+obj-$(CONFIG_MTD_LPD7A40X) += lpd7a400-flash.o
diff -Nru a/drivers/mtd/maps/lpd7a400-flash.c b/drivers/mtd/maps/lpd7a400-flash.c
--- /dev/null Wed Dec 31 16:00:00 1969
+++ b/drivers/mtd/maps/lpd7a400-flash.c Sat Jun 5 10:30:48 2004
@@ -0,0 +1,171 @@
+/* drivers/mtd/maps/lpd7a400-flash.c
+ *
+ * Copyright (C) 2004 Coastal Environmental Systems
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <asm/io.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/partitions.h>
+#include <asm/hardware.h>
+
+
+#define FLASH_PHYS 0x00000000
+#define FLASH_SIZE 0x01000000 /* 16MB */
+#define FLASH_BUSWIDTH 32
+
+#define WINDOW_SIZE 64*1024*1024 /* Flash mapping window */
+
+static struct map_info lpd7a400_maps[] = {
+ {
+ .name = "LPD7A40x-10 Flash",
+ .phys = FLASH_PHYS,
+ .size = WINDOW_SIZE,
+ .buswidth = FLASH_BUSWIDTH/8,
+ }
+};
+#define C_MAPS (ARRAY_SIZE (lpd7a400_maps))
+
+static struct mtd_partition lpd7a400_partitions[] = {
+ {
+ .name = "BLOB boot loader",
+ .offset = 0x00000000,
+ .size = 0x00040000,
+ .mask_flags = MTD_WRITEABLE /* r/o */
+ },
+ {
+ .name = "BLOB parameters",
+ .size = 0x00040000,
+ .offset = 0x00040000,
+ .mask_flags = MTD_WRITEABLE /* r/o */
+ },
+ {
+ .name = "kernel",
+ .offset = 0x00080000,
+ .size = 0x00180000,
+ },
+ {
+ .name = "user",
+ .offset = 0x00200000,
+ .size = MTDPART_SIZ_FULL,
+ }
+};
+
+static struct mtd_info *lpd7a400_mtds[C_MAPS];
+static struct mtd_partition *parsed_parts[C_MAPS];
+static int nr_parsed_parts[C_MAPS];
+
+static const char *probes[] = { NULL };
+
+static int __init init_flash_lpd7a400(void)
+{
+ int ret = 0, i;
+ int cPartitions = 0;
+
+ for (i = 0; i < C_MAPS; ++i) {
+ lpd7a400_maps[i].virt
+ = (unsigned long) __ioremap (lpd7a400_maps[i].phys,
+ lpd7a400_maps[i].size,
+ 0, 0);
+
+ if (!lpd7a400_maps[i].virt) {
+ printk (KERN_WARNING "Failedioremap %s\n",
+ lpd7a400_maps[i].name);
+ if (!ret)
+ ret = -ENOMEM;
+ continue;
+ }
+
+ simple_map_init (&lpd7a400_maps[i]);
+
+ printk (KERN_NOTICE "Probing \"%s\" "
+ "at physical address 0x%08lx\n",
+ lpd7a400_maps[i].name, lpd7a400_maps[i].phys);
+
+ lpd7a400_mtds[i]
+ = do_map_probe ("cfi_probe", &lpd7a400_maps[i]);
+
+ if (!lpd7a400_mtds[i]) {
+ iounmap ((void*) lpd7a400_maps[i].virt);
+ if (!ret)
+ ret = -EIO;
+ continue;
+ }
+ ++cPartitions;
+ lpd7a400_mtds[i]->owner = THIS_MODULE;
+
+ int ret = parse_mtd_partitions (lpd7a400_mtds[i], probes,
+ &parsed_parts[i], 0);
+
+ if (ret > 0)
+ nr_parsed_parts[i] = ret;
+ }
+
+ if (!cPartitions)
+ return ret;
+
+ for (i = 0; i < C_MAPS; i++) {
+ if (!lpd7a400_mtds[i]) {
+ printk (KERN_WARNING "%s is absent. Skipping\n",
+ lpd7a400_maps[i].name);
+ }
+ else if (nr_parsed_parts[i]) {
+ add_mtd_partitions (lpd7a400_mtds[i],
+ parsed_parts[i],
+ nr_parsed_parts[i]);
+ }
+ else {
+ printk("Using static partitions on \"%s\"\n",
+ lpd7a400_maps[i].name);
+ add_mtd_partitions (lpd7a400_mtds[i],
+ lpd7a400_partitions,
+ ARRAY_SIZE (lpd7a400_partitions));
+ }
+#if 0
+ else {
+ printk ("Registering %s as whole device\n",
+ lpd7a400_maps[i].name);
+ add_mtd_device(lpd7a400_mtds[i]);
+ }
+#endif
+ }
+ return 0;
+}
+
+static void __exit cleanup_flash_lpd7a400(void)
+{
+ int i;
+ for (i = 0; i < C_MAPS; i++) {
+ if (!lpd7a400_mtds[i])
+ continue;
+
+/* if (nr_parsed_parts[i] || !i) */
+ del_mtd_partitions (lpd7a400_mtds[i]);
+/*
+ else
+ del_mtd_device (lpd7a400_mtds[i]);
+*/
+
+ map_destroy (lpd7a400_mtds[i]);
+ iounmap ((void*) lpd7a400_maps[i].virt);
+
+ if (parsed_parts[i])
+ kfree (parsed_parts[i]);
+ }
+}
+
+module_init(init_flash_lpd7a400);
+module_exit(cleanup_flash_lpd7a400);
+
+MODULE_AUTHOR("Marc Singer");
+MODULE_DESCRIPTION("MTD map driver for Logic PD LPD7A40x-10 CardEngines");
+MODULE_LICENSE("GPL");
next reply other threads:[~2004-06-12 16:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-12 16:47 Marc Singer [this message]
2004-06-13 19:34 ` [PATCH] MTD Maps driver for Sharp LH7a40x Thomas Gleixner
-- strict thread matches above, loose matches on Subject: below --
2004-06-13 21:43 Marc Singer
2004-06-14 0:07 ` Thomas Gleixner
2004-06-14 0:54 ` Marc Singer
2004-06-19 0:05 ` Jun Sun
2004-06-19 0:16 ` Thomas Gleixner
2004-06-19 0:38 ` Marc Singer
2004-06-19 8:19 ` Thomas Gleixner
2004-06-19 9:23 ` Russell King - ARM Linux
2004-06-19 9:51 ` Thomas Gleixner
2004-06-19 11:01 ` Russell King - ARM Linux
[not found] <083AB380E3924D4795740AAE9A27DCAB7B89B3@cgy2000.interalia.ca>
2004-06-19 17:03 ` David Woodhouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040612164706.GA11273@buici.com \
--to=elf@buici.com \
--cc=linux-mtd@lists.infradead.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox