2012/12/7 Philip Rakity <prakity@xxxxxxxxxx>: > > On Dec 7, 2012, at 2:36 AM, Kevin Liu <kliu5@xxxxxxxxxxx> wrote: > >> Some soc/platform need specific handling for signal voltage >> switch. For example, mmp2/mmp3 need to set the AIB IO domain >> control register accordingly. >> >> Signed-off-by: Bin Wang <binw@xxxxxxxxxxx> >> Signed-off-by: Philip Rakity <prakity@xxxxxxxxxxx> >> Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> >> --- >> drivers/mmc/host/sdhci.c | 17 +++++++++++++++++ >> drivers/mmc/host/sdhci.h | 1 + >> 2 files changed, 18 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c >> index 50d0382..10d06fd 100644 >> --- a/drivers/mmc/host/sdhci.c >> +++ b/drivers/mmc/host/sdhci.c >> @@ -1687,6 +1687,15 @@ static int sdhci_do_3_3v_signal_voltage_switch(struct sdhci_host *host, >> return -EIO; >> } >> } >> + >> + /* >> + * May need to apply soc/platfrom settings for the >> + * voltage switch >> + */ >> + if (host->ops->signal_voltage_switch) >> + host->ops->signal_voltage_switch(host, >> + host->mmc->ios.signal_voltage); >> + >> /* Wait for 5ms */ >> usleep_range(5000, 5500); >> >> @@ -1729,6 +1738,14 @@ static int sdhci_do_1_8v_signal_voltage_switch(struct sdhci_host *host, >> ret = 0; >> >> if (!ret) { >> + /* >> + * May need to apply soc/platfrom settings for the >> + * voltage switch >> + */ >> + if (host->ops->signal_voltage_switch) >> + host->ops->signal_voltage_switch(host, >> + host->mmc->ios.signal_voltage); >> + >> ctrl |= SDHCI_CTRL_VDD_180; >> sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2); >> > > I am wondering if this is needed. > > A better way would be to install a notifier for voltage switch notification from the regulator in the platform code for sdhci-pxav2 or -pxav3. > When the regulator changes the voltage the notifier is called and one can tell > a) The new voltage > b) The device asking for the voltage switch (passed in via the void data parameter on the request notitifer) > Good idea! I will change the patch. > The only issue I can see is for voltage changes that occur via a SD Host Controller that handles voltage changes. > I think we can ignore this issue. If the SD host controller can do the voltage change without external regulator, then it means it don't need to do specific soc/platform handling either. The reason why we need to do this is because we change the voltage outside of SD host controller. Thanks Kevin -- 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