mmc: core: fix reading the bkops status from card
The bkops status is indicated by the bit 0 and 1 of the 246th byte of the ext_csd register. The current code doesn't ignore the rest of the byte. Fix this by extracting the bit 0 and 1 only for the current bkops urgency. The exception level is defined by the least significant nibble of 54th byte in the ext_csd register. The current code doesn't ignore the rest of the byte. Fix this by extracting the nibble(LSB) for exception status. Change-Id: Ic90fe26a676ae7dd2063e17bc3771db83605f4dc Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> [subhashj@codeaurora.org: fixed trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
This commit is contained in:
parent
240bee3ffd
commit
20e43d0532
2 changed files with 9 additions and 2 deletions
|
@ -1871,8 +1871,14 @@ int mmc_read_bkops_status(struct mmc_card *card)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
card->ext_csd.raw_bkops_status = ext_csd[EXT_CSD_BKOPS_STATUS];
|
||||
card->ext_csd.raw_exception_status = ext_csd[EXT_CSD_EXP_EVENTS_STATUS];
|
||||
card->ext_csd.raw_bkops_status = ext_csd[EXT_CSD_BKOPS_STATUS] &
|
||||
MMC_BKOPS_URGENCY_MASK;
|
||||
card->ext_csd.raw_exception_status =
|
||||
ext_csd[EXT_CSD_EXP_EVENTS_STATUS] & (EXT_CSD_URGENT_BKOPS |
|
||||
EXT_CSD_DYNCAP_NEEDED |
|
||||
EXT_CSD_SYSPOOL_EXHAUSTED
|
||||
| EXT_CSD_PACKED_FAILURE);
|
||||
|
||||
kfree(ext_csd);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -128,6 +128,7 @@ struct mmc_ext_csd {
|
|||
u8 raw_pwr_cl_ddr_52_360; /* 239 */
|
||||
u8 raw_pwr_cl_ddr_200_360; /* 253 */
|
||||
u8 cache_flush_policy; /* 240 */
|
||||
#define MMC_BKOPS_URGENCY_MASK 0x3
|
||||
u8 raw_bkops_status; /* 246 */
|
||||
u8 raw_sectors[4]; /* 212 - 4 bytes */
|
||||
u8 cmdq_depth; /* 307 */
|
||||
|
|
Loading…
Add table
Reference in a new issue