From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [PATCH] mmc: fsl_esdhc_imx: replace all readl/writel to esdhc_read32/esdhc_write32
Date: Fri, 18 Sep 2020 11:19:09 +0200 [thread overview]
Message-ID: <2a52d1ca-5730-d364-ee47-e79037408bad@denx.de> (raw)
In-Reply-To: <1598945666-7044-1-git-send-email-haibo.chen@nxp.com>
Hi Haibo,
On 01.09.20 09:34, haibo.chen at nxp.com wrote:
> From: Haibo Chen <haibo.chen@nxp.com>
>
> Currently, readl/writel and esdhc_read32/esdhc_write32 are used. To align
> the usage, change to only use esdhc_read32/esdhc_write32.
>
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
> drivers/mmc/fsl_esdhc_imx.c | 64 ++++++++++++++++++-------------------
> 1 file changed, 32 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c
> index 0c866b168f..a0a0903ae4 100644
> --- a/drivers/mmc/fsl_esdhc_imx.c
> +++ b/drivers/mmc/fsl_esdhc_imx.c
> @@ -729,7 +729,7 @@ static void esdhc_set_strobe_dll(struct mmc *mmc)
> u32 val;
>
> if (priv->clock > ESDHC_STROBE_DLL_CLK_FREQ) {
> - writel(ESDHC_STROBE_DLL_CTRL_RESET, ®s->strobe_dllctrl);
> + esdhc_write32(ESDHC_STROBE_DLL_CTRL_RESET, ®s->strobe_dllctrl);
>
> /*
> * enable strobe dll ctrl and adjust the delay target
> @@ -738,10 +738,10 @@ static void esdhc_set_strobe_dll(struct mmc *mmc)
> val = ESDHC_STROBE_DLL_CTRL_ENABLE |
> (priv->strobe_dll_delay_target <<
> ESDHC_STROBE_DLL_CTRL_SLV_DLY_TARGET_SHIFT);
> - writel(val, ®s->strobe_dllctrl);
> + esdhc_write32(val, ®s->strobe_dllctrl);
> /* wait 1us to make sure strobe dll status register stable */
> mdelay(1);
> - val = readl(®s->strobe_dllstat);
> + val = esdhc_read32(®s->strobe_dllstat);
> if (!(val & ESDHC_STROBE_DLL_STS_REF_LOCK))
> pr_warn("HS400 strobe DLL status REF not lock!\n");
> if (!(val & ESDHC_STROBE_DLL_STS_SLV_LOCK))
> @@ -755,18 +755,18 @@ static int esdhc_set_timing(struct mmc *mmc)
> struct fsl_esdhc *regs = priv->esdhc_regs;
> u32 mixctrl;
>
> - mixctrl = readl(®s->mixctrl);
> + mixctrl = esdhc_read32(®s->mixctrl);
> mixctrl &= ~(MIX_CTRL_DDREN | MIX_CTRL_HS400_EN);
>
> switch (mmc->selected_mode) {
> case MMC_LEGACY:
> esdhc_reset_tuning(mmc);
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(mixctrl, ®s->mixctrl);
> break;
> case MMC_HS_400:
> case MMC_HS_400_ES:
> mixctrl |= MIX_CTRL_DDREN | MIX_CTRL_HS400_EN;
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(mixctrl, ®s->mixctrl);
> esdhc_set_strobe_dll(mmc);
> break;
> case MMC_HS:
> @@ -777,12 +777,12 @@ static int esdhc_set_timing(struct mmc *mmc)
> case UHS_SDR25:
> case UHS_SDR50:
> case UHS_SDR104:
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(mixctrl, ®s->mixctrl);
> break;
> case UHS_DDR50:
> case MMC_DDR_52:
> mixctrl |= MIX_CTRL_DDREN;
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(mixctrl, ®s->mixctrl);
> break;
> default:
> printf("Not supported %d\n", mmc->selected_mode);
> @@ -862,8 +862,8 @@ static int fsl_esdhc_execute_tuning(struct udevice *dev, uint32_t opcode)
> struct fsl_esdhc_priv *priv = dev_get_priv(dev);
> struct fsl_esdhc *regs = priv->esdhc_regs;
> struct mmc *mmc = &plat->mmc;
> - u32 irqstaten = readl(®s->irqstaten);
> - u32 irqsigen = readl(®s->irqsigen);
> + u32 irqstaten = esdhc_read32(®s->irqstaten);
> + u32 irqsigen = esdhc_read32(®s->irqsigen);
> int i, ret = -ETIMEDOUT;
> u32 val, mixctrl;
>
> @@ -873,25 +873,25 @@ static int fsl_esdhc_execute_tuning(struct udevice *dev, uint32_t opcode)
>
> /* This is readw/writew SDHCI_HOST_CONTROL2 when tuning */
> if (priv->flags & ESDHC_FLAG_STD_TUNING) {
> - val = readl(®s->autoc12err);
> - mixctrl = readl(®s->mixctrl);
> + val = esdhc_read32(®s->autoc12err);
> + mixctrl = esdhc_read32(®s->mixctrl);
> val &= ~MIX_CTRL_SMPCLK_SEL;
> mixctrl &= ~(MIX_CTRL_FBCLK_SEL | MIX_CTRL_AUTO_TUNE_EN);
>
> val |= MIX_CTRL_EXE_TUNE;
> mixctrl |= MIX_CTRL_FBCLK_SEL | MIX_CTRL_AUTO_TUNE_EN;
>
> - writel(val, ®s->autoc12err);
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(val, ®s->autoc12err);
> + esdhc_write32(mixctrl, ®s->mixctrl);
> }
>
> /* sdhci_writew(host, SDHCI_TRNS_READ, SDHCI_TRANSFER_MODE); */
> - mixctrl = readl(®s->mixctrl);
> + mixctrl = esdhc_read32(®s->mixctrl);
> mixctrl = MIX_CTRL_DTDSEL_READ | (mixctrl & ~MIX_CTRL_SDHCI_MASK);
> - writel(mixctrl, ®s->mixctrl);
> + esdhc_write32(mixctrl, ®s->mixctrl);
>
> - writel(IRQSTATEN_BRR, ®s->irqstaten);
> - writel(IRQSTATEN_BRR, ®s->irqsigen);
> + esdhc_write32(IRQSTATEN_BRR, ®s->irqstaten);
> + esdhc_write32(IRQSTATEN_BRR, ®s->irqsigen);
>
> /*
> * Issue opcode repeatedly till Execute Tuning is set to 0 or the number
> @@ -902,22 +902,22 @@ static int fsl_esdhc_execute_tuning(struct udevice *dev, uint32_t opcode)
>
> if (opcode == MMC_CMD_SEND_TUNING_BLOCK_HS200) {
> if (mmc->bus_width == 8)
> - writel(0x7080, ®s->blkattr);
> + esdhc_write32(0x7080, ®s->blkattr);
> else if (mmc->bus_width == 4)
> - writel(0x7040, ®s->blkattr);
> + esdhc_write32(0x7040, ®s->blkattr);
> } else {
> - writel(0x7040, ®s->blkattr);
> + esdhc_write32(0x7040, ®s->blkattr);
> }
>
> /* sdhci_writew(host, SDHCI_TRNS_READ, SDHCI_TRANSFER_MODE) */
> - val = readl(®s->mixctrl);
> + val = esdhc_read32(®s->mixctrl);
> val = MIX_CTRL_DTDSEL_READ | (val & ~MIX_CTRL_SDHCI_MASK);
> - writel(val, ®s->mixctrl);
> + esdhc_write32(val, ®s->mixctrl);
>
> /* We are using STD tuning, no need to check return value */
> mmc_send_tuning(mmc, opcode, NULL);
>
> - ctrl = readl(®s->autoc12err);
> + ctrl = esdhc_read32(®s->autoc12err);
> if ((!(ctrl & MIX_CTRL_EXE_TUNE)) &&
> (ctrl & MIX_CTRL_SMPCLK_SEL)) {
> ret = 0;
> @@ -925,8 +925,8 @@ static int fsl_esdhc_execute_tuning(struct udevice *dev, uint32_t opcode)
> }
> }
>
> - writel(irqstaten, ®s->irqstaten);
> - writel(irqsigen, ®s->irqsigen);
> + esdhc_write32(irqstaten, ®s->irqstaten);
> + esdhc_write32(irqsigen, ®s->irqsigen);
>
> esdhc_stop_tuning(mmc);
>
> @@ -1179,7 +1179,7 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv,
> if (priv->vs18_enable)
> esdhc_setbits32(®s->vendorspec, ESDHC_VENDORSPEC_VSELECT);
>
> - writel(SDHCI_IRQ_EN_BITS, ®s->irqstaten);
> + esdhc_write32(SDHCI_IRQ_EN_BITS, ®s->irqstaten);
> cfg = &plat->cfg;
> #ifndef CONFIG_DM_MMC
> memset(cfg, '\0', sizeof(*cfg));
> @@ -1260,10 +1260,10 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv,
>
> cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
>
> - writel(0, ®s->dllctrl);
> + esdhc_write32(0, ®s->dllctrl);
> if (priv->flags & ESDHC_FLAG_USDHC) {
> if (priv->flags & ESDHC_FLAG_STD_TUNING) {
> - u32 val = readl(®s->tuning_ctrl);
> + u32 val = esdhc_read32(®s->tuning_ctrl);
>
> val |= ESDHC_STD_TUNING_EN;
> val &= ~ESDHC_TUNING_START_TAP_MASK;
> @@ -1282,7 +1282,7 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv,
> * after the whole tuning procedure always can't get any response.
> */
> val |= ESDHC_TUNING_CMD_CRC_CHECK_DISABLE;
> - writel(val, ®s->tuning_ctrl);
> + esdhc_write32(val, ®s->tuning_ctrl);
> }
> }
>
> @@ -1648,9 +1648,9 @@ static int fsl_esdhc_set_enhanced_strobe(struct udevice *dev)
> struct fsl_esdhc *regs = priv->esdhc_regs;
> u32 m;
>
> - m = readl(®s->mixctrl);
> + m = esdhc_read32(®s->mixctrl);
> m |= MIX_CTRL_HS400_ES;
> - writel(m, ®s->mixctrl);
> + esdhc_write32(m, ®s->mixctrl);
>
> return 0;
> }
>
In principle I find this cleanup good, but it breaks several board under
ARM64 (imx8 for example). You can take a look at my Travis' build :
https://travis-ci.org/github/sbabic/u-boot-imx/jobs/728000331
Can you take a look and then repost it ? Thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
next prev parent reply other threads:[~2020-09-18 9:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-01 7:34 [PATCH] mmc: fsl_esdhc_imx: replace all readl/writel to esdhc_read32/esdhc_write32 haibo.chen at nxp.com
2020-09-18 9:19 ` Stefano Babic [this message]
2020-09-22 11:21 ` Bough Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2a52d1ca-5730-d364-ee47-e79037408bad@denx.de \
--to=sbabic@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.