rk29_phone: fix heatset main mic Call Features
[firefly-linux-kernel-4.4.55.git] / drivers / mtd / mtd_blkdevs.c
old mode 100644 (file)
new mode 100755 (executable)
index 8ca17a3..4c1ded5
@@ -38,9 +38,24 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
 {
        unsigned long block, nsect;
        char *buf;
-
+#if 0
        block = blk_rq_pos(req) << 9 >> tr->blkshift;
        nsect = blk_rq_cur_bytes(req) >> tr->blkshift;
+#else  //modify by zyf for cap>=4GB 20110120
+       block = blk_rq_pos(req);
+       nsect = blk_rq_cur_bytes(req) >> tr->blkshift;
+    if(tr->blkshift != 9)
+    {
+        if(tr->blkshift > 9)
+        {
+           block = blk_rq_pos(req) >> (tr->blkshift - 9);
+        }
+        else
+        {
+               block = blk_rq_pos(req) << (9 - tr->blkshift);
+        }
+    }
+#endif
 
        buf = req->buffer;
 
@@ -56,8 +71,8 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
 
        switch(rq_data_dir(req)) {
        case READ:
-               for (; nsect > 0; nsect--, block++, buf += tr->blksize)
-                       if (tr->readsect(dev, block, buf))
+               //for (; nsect > 0; nsect--, block++, buf += tr->blksize)
+                       if (tr->readsect(dev, block,nsect, buf))
                                return -EIO;
                return 0;
 
@@ -65,8 +80,8 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
                if (!tr->writesect)
                        return -EIO;
 
-               for (; nsect > 0; nsect--, block++, buf += tr->blksize)
-                       if (tr->writesect(dev, block, buf))
+               //for (; nsect > 0; nsect--, block++, buf += tr->blksize)
+                       if (tr->writesect(dev, block,nsect, buf))
                                return -EIO;
                return 0;
 
@@ -277,7 +292,8 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
 
        /* 2.5 has capacity in units of 512 bytes while still
           having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */
-       set_capacity(gd, (new->size * tr->blksize) >> 9);
+       //set_capacity(gd, (new->size * tr->blksize) >> 9);
+       set_capacity(gd, (new->size >> 9) * tr->blksize);   //modify by zyf for cap>=4GB 20110120
 
        gd->private_data = new;
        new->blkcore_priv = gd;