diff options
Diffstat (limited to 'drivers/mmc/core/sd.c')
| -rw-r--r-- | drivers/mmc/core/sd.c | 6 | 
1 files changed, 6 insertions, 0 deletions
| diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index 6fa51a6ed058..2c48d6504101 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -135,6 +135,9 @@ static int mmc_decode_csd(struct mmc_card *card)  			csd->erase_size = UNSTUFF_BITS(resp, 39, 7) + 1;  			csd->erase_size <<= csd->write_blkbits - 9;  		} + +		if (UNSTUFF_BITS(resp, 13, 1)) +			mmc_card_set_readonly(card);  		break;  	case 1:  		/* @@ -169,6 +172,9 @@ static int mmc_decode_csd(struct mmc_card *card)  		csd->write_blkbits = 9;  		csd->write_partial = 0;  		csd->erase_size = 1; + +		if (UNSTUFF_BITS(resp, 13, 1)) +			mmc_card_set_readonly(card);  		break;  	default:  		pr_err("%s: unrecognised CSD structure version %d\n", | 
