On 28 January 2015 at 21:54, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: > On 27 January 2015 at 15:01, Alexey Skidanov > <alexey.skidanov@xxxxxxxxxxx> wrote: >> This patch is coming to fix compatibility issue of BKOPS_EN field of EXT_CSD. >> In eMMC-5.1, BKOPS_EN was changed, and now it has two operational bits: >> Bit 0 - MANUAL_EN >> Bit 1 - AUTO_EN >> In previous eMMC revisions, only Bit 0 was supported. >> >> Signed-off-by: Alexey Skidanov <alexey.skidanov@xxxxxxxxxxx> One more thing. Please update the commit message header, since I don't think you are fixing a bug. You are fixing a compatibility issue due to a version of the spec, let's state that instead. Kind regards Uffe >> --- >> drivers/mmc/core/core.c | 2 +- >> drivers/mmc/core/mmc.c | 6 ++++-- >> include/linux/mmc/card.h | 5 ++++- >> include/linux/mmc/mmc.h | 6 ++++++ >> 4 files changed, 15 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c >> index 1be7055..0dc64e6 100644 >> --- a/drivers/mmc/core/core.c >> +++ b/drivers/mmc/core/core.c >> @@ -275,7 +275,7 @@ void mmc_start_bkops(struct mmc_card *card, bool from_exception) >> >> BUG_ON(!card); >> >> - if (!card->ext_csd.bkops_en || mmc_card_doing_bkops(card)) >> + if (!card->ext_csd.man_bkops_en || mmc_card_doing_bkops(card)) >> return; >> >> err = mmc_read_bkops_status(card); >> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >> index 1fc48a2..c35bf6e 100644 >> --- a/drivers/mmc/core/mmc.c >> +++ b/drivers/mmc/core/mmc.c >> @@ -483,10 +483,12 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd) >> /* check whether the eMMC card supports BKOPS */ >> if (ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1) { >> card->ext_csd.bkops = 1; >> - card->ext_csd.bkops_en = ext_csd[EXT_CSD_BKOPS_EN]; >> + card->ext_csd.man_bkops_en = >> + (ext_csd[EXT_CSD_BKOPS_EN] & >> + EXT_CSD_MANUAL_BKOPS_MASK); >> card->ext_csd.raw_bkops_status = >> ext_csd[EXT_CSD_BKOPS_STATUS]; >> - if (!card->ext_csd.bkops_en) >> + if (!card->ext_csd.man_bkops_en) >> pr_info("%s: BKOPS_EN bit is not set\n", > > Should we maybe update the pr_info to say "MAN_BKOPS_EN bit is not set"? > >> mmc_hostname(card->host)); >> } >> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h >> index 4d69c00..15772d0 100644 >> --- a/include/linux/mmc/card.h >> +++ b/include/linux/mmc/card.h >> @@ -83,7 +83,10 @@ struct mmc_ext_csd { >> bool hpi; /* HPI support bit */ >> unsigned int hpi_cmd; /* cmd used as HPI */ >> bool bkops; /* background support bit */ >> - bool bkops_en; /* background enable bit */ >> + bool man_bkops_en; /* manual background >> + enable bit */ >> + bool auto_bkops_en; /* automatic background >> + enable bit */ > > Please remove "auto_bkops_en", since it's not used. If see a need for > it later, then we can add it. > >> unsigned int data_sector_size; /* 512 bytes or 4KB */ >> unsigned int data_tag_unit_size; /* DATA TAG UNIT size */ >> unsigned int boot_ro_lock; /* ro lock support */ >> diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h >> index fb97b5c..d39db3e 100644 >> --- a/include/linux/mmc/mmc.h >> +++ b/include/linux/mmc/mmc.h >> @@ -428,6 +428,12 @@ struct _mmc_csd { >> #define EXT_CSD_BKOPS_LEVEL_2 0x2 >> >> /* >> + * BKOPS modes >> + */ >> +#define EXT_CSD_MANUAL_BKOPS_MASK 0x01 >> +#define EXT_CSD_AUTOMATIC_BKOPS_MASK 0x02 > > Please remove EXT_CSD_AUTOMATIC_BKOPS_MASK, it's not used in this patch. > >> + >> +/* >> * MMC_SWITCH access modes >> */ >> >> -- >> 1.7.9.5 >> > > Kind regards > Uffe -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html