Re: [PATCH v2] mmc: sdhci-xenon: fix annoying 1.8V regulator warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 20 Apr 2020 at 10:04, Marek Behún <marek.behun@xxxxxx> wrote:
>
> For some reason the Host Control2 register of the Xenon SDHCI controller
> sometimes reports the bit representing 1.8V signaling as 0 when read
> after it was written as 1. Subsequent read reports 1.
>
> This causes the sdhci_start_signal_voltage_switch function to report
>   1.8V regulator output did not become stable
>
> When CONFIG_PM is enabled, the host is suspended and resumend many
> times, and in each resume the switch to 1.8V is called, and so the
> kernel log reports this message annoyingly often.
>
> Do an empty read of the Host Control2 register in Xenon's
> .voltage_switch method to circumvent this.
>
> This patch fixes this particular problem on Turris MOX.
>
> Signed-off-by: Marek Behún <marek.behun@xxxxxx>
> Fixes: 8d876bf472db ("mmc: sdhci-xenon: wait 5ms after set 1.8V...")
> Cc: Zhoujie Wu <zjwu@xxxxxxxxxxx>
> Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
> Cc: Gregory CLEMENT <gregory.clement@xxxxxxxxxxxxxxxxxx>
> Cc: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> Cc: Konstantin Porotchkin <kostap@xxxxxxxxxxx>
> Cc: Tomasz Maciej Nowak <tmn505@xxxxxxxxx>
> Cc: Miquel Raynal <miquel.raynal@xxxxxxxxxxx>

Applied for fixes, thanks!

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci-xenon.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c
> index 1dea1ba66f7b..4703cd540c7f 100644
> --- a/drivers/mmc/host/sdhci-xenon.c
> +++ b/drivers/mmc/host/sdhci-xenon.c
> @@ -235,6 +235,16 @@ static void xenon_voltage_switch(struct sdhci_host *host)
>  {
>         /* Wait for 5ms after set 1.8V signal enable bit */
>         usleep_range(5000, 5500);
> +
> +       /*
> +        * For some reason the controller's Host Control2 register reports
> +        * the bit representing 1.8V signaling as 0 when read after it was
> +        * written as 1. Subsequent read reports 1.
> +        *
> +        * Since this may cause some issues, do an empty read of the Host
> +        * Control2 register here to circumvent this.
> +        */
> +       sdhci_readw(host, SDHCI_HOST_CONTROL2);
>  }
>
>  static const struct sdhci_ops sdhci_xenon_ops = {
> --
> 2.24.1
>




[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux