Hi Shawn, Thanks for your comments. On 9/2/16, 10:50 AM, "Shawn Lin" <shawn.lin@xxxxxxxxxxxxxx> wrote: >Hi, > >On 2016/9/1 22:24, alex lemberg wrote: >> Signed-off-by: alex lemberg <alex.lemberg@xxxxxxxxxxx> > >It would be nice to add some change log.:) Will be add in case we release additional patch version. > >This part is still on my TODO list, so very nice to see >you provide patches for this. But I don't see we reach >an agreement at that time for whether it would be sane to >set this bit for kernel. I remember Adrian's opinion was to >let userspace take over the ownership of this, and Ulf maybe >had no hard opinon for this(Ulf, right? :)). I think you are referring to the “[pre]set AUTO BKOPS” functionality to the device. Am I right? In this patch the value of AUTO_BKOPS_EN bit is read from the device EXT_CSD and set to the card->ext_csd structure. > > >> --- >> drivers/mmc/core/mmc.c | 6 ++++++ >> include/linux/mmc/card.h | 1 + >> include/linux/mmc/mmc.h | 1 + >> 3 files changed, 8 insertions(+) >> >> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >> index f2d185c..e2e987f 100644 >> --- a/drivers/mmc/core/mmc.c >> +++ b/drivers/mmc/core/mmc.c >> @@ -531,6 +531,12 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd) >> if (!card->ext_csd.man_bkops_en) >> pr_debug("%s: MAN_BKOPS_EN bit is not set\n", >> mmc_hostname(card->host)); >> + card->ext_csd.auto_bkops_en = >> + (ext_csd[EXT_CSD_BKOPS_EN] & >> + EXT_CSD_AUTO_BKOPS_MASK); >> + if (!card->ext_csd.auto_bkops_en) >> + pr_debug("%s: AUTO_BKOPS_EN bit is not set\n", >> + mmc_hostname(card->host)); >> } >> >> /* check whether the eMMC card supports HPI */ >> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h >> index 73fad83..aaedb68 100644 >> --- a/include/linux/mmc/card.h >> +++ b/include/linux/mmc/card.h >> @@ -84,6 +84,7 @@ struct mmc_ext_csd { >> unsigned int hpi_cmd; /* cmd used as HPI */ >> bool bkops; /* background support bit */ >> bool man_bkops_en; /* manual bkops enable bit */ >> + bool auto_bkops_en; /* auto bkops enable bit */ >> 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 c376209..0fe3908 100644 >> --- a/include/linux/mmc/mmc.h >> +++ b/include/linux/mmc/mmc.h >> @@ -436,6 +436,7 @@ struct _mmc_csd { >> * BKOPS modes >> */ >> #define EXT_CSD_MANUAL_BKOPS_MASK 0x01 >> +#define EXT_CSD_AUTO_BKOPS_MASK 0x02 >> >> /* >> * MMC_SWITCH access modes >> > > >-- >Best Regards >Shawn Lin > ��.n��������+%������w��{.n�����{��i��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥