mtd/drivers/mtd/maps lasat.c,1.5,1.6
Brian Murphy
brm at infradead.org
Tue Sep 2 12:36:43 EDT 2003
Update of /home/cvs/mtd/drivers/mtd/maps
In directory phoenix.infradead.org:/tmp/cvs-serv11593
Modified Files:
lasat.c
Log Message:
update LASAT map to correspond with the latest development code
Index: lasat.c
===================================================================
RCS file: /home/cvs/mtd/drivers/mtd/maps/lasat.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- lasat.c 21 May 2003 12:45:19 -0000 1.5
+++ lasat.c 2 Sep 2003 16:36:40 -0000 1.6
@@ -1,8 +1,7 @@
/*
- * Flash device on lasat 100 and 200 boards
+ * Flash device on Lasat 100 and 200 boards
*
- * Presumably (C) 2002 Brian Murphy <brian at murphy.dk> or whoever he
- * works for.
+ * (C) 2002 Brian Murphy <brian at murphy.dk>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version
@@ -22,44 +21,53 @@
#include <linux/mtd/partitions.h>
#include <linux/config.h>
#include <asm/lasat/lasat.h>
-#include <asm/lasat/lasat_mtd.h>
-static struct mtd_info *mymtd;
-
-static struct map_info sp_map = {
- .name = "SP flash",
- .buswidth = 4,
-};
+static struct mtd_info *lasat_mtd;
static struct mtd_partition partition_info[LASAT_MTD_LAST];
static char *lasat_mtd_partnames[] = {"Bootloader", "Service", "Normal", "Filesystem", "Config"};
-static int __init init_sp(void)
+static void lasat_set_vpp(struct map_info *map, int vpp)
{
- int i;
- /* this does not play well with the old flash code which
- * protects and uprotects the flash when necessary */
- /* FIXME: Implement set_vpp() */
- printk(KERN_NOTICE "Unprotecting flash\n");
- *lasat_misc->flash_wp_reg |= 1 << lasat_misc->flash_wp_bit;
-
- sp_map.virt = lasat_flash_partition_start(LASAT_MTD_BOOTLOADER);
- sp_map.phys = virt_to_phys(sp_map.virt);
- sp_map.size = lasat_board_info.li_flash_size;
+ if (vpp)
+ *lasat_misc->flash_wp_reg |= 1 << lasat_misc->flash_wp_bit;
+ else
+ *lasat_misc->flash_wp_reg &= ~(1 << lasat_misc->flash_wp_bit);
+}
+
+static struct map_info lasat_map = {
+ .name = "LASAT flash",
+ .buswidth = 4,
+ .set_vpp = lasat_set_vpp
+};
- simple_map_init(&sp_map);
+static int __init init_lasat(void)
+{
+ int i;
+ /* since we use AMD chips and set_vpp is not implimented
+ * for these (yet) we still have to permanently enable flash write */
+ printk(KERN_NOTICE "Unprotecting flash\n");
+ ENABLE_VPP((&lasat_map));
+
+ lasat_map.phys = lasat_flash_partition_start(LASAT_MTD_BOOTLOADER);
+ lasat_map.virt = (unsigned long)ioremap_nocache(
+ lasat_map.phys, lasat_board_info.li_flash_size);
+ lasat_map.size = lasat_board_info.li_flash_size;
- printk(KERN_NOTICE "sp flash device: %lx at %lx\n",
- sp_map.size, sp_map.phys);
+ simple_map_init(&lasat_map);
for (i=0; i < LASAT_MTD_LAST; i++)
partition_info[i].name = lasat_mtd_partnames[i];
- mymtd = do_map_probe("cfi_probe", &sp_map);
- if (mymtd) {
+ lasat_mtd = do_map_probe("cfi_probe", &lasat_map);
+
+ if (!lasat_mtd)
+ lasat_mtd = do_map_probe("jedec_probe", &lasat_map);
+
+ if (lasat_mtd) {
u32 size, offset = 0;
- mymtd->owner = THIS_MODULE;
+ lasat_mtd->owner = THIS_MODULE;
for (i=0; i < LASAT_MTD_LAST; i++) {
size = lasat_flash_partition_size(i);
@@ -68,26 +76,26 @@
offset += size;
}
- add_mtd_partitions( mymtd, partition_info, LASAT_MTD_LAST );
+ add_mtd_partitions( lasat_mtd, partition_info, LASAT_MTD_LAST );
return 0;
}
return -ENXIO;
}
-static void __exit cleanup_sp(void)
+static void __exit cleanup_lasat(void)
{
- if (mymtd) {
- del_mtd_partitions(mymtd);
- map_destroy(mymtd);
+ if (lasat_mtd) {
+ del_mtd_partitions(lasat_mtd);
+ map_destroy(lasat_mtd);
}
- if (sp_map.virt) {
- sp_map.virt = 0;
+ if (lasat_map.virt) {
+ lasat_map.virt = 0;
}
}
-module_init(init_sp);
-module_exit(cleanup_sp);
+module_init(init_lasat);
+module_exit(cleanup_lasat);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Brian Murphy <brian at murphy.dk>");
More information about the linux-mtd-cvs
mailing list