aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/maps/vmu-flash.c
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
commit8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch)
treea8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /drivers/mtd/maps/vmu-flash.c
parent406089d01562f1e2bf9f089fd7637009ebaad589 (diff)
Patched in Tegra support.
Diffstat (limited to 'drivers/mtd/maps/vmu-flash.c')
-rw-r--r--drivers/mtd/maps/vmu-flash.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/mtd/maps/vmu-flash.c b/drivers/mtd/maps/vmu-flash.c
index 6b223cfe92b..3a04b078576 100644
--- a/drivers/mtd/maps/vmu-flash.c
+++ b/drivers/mtd/maps/vmu-flash.c
@@ -360,6 +360,9 @@ static int vmu_flash_read(struct mtd_info *mtd, loff_t from, size_t len,
360 int index = 0, retval, partition, leftover, numblocks; 360 int index = 0, retval, partition, leftover, numblocks;
361 unsigned char cx; 361 unsigned char cx;
362 362
363 if (len < 1)
364 return -EIO;
365
363 mpart = mtd->priv; 366 mpart = mtd->priv;
364 mdev = mpart->mdev; 367 mdev = mpart->mdev;
365 partition = mpart->partition; 368 partition = mpart->partition;
@@ -431,6 +434,11 @@ static int vmu_flash_write(struct mtd_info *mtd, loff_t to, size_t len,
431 partition = mpart->partition; 434 partition = mpart->partition;
432 card = maple_get_drvdata(mdev); 435 card = maple_get_drvdata(mdev);
433 436
437 /* simple sanity checks */
438 if (len < 1) {
439 error = -EIO;
440 goto failed;
441 }
434 numblocks = card->parts[partition].numblocks; 442 numblocks = card->parts[partition].numblocks;
435 if (to + len > numblocks * card->blocklen) 443 if (to + len > numblocks * card->blocklen)
436 len = numblocks * card->blocklen - to; 444 len = numblocks * card->blocklen - to;
@@ -536,9 +544,9 @@ static void vmu_queryblocks(struct mapleq *mq)
536 mtd_cur->flags = MTD_WRITEABLE|MTD_NO_ERASE; 544 mtd_cur->flags = MTD_WRITEABLE|MTD_NO_ERASE;
537 mtd_cur->size = part_cur->numblocks * card->blocklen; 545 mtd_cur->size = part_cur->numblocks * card->blocklen;
538 mtd_cur->erasesize = card->blocklen; 546 mtd_cur->erasesize = card->blocklen;
539 mtd_cur->_write = vmu_flash_write; 547 mtd_cur->write = vmu_flash_write;
540 mtd_cur->_read = vmu_flash_read; 548 mtd_cur->read = vmu_flash_read;
541 mtd_cur->_sync = vmu_flash_sync; 549 mtd_cur->sync = vmu_flash_sync;
542 mtd_cur->writesize = card->blocklen; 550 mtd_cur->writesize = card->blocklen;
543 551
544 mpart = kmalloc(sizeof(struct mdev_part), GFP_KERNEL); 552 mpart = kmalloc(sizeof(struct mdev_part), GFP_KERNEL);
@@ -596,7 +604,7 @@ fail_name:
596} 604}
597 605
598/* Handles very basic info about the flash, queries for details */ 606/* Handles very basic info about the flash, queries for details */
599static int vmu_connect(struct maple_device *mdev) 607static int __devinit vmu_connect(struct maple_device *mdev)
600{ 608{
601 unsigned long test_flash_data, basic_flash_data; 609 unsigned long test_flash_data, basic_flash_data;
602 int c, error; 610 int c, error;
@@ -690,7 +698,7 @@ fail_nomem:
690 return error; 698 return error;
691} 699}
692 700
693static void vmu_disconnect(struct maple_device *mdev) 701static void __devexit vmu_disconnect(struct maple_device *mdev)
694{ 702{
695 struct memcard *card; 703 struct memcard *card;
696 struct mdev_part *mpart; 704 struct mdev_part *mpart;
@@ -772,7 +780,7 @@ static void vmu_file_error(struct maple_device *mdev, void *recvbuf)
772} 780}
773 781
774 782
775static int probe_maple_vmu(struct device *dev) 783static int __devinit probe_maple_vmu(struct device *dev)
776{ 784{
777 int error; 785 int error;
778 struct maple_device *mdev = to_maple_dev(dev); 786 struct maple_device *mdev = to_maple_dev(dev);
@@ -789,7 +797,7 @@ static int probe_maple_vmu(struct device *dev)
789 return 0; 797 return 0;
790} 798}
791 799
792static int remove_maple_vmu(struct device *dev) 800static int __devexit remove_maple_vmu(struct device *dev)
793{ 801{
794 struct maple_device *mdev = to_maple_dev(dev); 802 struct maple_device *mdev = to_maple_dev(dev);
795 803
@@ -802,7 +810,7 @@ static struct maple_driver vmu_flash_driver = {
802 .drv = { 810 .drv = {
803 .name = "Dreamcast_visual_memory", 811 .name = "Dreamcast_visual_memory",
804 .probe = probe_maple_vmu, 812 .probe = probe_maple_vmu,
805 .remove = remove_maple_vmu, 813 .remove = __devexit_p(remove_maple_vmu),
806 }, 814 },
807}; 815};
808 816