]> Pileus Git - ~andy/linux/blobdiff - drivers/mmc/mmc_block.c
[Bluetooth] Add platform device for virtual and serial devices
[~andy/linux] / drivers / mmc / mmc_block.c
index 8eb2a2ede64b5c1272515c7f2d37150a5eb792df..115cc21094b941a243d323756f127f905b14e0bf 100644 (file)
@@ -27,7 +27,6 @@
 #include <linux/hdreg.h>
 #include <linux/kdev_t.h>
 #include <linux/blkdev.h>
-#include <linux/devfs_fs_kernel.h>
 #include <linux/mutex.h>
 
 #include <linux/mmc/card.h>
@@ -175,6 +174,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
                brq.data.timeout_ns = card->csd.tacc_ns * 10;
                brq.data.timeout_clks = card->csd.tacc_clks * 10;
                brq.data.blksz_bits = md->block_bits;
+               brq.data.blksz = 1 << md->block_bits;
                brq.data.blocks = req->nr_sectors >> (md->block_bits - 9);
                brq.stop.opcode = MMC_STOP_TRANSMISSION;
                brq.stop.arg = 0;
@@ -187,6 +187,12 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
                        brq.cmd.opcode = MMC_WRITE_BLOCK;
                        brq.data.flags |= MMC_DATA_WRITE;
                        brq.data.blocks = 1;
+
+                       /*
+                        * Scale up the timeout by the r2w factor
+                        */
+                       brq.data.timeout_ns <<= card->csd.r2w_factor;
+                       brq.data.timeout_clks <<= card->csd.r2w_factor;
                }
 
                if (brq.data.blocks > 1) {
@@ -346,7 +352,7 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
                         */
                        printk(KERN_ERR "%s: unable to select block size for "
                                "writing (rb%u wb%u rp%u wp%u)\n",
-                               md->disk->disk_name,
+                               mmc_card_id(card),
                                1 << card->csd.read_blkbits,
                                1 << card->csd.write_blkbits,
                                card->csd.read_partial,
@@ -402,7 +408,6 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
         */
 
        sprintf(md->disk->disk_name, "mmcblk%d", devidx);
-       sprintf(md->disk->devfs_name, "mmc/blk%d", devidx);
 
        blk_queue_hardsect_size(md->queue.queue, 1 << md->block_bits);
 
@@ -548,7 +553,6 @@ static int __init mmc_blk_init(void)
        if (major == 0)
                major = res;
 
-       devfs_mk_dir("mmc");
        return mmc_register_driver(&mmc_driver);
 
  out:
@@ -558,7 +562,6 @@ static int __init mmc_blk_init(void)
 static void __exit mmc_blk_exit(void)
 {
        mmc_unregister_driver(&mmc_driver);
-       devfs_remove("mmc");
        unregister_blkdev(major, "mmc");
 }