diff options
Diffstat (limited to 'drivers/mmc/core/sdio_ops.c')
| -rw-r--r-- | drivers/mmc/core/sdio_ops.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mmc/core/sdio_ops.c b/drivers/mmc/core/sdio_ops.c index 4addbe987bc..b0517cc0620 100644 --- a/drivers/mmc/core/sdio_ops.c +++ b/drivers/mmc/core/sdio_ops.c @@ -144,8 +144,11 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,  	cmd.arg |= fn << 28;  	cmd.arg |= incr_addr ? 0x04000000 : 0x00000000;  	cmd.arg |= addr << 9; -	if (blocks == 1 && blksz <= 512) -		cmd.arg |= (blksz == 512) ? 0 : blksz;	/* byte mode */ +	if (blocks == 1 && blksz < 512) +		cmd.arg |= blksz;			/* byte mode */ +	else if (blocks == 1 && blksz == 512 && +		 !(mmc_card_broken_byte_mode_512(card))) +		cmd.arg |= 0;				/* byte mode, 0==512 */  	else  		cmd.arg |= 0x08000000 | blocks;		/* block mode */  	cmd.flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_ADTC;  |