MTDRAM update for SRAM.

Bjorn Eriksson mdeans at algonet.se
Thu Sep 21 13:47:34 EDT 2000


[First attempt bounced with: administrative prohibition (host is
blacklisted)]
Couple of small changes:

 I made mtdram.c support my battery backuped, memory mapped SRAM device.
 Added -O1 CFLAGS_pmc551.o
 Changed `dirname $0` into 'cd dirname $0 && pwd' since $0 doesn't resolve
to a fully qualified path (I tried it with several shells).

Index: mtd/kernel/Config.in
===================================================================
RCS file: /home/cvs/mtd/kernel/Config.in,v
retrieving revision 1.27
diff -u -r1.27 Config.in
--- mtd/kernel/Config.in	2000/09/14 11:09:37	1.27
+++ mtd/kernel/Config.in	2000/09/21 16:40:04
@@ -38,6 +38,9 @@
    if [ "$CONFIG_MTD_MTDRAM" != "n" ]; then
       int 'Device size in kB' CONFIG_MTDRAM_TOTAL_SIZE 4096
       int 'Size of the erase sectors in kB' CONFIG_MTDRAM_ERASE_SIZE 128
+      if [ "$CONFIG_MTD_MTDRAM" = "y" ]; then #If not a module (I don't
want to test it as a module)
+         int 'SRAM: Absolute position (or 0 if N/A)' CONFIG_MTDRAM_ABS_POS
0
+      fi
    fi

 comment 'Linearly Mapped Flash Device Drivers'
Index: mtd/kernel/Makefile
===================================================================
RCS file: /home/cvs/mtd/kernel/Makefile,v
retrieving revision 1.24
diff -u -r1.24 Makefile
--- mtd/kernel/Makefile	2000/09/08 10:21:01	1.24
+++ mtd/kernel/Makefile	2000/09/21 16:40:04
@@ -21,6 +21,7 @@
 	nora.o octagon-5066.o pnc2000.o rpxlite.o vmax301.o mtdchar.o \
 	mtdblock.o ftl.o nftl.o sbc_mediagx.o elan-104nc.o

+CFLAGS_pmc551.o := -O1 # or -O0 or -g, or my egcs-2.91.66 goes to sleep.
 CFLAGS_nftl.o := -DCONFIG_NFTL_RW
 CFLAGS_mtdram.o
:= -DCONFIG_MTDRAM_TOTAL_SIZE=4096 -DCONFIG_MTDRAM_ERASE_SIZE=128
 CFLAGS_physmap.o
:= -DCONFIG_MTD_PHYSMAP_START=0x8000000 -DCONFIG_MTD_PHYSMAP_LEN=0x4000000
Index: mtd/kernel/mtdram.c
===================================================================
RCS file: /home/cvs/mtd/kernel/mtdram.c,v
retrieving revision 1.16
diff -u -r1.16 mtdram.c
--- mtd/kernel/mtdram.c	2000/08/24 09:31:23	1.16
+++ mtd/kernel/mtdram.c	2000/09/21 16:40:04
@@ -15,8 +15,9 @@
 #include <linux/ioport.h>
 #include <linux/mtd/compatmac.h>
 #include <linux/mtd/mtd.h>
-
-
+#if CONFIG_MTDRAM_ABS_POS > 0
+  #include <asm/io.h>
+#endif

 #ifdef MODULE
 static unsigned long total_size = CONFIG_MTDRAM_TOTAL_SIZE;
@@ -101,7 +107,11 @@
   if (mtd_info) {
     del_mtd_device(mtd_info);
     if (mtd_info->priv)
+#if CONFIG_MTDRAM_ABS_POS > 0
+      iounmap(mtd_info->priv);
+#else
       vfree(mtd_info->priv);
+#endif
     kfree(mtd_info);
   }
 }
@@ -123,8 +133,19 @@
    mtd_info->flags = MTD_CAP_RAM;
    mtd_info->size = MTDRAM_TOTAL_SIZE;
    mtd_info->erasesize = MTDRAM_ERASE_SIZE;
+#if CONFIG_MTDRAM_ABS_POS > 0
+   mtd_info->priv = ioremap(CONFIG_MTDRAM_ABS_POS, MTDRAM_TOTAL_SIZE);
+   if ( !mtd_info->priv ) {
+      printk("Failed to ioremap memory region (pos:%d, size: %d)\n",
(int)CONFIG_MTDRAM_ABS_POS, (int)MTDRAM_TOTAL_SIZE);
+      return -EIO;
+   } else {
+      printk("Sucess: ioremap memory region (pos:%d, size: %d)\n",
(int)CONFIG_MTDRAM_ABS_POS, (int)MTDRAM_TOTAL_SIZE);
+   }
+
+#else
    mtd_info->priv = vmalloc(MTDRAM_TOTAL_SIZE);
    memset(mtd_info->priv, 0xff, MTDRAM_TOTAL_SIZE);
+#endif

 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
    mtd_info->module = THIS_MODULE;
@@ -142,7 +163,11 @@
    mtd_info->write = ram_write;

    if (add_mtd_device(mtd_info)) {
+#if CONFIG_MTDRAM_ABS_POS > 0
+     iounmap(mtd_info->priv);
+#else
      vfree(mtd_info->priv);
+#endif
      kfree(mtd_info);
      mtd_info = NULL;
      return -EIO;
Index: mtd/patches/patchin.sh
===================================================================
RCS file: /home/cvs/mtd/patches/patchin.sh,v
retrieving revision 1.1
diff -u -r1.1 patchin.sh
--- mtd/patches/patchin.sh	2000/06/26 08:22:56	1.1
+++ mtd/patches/patchin.sh	2000/09/21 16:40:04
@@ -5,7 +5,8 @@
 # This only adds symlinks to the new files - you'll also need to apply
 # the appropriate patch from this directory.

-THISDIR=`dirname $0`
+cd `dirname $0`
+THISDIR=`pwd`
 TOPDIR=`dirname $THISDIR`

 LINUXDIR=/usr/src/linux


--
//Björnen




To unsubscribe, send "unsubscribe mtd" to majordomo at infradead.org



More information about the linux-mtd mailing list