diff options
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.22/060-block2mtd_init.patch')
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.22/060-block2mtd_init.patch | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.22/060-block2mtd_init.patch b/target/linux/generic-2.6/patches-2.6.22/060-block2mtd_init.patch deleted file mode 100644 index e92499f..0000000 --- a/target/linux/generic-2.6/patches-2.6.22/060-block2mtd_init.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- a/drivers/mtd/devices/block2mtd.c -+++ b/drivers/mtd/devices/block2mtd.c -@@ -16,6 +16,7 @@ - #include <linux/list.h> - #include <linux/init.h> - #include <linux/mtd/mtd.h> -+#include <linux/mtd/partitions.h> - #include <linux/buffer_head.h> - #include <linux/mutex.h> - #include <linux/mount.h> -@@ -237,10 +238,11 @@ - - - /* FIXME: ensure that mtd->size % erase_size == 0 */ --static struct block2mtd_dev *add_device(char *devname, int erase_size) -+static struct block2mtd_dev *add_device(char *devname, int erase_size, char *mtdname) - { - struct block_device *bdev; - struct block2mtd_dev *dev; -+ struct mtd_partition *part; - - if (!devname) - return NULL; -@@ -279,14 +281,18 @@ - - /* Setup the MTD structure */ - /* make the name contain the block device in */ -- dev->mtd.name = kmalloc(sizeof("block2mtd: ") + strlen(devname), -- GFP_KERNEL); -+ -+ if (!mtdname) -+ mtdname = devname; -+ -+ dev->mtd.name = kmalloc(strlen(mtdname) + 1, GFP_KERNEL); -+ - if (!dev->mtd.name) - goto devinit_err; -+ -+ strcpy(dev->mtd.name, mtdname); - -- sprintf(dev->mtd.name, "block2mtd: %s", devname); -- -- dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK; -+ dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK & ~(erase_size - 1); - dev->mtd.erasesize = erase_size; - dev->mtd.writesize = 1; - dev->mtd.type = MTD_RAM; -@@ -298,15 +304,18 @@ - dev->mtd.read = block2mtd_read; - dev->mtd.priv = dev; - dev->mtd.owner = THIS_MODULE; -- -- if (add_mtd_device(&dev->mtd)) { -+ -+ part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL); -+ part->name = dev->mtd.name; -+ part->offset = 0; -+ part->size = dev->mtd.size; -+ if (add_mtd_partitions(&dev->mtd, part, 1)) { - /* Device didnt get added, so free the entry */ - goto devinit_err; - } - list_add(&dev->list, &blkmtd_device_list); - INFO("mtd%d: [%s] erase_size = %dKiB [%d]", dev->mtd.index, -- dev->mtd.name + strlen("blkmtd: "), -- dev->mtd.erasesize >> 10, dev->mtd.erasesize); -+ mtdname, dev->mtd.erasesize >> 10, dev->mtd.erasesize); - return dev; - - devinit_err: -@@ -379,9 +388,9 @@ - - static int block2mtd_setup2(const char *val) - { -- char buf[80 + 12]; /* 80 for device, 12 for erase size */ -+ char buf[80 + 12 + 80]; /* 80 for device, 12 for erase size, 80 for name */ - char *str = buf; -- char *token[2]; -+ char *token[3]; - char *name; - size_t erase_size = PAGE_SIZE; - int i, ret; -@@ -392,7 +401,7 @@ - strcpy(str, val); - kill_final_newline(str); - -- for (i = 0; i < 2; i++) -+ for (i = 0; i < 3; i++) - token[i] = strsep(&str, ","); - - if (str) -@@ -412,8 +421,10 @@ - parse_err("illegal erase size"); - } - } -+ if (token[2] && (strlen(token[2]) + 1 > 80)) -+ parse_err("mtd device name too long"); - -- add_device(name, erase_size); -+ add_device(name, erase_size, token[2]); - - return 0; - } -@@ -447,7 +458,7 @@ - - - module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200); --MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>]\""); -+MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>[,<name>]]\""); - - static int __init block2mtd_init(void) - { |