Hi Ulf On Mon, 16 Sep 2013, Ulf Hansson wrote: > According to the eMMC/SD/SDIO specs the VDD voltage level must not be changed > during the initialization, without a complete power cycle of the card. > > Before this patchset, some host drivers were trying to change voltage level > at MMC_POWER_ON state, which is also what the protocol layer advised them to. > This was not correctly done and is the reason to why quite messy code in > the protocol layer has been needed, to handle a re-initialization sequence, > typically triggered from a power_restore or resume. > > I have tried to make each patch in the patchset as small and separate as > possible, surely the is room for improvments. Any suggestions are appreciated. > > An important note; MMC_CAP2_FULL_PWR_CYCLE, will need to be set by a host > to tell the protocol layer that the host is able to perform a complete power > cycle. Thus the protocol layer will try to negotiate the lowest possible VDD > voltage level between the card and host. I've got a question to this one. You mean a power cycle of a card, right? What if the card power is supplied by a regulator. How do you tell whether you can power cycle it or not? Maybe you can theoretically switch that regulator - sometimes. On other occasions other users might be preventing it from really powering off. Do you really need a guarantee, that every time you issue a power down .set_ios() the card will really be switched off? I don't see how this can be possible in my example? Thanks Guennadi > > > Ulf Hansson (7): > mmc: core: Let mmc_power_up|cycle take ocr as parameter > mmc: core: Let mmc_set_signal_voltage take ocr as parameter > mmc: core: Remove unnecessary retry mechanism at SDIO attach > mmc: core: Cleanup code for setting ocr mask for SDIO > mmc: core: Move cached value of the negotiated ocr mask to card > struct > mmc: core: Prevent violation of specs while initializing cards > mmc: core: Collect common code for card ocr validation > > drivers/mmc/core/core.c | 66 +++++++++++++++++-------------------- > drivers/mmc/core/core.h | 6 ++-- > drivers/mmc/core/mmc.c | 29 +++++----------- > drivers/mmc/core/sd.c | 41 +++++++---------------- > drivers/mmc/core/sdio.c | 82 ++++++++++++++-------------------------------- > include/linux/mmc/card.h | 1 + > include/linux/mmc/host.h | 1 - > 7 files changed, 79 insertions(+), 147 deletions(-) > > -- > 1.7.9.5 > > -- > 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 > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- 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