-Index: linux-2.6.23.17/drivers/mtd/chips/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/chips/Kconfig
-+++ linux-2.6.23.17/drivers/mtd/chips/Kconfig
-@@ -220,6 +220,13 @@ config MTD_ROM
+--- a/drivers/mtd/chips/Kconfig
++++ b/drivers/mtd/chips/Kconfig
+@@ -220,6 +220,13 @@
This option enables basic support for ROM chips accessed through
a bus mapping driver.
config MTD_ABSENT
tristate "Support for absent chips in bus mapping"
help
-Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -39,10 +39,15 @@
#include <linux/mtd/cfi.h>
#include <linux/mtd/xip.h>
#define MANUFACTURER_AMD 0x0001
#define MANUFACTURER_ATMEL 0x001F
-@@ -322,6 +327,13 @@ struct mtd_info *cfi_cmdset_0002(struct
+@@ -322,6 +327,13 @@
#endif
bootloc = extp->TopBottom;
if ((bootloc != 2) && (bootloc != 3)) {
printk(KERN_WARNING "%s: CFI does not contain boot "
"bank location. Assuming top.\n", map->name);
-@@ -340,6 +352,9 @@ struct mtd_info *cfi_cmdset_0002(struct
+@@ -340,6 +352,9 @@
cfi->cfiq->EraseRegionInfo[j] = swap;
}
}
/* Set the default CFI lock/unlock addresses */
cfi->addr_unlock1 = 0x555;
cfi->addr_unlock2 = 0x2aa;
-@@ -461,6 +476,7 @@ static int __xipram chip_ready(struct ma
+@@ -461,6 +476,7 @@
map_word d, t;
d = map_read(map, addr);
t = map_read(map, addr);
return map_word_equal(map, d, t);
-@@ -626,7 +642,9 @@ static void put_chip(struct map_info *ma
+@@ -626,7 +642,9 @@
default:
printk(KERN_ERR "MTD: put_chip() called with oldstate %d!!\n", chip->oldstate);
}
}
#ifdef CONFIG_MTD_XIP
-@@ -940,7 +958,9 @@ static inline int do_read_secsi_onechip(
+@@ -940,7 +958,9 @@
cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
spin_unlock(chip->mutex);
return 0;
-@@ -1005,7 +1025,10 @@ static int __xipram do_write_oneword(str
+@@ -1005,7 +1025,10 @@
*/
unsigned long uWriteTimeout = ( HZ / 1000 ) + 1;
int ret = 0;
int retry_cnt = 0;
adr += chip->start;
-@@ -1037,9 +1060,15 @@ static int __xipram do_write_oneword(str
+@@ -1037,9 +1060,15 @@
ENABLE_VPP(map);
xip_disable(map, chip, adr);
retry:
map_write(map, datum, adr);
chip->state = FL_WRITING;
-@@ -1072,7 +1101,13 @@ static int __xipram do_write_oneword(str
+@@ -1072,7 +1101,13 @@
}
if (chip_ready(map, adr))
/* Latency issues. Drop the lock, wait a while and retry */
UDELAY(map, chip, adr, 1);
-@@ -1084,8 +1119,17 @@ static int __xipram do_write_oneword(str
+@@ -1084,8 +1119,17 @@
/* FIXME - should have reset delay before continuing */
if (++retry_cnt <= MAX_WORD_RETRIES)
ret = -EIO;
}
xip_enable(map, chip, adr);
-@@ -1171,7 +1215,14 @@ static int cfi_amdstd_write_words(struct
+@@ -1171,7 +1215,14 @@
return 0;
}
}
/* We are now aligned, write as much as possible */
while(len >= map_bankwidth(map)) {
map_word datum;
-@@ -1181,7 +1232,15 @@ static int cfi_amdstd_write_words(struct
+@@ -1181,7 +1232,15 @@
ret = do_write_oneword(map, &cfi->chips[chipnum],
ofs, datum);
if (ret)
ofs += map_bankwidth(map);
buf += map_bankwidth(map);
-@@ -1189,19 +1248,38 @@ static int cfi_amdstd_write_words(struct
+@@ -1189,19 +1248,38 @@
len -= map_bankwidth(map);
if (ofs >> cfi->chipshift) {
spin_lock(cfi->chips[chipnum].mutex);
if (cfi->chips[chipnum].state != FL_READY) {
-@@ -1221,7 +1299,11 @@ static int cfi_amdstd_write_words(struct
+@@ -1221,7 +1299,11 @@
#endif
goto retry1;
}
tmp_buf = map_read(map, ofs + chipstart);
spin_unlock(cfi->chips[chipnum].mutex);
-@@ -1231,11 +1313,23 @@ static int cfi_amdstd_write_words(struct
+@@ -1231,11 +1313,23 @@
ret = do_write_oneword(map, &cfi->chips[chipnum],
ofs, tmp_buf);
if (ret)
return 0;
}
-@@ -1275,6 +1369,7 @@ static int __xipram do_write_buffer(stru
+@@ -1275,6 +1369,7 @@
ENABLE_VPP(map);
xip_disable(map, chip, cmd_adr);
cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
//cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
-@@ -1535,6 +1630,9 @@ static int __xipram do_erase_oneblock(st
+@@ -1535,6 +1630,9 @@
DECLARE_WAITQUEUE(wait, current);
int ret = 0;
adr += chip->start;
spin_lock(chip->mutex);
-@@ -1613,6 +1711,9 @@ static int __xipram do_erase_oneblock(st
+@@ -1613,6 +1711,9 @@
chip->state = FL_READY;
put_chip(map, chip, adr);
spin_unlock(chip->mutex);
return ret;
}
-Index: linux-2.6.23.17/drivers/mtd/chips/map_serial.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/chips/map_serial.c
++++ b/drivers/mtd/chips/map_serial.c
@@ -0,0 +1,188 @@
+/*
+ * Common code to handle map devices which are simple ROM
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
+MODULE_DESCRIPTION("MTD chip driver for ROM chips");
-Index: linux-2.6.23.17/drivers/mtd/maps/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/maps/Kconfig
-+++ linux-2.6.23.17/drivers/mtd/maps/Kconfig
-@@ -614,5 +614,30 @@ config MTD_PLATRAM
+--- a/drivers/mtd/maps/Kconfig
++++ b/drivers/mtd/maps/Kconfig
+@@ -614,5 +614,30 @@
This selection automatically selects the map_ram driver.
+
endmenu
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-atmel.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-atmel.c
++++ b/drivers/mtd/maps/sl2312-flash-atmel.c
@@ -0,0 +1,554 @@
+/*
+ * $Id: sl2312-flash-atmel.c,v 1.2 2006/06/05 02:35:57 middle Exp $
+MODULE_AUTHOR("Plus Chen <plus@storlink.com.tw>");
+MODULE_DESCRIPTION("MTD map driver for Storlink Sword boards");
+
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-cfi.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-cfi.c
++++ b/drivers/mtd/maps/sl2312-flash-cfi.c
@@ -0,0 +1,370 @@
+/*======================================================================
+
+MODULE_AUTHOR("Storlink Ltd");
+MODULE_DESCRIPTION("CFI map driver");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-m25p80.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-m25p80.c
++++ b/drivers/mtd/maps/sl2312-flash-m25p80.c
@@ -0,0 +1,498 @@
+/*
+ * $Id: sl2312-flash-m25p80.c,v 1.2 2006/06/02 08:46:02 middle Exp $
+MODULE_AUTHOR("Plus Chen <plus@storlink.com.tw>");
+MODULE_DESCRIPTION("MTD map driver for Storlink Sword boards");
+
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h
++++ b/drivers/mtd/maps/sl2312_flashmap.h
@@ -0,0 +1,21 @@
+/*
+ * Please note that the name are used in mkflash script. Therefore
+
+static struct mtd_partition sl2312_partitions[] = {
+ { name: "RedBoot", offset: 0x00000000, size: 0x00020000, },
-+ { name: "Kernel", offset: 0x00020000, size: 0x00100000, },
-+ { name: "Ramdisk", offset: 0x00120000, size: 0x00500000, },
-+ { name: "etc", offset: 0x00620000, size: 0x001A0000, },
++ { name: "kernel", offset: 0x00020000, size: 0x00100000, },
++ { name: "rootfs", offset: 0x00120000, size: 0x00500000, },
++ { name: "rootfs_data", offset: 0x00620000, size: 0x001A0000, },
+ { name: "VCTL", offset: 0x007C0000, size: 0x00010000, },
+ { name: "cfg", offset: 0x007D0000, size: 0x00020000, },
+ { name: "FIS directory", offset: 0x007F0000, size: 0x00010000, }
+};
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.16MB
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.16MB
++++ b/drivers/mtd/maps/sl2312_flashmap.h.16MB
@@ -0,0 +1,21 @@
+/*
+ * Please note that the name are used in mkflash script. Therefore
+ { name: "CurConf", offset: 0x00F40000, size: 0x000A0000, },
+ { name: "FIS directory", offset: 0x00FE0000, size: 0x00020000, }
+};
-Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.8MB
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.8MB
++++ b/drivers/mtd/maps/sl2312_flashmap.h.8MB
@@ -0,0 +1,21 @@
+/*
+ * Please note that the name are used in mkflash script. Therefore
+ { name: "CurConf", offset: 0x007C0000, size: 0x00020000, },
+ { name: "FIS directory", offset: 0x007E0000, size: 0x00020000, }
+};
-Index: linux-2.6.23.17/drivers/mtd/mtdchar.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/mtdchar.c
-+++ linux-2.6.23.17/drivers/mtd/mtdchar.c
-@@ -59,6 +59,77 @@ struct mtd_file_info {
+--- a/drivers/mtd/mtdchar.c
++++ b/drivers/mtd/mtdchar.c
+@@ -59,6 +59,77 @@
enum mtd_file_modes mode;
};
static loff_t mtd_lseek (struct file *file, loff_t offset, int orig)
{
struct mtd_file_info *mfi = file->private_data;
-@@ -162,13 +233,21 @@ static ssize_t mtd_read(struct file *fil
+@@ -162,13 +233,21 @@
int len;
char *kbuf;
/* FIXME: Use kiovec in 2.5 to lock down the user's buffers
and pass them directly to the MTD functions */
-@@ -178,8 +257,12 @@ static ssize_t mtd_read(struct file *fil
+@@ -178,8 +257,12 @@
else
kbuf=kmalloc(count, GFP_KERNEL);
while (count) {
-@@ -224,6 +307,9 @@ static ssize_t mtd_read(struct file *fil
+@@ -224,6 +307,9 @@
*ppos += retlen;
if (copy_to_user(buf, kbuf, retlen)) {
kfree(kbuf);
return -EFAULT;
}
else
-@@ -235,13 +321,19 @@ static ssize_t mtd_read(struct file *fil
+@@ -235,13 +321,19 @@
count = 0;
}
else {
return total_retlen;
} /* mtd_read */
-@@ -255,24 +347,40 @@ static ssize_t mtd_write(struct file *fi
+@@ -255,24 +347,40 @@
int ret=0;
int len;
while (count) {
-@@ -283,6 +391,9 @@ static ssize_t mtd_write(struct file *fi
+@@ -283,6 +391,9 @@
if (copy_from_user(kbuf, buf, len)) {
kfree(kbuf);
return -EFAULT;
}
-@@ -323,11 +434,17 @@ static ssize_t mtd_write(struct file *fi
+@@ -323,11 +434,17 @@
}
else {
kfree(kbuf);
return total_retlen;
} /* mtd_write */
-@@ -381,36 +498,67 @@ static int mtd_ioctl(struct inode *inode
+@@ -381,36 +498,67 @@
u_long size;
struct mtd_info_user info;
break;
}
-@@ -433,7 +581,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -433,7 +581,12 @@
struct erase_info *erase;
if(!(file->f_mode & 2))
erase=kzalloc(sizeof(struct erase_info),GFP_KERNEL);
if (!erase)
-@@ -447,6 +600,9 @@ static int mtd_ioctl(struct inode *inode
+@@ -447,6 +600,9 @@
if (copy_from_user(&erase->addr, argp,
sizeof(struct erase_info_user))) {
kfree(erase);
return -EFAULT;
}
erase->mtd = mtd;
-@@ -484,14 +640,26 @@ static int mtd_ioctl(struct inode *inode
+@@ -484,14 +640,26 @@
struct mtd_oob_buf buf;
struct mtd_oob_ops ops;
if (!mtd->write_oob)
ret = -EOPNOTSUPP;
-@@ -499,8 +667,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -499,8 +667,12 @@
ret = access_ok(VERIFY_READ, buf.ptr,
buf.length) ? 0 : EFAULT;
ops.ooblen = buf.length;
ops.ooboffs = buf.start & (mtd->oobsize - 1);
-@@ -536,19 +708,35 @@ static int mtd_ioctl(struct inode *inode
+@@ -536,19 +708,35 @@
struct mtd_oob_buf buf;
struct mtd_oob_ops ops;
ops.ooblen = buf.length;
ops.ooboffs = buf.start & (mtd->oobsize - 1);
-@@ -580,7 +768,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -580,7 +768,12 @@
struct erase_info_user info;
if (copy_from_user(&info, argp, sizeof(info)))
if (!mtd->lock)
ret = -EOPNOTSUPP;
-@@ -594,7 +787,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -594,7 +787,12 @@
struct erase_info_user info;
if (copy_from_user(&info, argp, sizeof(info)))
if (!mtd->unlock)
ret = -EOPNOTSUPP;
-@@ -629,11 +827,21 @@ static int mtd_ioctl(struct inode *inode
+@@ -629,11 +827,21 @@
loff_t offs;
if (copy_from_user(&offs, argp, sizeof(loff_t)))
break;
}
-@@ -642,11 +850,21 @@ static int mtd_ioctl(struct inode *inode
+@@ -642,11 +850,21 @@
loff_t offs;
if (copy_from_user(&offs, argp, sizeof(loff_t)))
break;
}
-@@ -654,8 +872,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -654,8 +872,12 @@
case OTPSELECT:
{
int mode;
mfi->mode = MTD_MODE_NORMAL;
-@@ -670,7 +892,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -670,7 +892,12 @@
{
struct otp_info *buf = kmalloc(4096, GFP_KERNEL);
if (!buf)
ret = -EOPNOTSUPP;
switch (mfi->mode) {
case MTD_MODE_OTP_FACTORY:
-@@ -701,12 +928,24 @@ static int mtd_ioctl(struct inode *inode
+@@ -701,12 +928,24 @@
{
struct otp_info info;
ret = mtd->lock_user_prot_reg(mtd, info.start, info.length);
break;
}
-@@ -742,8 +981,12 @@ static int mtd_ioctl(struct inode *inode
+@@ -742,8 +981,12 @@
break;
case MTD_MODE_RAW:
mfi->mode = arg;
case MTD_MODE_NORMAL:
-@@ -766,6 +1009,10 @@ static int mtd_ioctl(struct inode *inode
+@@ -766,6 +1009,10 @@
ret = -ENOTTY;
}
return ret;
} /* memory_ioctl */
-Index: linux-2.6.23.17/drivers/mtd/nand/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/nand/Kconfig
-+++ linux-2.6.23.17/drivers/mtd/nand/Kconfig
-@@ -44,6 +44,13 @@ config MTD_NAND_AUTCPU12
+--- a/drivers/mtd/nand/Kconfig
++++ b/drivers/mtd/nand/Kconfig
+@@ -44,6 +44,13 @@
This enables the driver for the autronix autcpu12 board to
access the SmartMediaCard.
config MTD_NAND_EDB7312
tristate "Support for Cirrus Logic EBD7312 evaluation board"
depends on ARCH_EDB7312
-Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.c
++++ b/drivers/mtd/nand/sl2312-flash-nand.c
@@ -0,0 +1,2287 @@
+/*
+ * drivers/mtd/sl2312.c
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Alice Hennessy <ahennessy@mvista.com>");
+MODULE_DESCRIPTION("Glue layer for SmartMediaCard on Toshiba RBsl2312");
-Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.h
++++ b/drivers/mtd/nand/sl2312-flash-nand.h
@@ -0,0 +1,24 @@
+#ifndef SL2312_FLASH_NAND_H
+#define SL2312_FLASH_NAND_H
+\r
+
+#endif /* SL2312_FLASH_NAND_H */
-Index: linux-2.6.23.17/include/linux/mtd/kvctl.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/mtd/kvctl.h
++++ b/include/linux/mtd/kvctl.h
@@ -0,0 +1,40 @@
+#ifndef KVCTL_H
+#define KVCTL_H
+#define VCT_VLAN 8
+
+#endif
-Index: linux-2.6.23.17/drivers/mtd/maps/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/maps/Makefile
-+++ linux-2.6.23.17/drivers/mtd/maps/Makefile
-@@ -71,3 +71,7 @@ obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
+--- a/drivers/mtd/maps/Makefile
++++ b/drivers/mtd/maps/Makefile
+@@ -71,3 +71,7 @@
obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
obj-$(CONFIG_MTD_TQM834x) += tqm834x.o