This is a straightforward conversion to the new function.

Signed-off-by: Logan Gunthorpe <log...@deltatee.com>
---
 drivers/mmc/host/sdricoh_cs.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/mmc/host/sdricoh_cs.c b/drivers/mmc/host/sdricoh_cs.c
index 5ff26ab..7eeed23 100644
--- a/drivers/mmc/host/sdricoh_cs.c
+++ b/drivers/mmc/host/sdricoh_cs.c
@@ -319,16 +319,20 @@ static void sdricoh_request(struct mmc_host *mmc, struct 
mmc_request *mrq)
                for (i = 0; i < data->blocks; i++) {
                        size_t len = data->blksz;
                        u8 *buf;
-                       struct page *page;
                        int result;
-                       page = sg_page(data->sg);
 
-                       buf = kmap(page) + data->sg->offset + (len * i);
+                       buf = sg_map_offset(data->sg, (len * i), SG_KMAP);
+                       if (IS_ERR(buf)) {
+                               cmd->error = PTR_ERR(buf);
+                               break;
+                       }
+
                        result =
                                sdricoh_blockio(host,
                                        data->flags & MMC_DATA_READ, buf, len);
-                       kunmap(page);
-                       flush_dcache_page(page);
+                       sg_unmap_offset(data->sg, buf, (len * i), SG_KMAP);
+
+                       flush_dcache_page(sg_page(data->sg));
                        if (result) {
                                dev_err(dev, "sdricoh_request: cmd %i "
                                        "block transfer failed\n", cmd->opcode);
-- 
2.1.4

Reply via email to