Re: [PATCH v2] mmc: meson-gx: enable signal re-sampling together with tuning

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

 



On Fri, 18 Jan 2019 at 14:32, Andreas Fenkart <afenkart@xxxxxxxxx> wrote:
>
> card detection fails on "BeeLink Mini M8 SII" if enabled too early
> mmc1: error -110 whilst initialising MMC card
>
> Fixes: 71645e65729f ("mmc: meson-gx: add signal resampling")
> Signed-off-by: Andreas Fenkart <afenkart@xxxxxxxxx>

Applied for fixes, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/meson-gx-mmc.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
> index c2690c1a50ff..dba499009d0c 100644
> --- a/drivers/mmc/host/meson-gx-mmc.c
> +++ b/drivers/mmc/host/meson-gx-mmc.c
> @@ -738,6 +738,11 @@ static int meson_mmc_clk_phase_tuning(struct mmc_host *mmc, u32 opcode,
>  static int meson_mmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
>  {
>         struct meson_host *host = mmc_priv(mmc);
> +       int adj = 0;
> +
> +       /* enable signal resampling w/o delay */
> +       adj = ADJUST_ADJ_EN;
> +       writel(adj, host->regs + host->data->adjust);
>
>         return meson_mmc_clk_phase_tuning(mmc, opcode, host->rx_clk);
>  }
> @@ -768,6 +773,9 @@ static void meson_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>                 if (!IS_ERR(mmc->supply.vmmc))
>                         mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd);
>
> +               /* disable signal resampling */
> +               writel(0, host->regs + host->data->adjust);
> +
>                 /* Reset rx phase */
>                 clk_set_phase(host->rx_clk, 0);
>
> @@ -1166,7 +1174,7 @@ static int meson_mmc_get_cd(struct mmc_host *mmc)
>
>  static void meson_mmc_cfg_init(struct meson_host *host)
>  {
> -       u32 cfg = 0, adj = 0;
> +       u32 cfg = 0;
>
>         cfg |= FIELD_PREP(CFG_RESP_TIMEOUT_MASK,
>                           ilog2(SD_EMMC_CFG_RESP_TIMEOUT));
> @@ -1177,10 +1185,6 @@ static void meson_mmc_cfg_init(struct meson_host *host)
>         cfg |= CFG_ERR_ABORT;
>
>         writel(cfg, host->regs + SD_EMMC_CFG);
> -
> -       /* enable signal resampling w/o delay */
> -       adj = ADJUST_ADJ_EN;
> -       writel(adj, host->regs + host->data->adjust);
>  }
>
>  static int meson_mmc_card_busy(struct mmc_host *mmc)
> --
> 2.20.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