mmc_block: check card state after write
Some cards have been reported to signal that they're ready prematurely. Checking both the busy bit and card state solves the issue. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
2ffbb8377c
commit
d198f10198
1 changed files with 7 additions and 1 deletions
|
@ -321,7 +321,13 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
|
||||||
req->rq_disk->disk_name, err);
|
req->rq_disk->disk_name, err);
|
||||||
goto cmd_err;
|
goto cmd_err;
|
||||||
}
|
}
|
||||||
} while (!(cmd.resp[0] & R1_READY_FOR_DATA));
|
/*
|
||||||
|
* Some cards mishandle the status bits,
|
||||||
|
* so make sure to check both the busy
|
||||||
|
* indication and the card state.
|
||||||
|
*/
|
||||||
|
} while (!(cmd.resp[0] & R1_READY_FOR_DATA) ||
|
||||||
|
(R1_CURRENT_STATE(cmd.resp[0]) == 7));
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (cmd.resp[0] & ~0x00000900)
|
if (cmd.resp[0] & ~0x00000900)
|
||||||
|
|
Loading…
Reference in a new issue