diff --git a/drivers/mmc/host/rk_sdmmc_ops.c b/drivers/mmc/host/rk_sdmmc_ops.c index 96f20d2dcfc7..47967a40915a 100644 --- a/drivers/mmc/host/rk_sdmmc_ops.c +++ b/drivers/mmc/host/rk_sdmmc_ops.c @@ -131,7 +131,7 @@ static int rk_emmc_wait_busy(void) /* * Transfer a single sector of kernel addressable data */ -int rk_emmc_transfer(u8 *buffer, unsigned addr, unsigned blksz, int write) +int rk_emmc_transfer(u8 *buffer, unsigned int addr, unsigned int datasz, int write) { int ret = 0; enum emmc_area_type areatype; @@ -150,9 +150,9 @@ int rk_emmc_transfer(u8 *buffer, unsigned addr, unsigned blksz, int write) mrq.data = &data; mrq.stop = &stop; - sg_init_one(&sg, buffer, blksz); + sg_init_one(&sg, buffer, datasz); - rk_emmc_prepare_mrq(&mrq, &sg, 1, addr, 1, blksz, write); + rk_emmc_prepare_mrq(&mrq, &sg, 1, addr, datasz / BLKSZ, BLKSZ, write); mmc_claim_host(this_card->host); diff --git a/drivers/mmc/host/rk_sdmmc_ops.h b/drivers/mmc/host/rk_sdmmc_ops.h index 8261d69f561d..81890ab6a94e 100644 --- a/drivers/mmc/host/rk_sdmmc_ops.h +++ b/drivers/mmc/host/rk_sdmmc_ops.h @@ -6,6 +6,6 @@ #ifndef _RK_SDMMC_OPS_H_ #define _RK_SDMMC_OPS_H_ -int rk_emmc_transfer(u8 *buffer, unsigned int addr, unsigned int blksz, int write); +int rk_emmc_transfer(u8 *buffer, unsigned int addr, unsigned int datasz, int write); #endif