From: Sascha Hauer <s.hauer@pengutronix.de>
To: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: barebox@lists.infradead.org, Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: Re: [PATCH v2 13/14] mci: arasan-sdhci: add HS200 tuning support on ZynqMP
Date: Fri, 15 Mar 2024 13:18:37 +0100 [thread overview]
Message-ID: <ZfQ8nZLimv4L5jPy@pengutronix.de> (raw)
In-Reply-To: <20240314-v2024-02-0-topic-arasan-hs200-support-v2-13-0386c27fe653@pengutronix.de>
On Thu, Mar 14, 2024 at 07:47:36PM +0100, Steffen Trumtrar wrote:
> The ZynpMP 8.9a has an Arasan IP core that supports HS200 tuning.
> Register the callback with the mci-core.
>
> Arasan uses the SDHCI tuning method.
>
> Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
> drivers/mci/arasan-sdhci.c | 62 +++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 59 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mci/arasan-sdhci.c b/drivers/mci/arasan-sdhci.c
> index eb81ff907b..80489e98f4 100644
> --- a/drivers/mci/arasan-sdhci.c
> +++ b/drivers/mci/arasan-sdhci.c
> @@ -128,6 +128,46 @@ static int arasan_sdhci_reset(struct arasan_sdhci_host *host, u8 mask)
> return 0;
> }
>
> +static void arasan_zynqmp_dll_reset(struct arasan_sdhci_host *host, u32 deviceid)
> +{
> + u16 clk;
> +
> + clk = sdhci_read16(&host->sdhci, SDHCI_CLOCK_CONTROL);
> + clk &= ~(SDHCI_CLOCK_CARD_EN | SDHCI_CLOCK_INT_EN);
> + sdhci_write16(&host->sdhci, SDHCI_CLOCK_CONTROL, clk);
> +
> + /* Issue DLL Reset */
> + zynqmp_pm_sd_dll_reset(deviceid, PM_DLL_RESET_PULSE);
> +
> + clk = sdhci_read16(&host->sdhci, SDHCI_CLOCK_CONTROL);
> +
> + sdhci_enable_clk(&host->sdhci, clk);
> +}
> +
> +static int arasan_zynqmp_execute_tuning(struct mci_host *mci, u32 opcode)
> +{
> + struct arasan_sdhci_host *host = to_arasan_sdhci_host(mci);
> + struct clk_hw *hw = &host->clk_data.sdcardclk_hw;
> + const char *clk_name = clk_hw_get_name(hw);
> + u32 device_id = !strcmp(clk_name, "clk_out_sd0") ? NODE_SD_0 :
> + NODE_SD_1;
> + int err;
> +
> + /* ZynqMP SD controller does not perform auto tuning in DDR50 mode */
> + if (mci->timing == MMC_TIMING_UHS_DDR50)
> + return 0;
> +
> + arasan_zynqmp_dll_reset(host, device_id);
> +
> + err = sdhci_execute_tuning(&host->sdhci, opcode);
> + if (err)
> + return err;
> +
> + arasan_zynqmp_dll_reset(host, device_id);
> +
> + return 0;
> +}
> +
> static int arasan_sdhci_init(struct mci_host *mci, struct device *dev)
> {
> struct arasan_sdhci_host *host = to_arasan_sdhci_host(mci);
> @@ -226,8 +266,9 @@ static int arasan_sdhci_send_cmd(struct mci_host *mci, struct mci_cmd *cmd,
> cmd, data, false, &command, &xfer);
>
> sdhci_write8(&host->sdhci, SDHCI_TIMEOUT_CONTROL, TIMEOUT_VAL);
> - if (data) {
> + if (xfer)
> sdhci_write16(&host->sdhci, SDHCI_TRANSFER_MODE, xfer);
> + if (data) {
> sdhci_write16(&host->sdhci, SDHCI_BLOCK_SIZE,
> SDHCI_DMA_BOUNDARY_512K | SDHCI_TRANSFER_BLOCK_SIZE(data->blocksize));
> sdhci_write16(&host->sdhci, SDHCI_BLOCK_COUNT, data->blocks);
> @@ -235,6 +276,10 @@ static int arasan_sdhci_send_cmd(struct mci_host *mci, struct mci_cmd *cmd,
> sdhci_write32(&host->sdhci, SDHCI_ARGUMENT, cmd->cmdarg);
> sdhci_write16(&host->sdhci, SDHCI_COMMAND, command);
>
> + /* CMD19/21 generate _only_ Buffer Read Ready interrupt */
> + if (cmd->cmdidx == MMC_SEND_TUNING_BLOCK || cmd->cmdidx == MMC_SEND_TUNING_BLOCK_HS200)
> + mask = SDHCI_INT_DATA_AVAIL;
> +
Thist hunk conflicts with b80c0e1ec6 ("mci: arasan: add dma support"):
<<<<<<< HEAD
ret = sdhci_wait_for_done(&host->sdhci, SDHCI_INT_CMD_COMPLETE);
=======
/* CMD19/21 generate _only_ Buffer Read Ready interrupt */
if (cmd->cmdidx == MMC_SEND_TUNING_BLOCK || cmd->cmdidx == MMC_SEND_TUNING_BLOCK_HS200)
mask = SDHCI_INT_DATA_AVAIL;
ret = sdhci_wait_for_done(&host->sdhci, mask);
>>>>>>> for-next/mmc-hs200
I am not sure how to resolve this just by looking at it. Please rebase
your series on that patch.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2024-03-15 12:19 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-14 18:47 [PATCH v2 00/14] mci: add HS200 support for eMMCs Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 01/14] ARM: zynqmp: add sd_dll_reset call Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 02/14] zynqmp: firmware: add functions to set tap delay Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 03/14] mci: arasan: implement 25MHz quirk for zynqmp Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 04/14] include: mci: sync mci_timing with linux Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 05/14] mci: arasan: read clk phases from DT Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 06/14] mci: core: save the set clock as actual_clock Steffen Trumtrar
2024-03-15 11:47 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 07/14] mci: arasan: register sdcard/sampleclk Steffen Trumtrar
2024-03-15 11:47 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 08/14] include: mci: add more EXT_CSD_CARD_TYPE_* Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 09/14] mci: core: parse more host capabilities from DT Steffen Trumtrar
2024-03-15 11:48 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 10/14] mci: mci-core: add HS200 support Steffen Trumtrar
2024-03-15 12:00 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 11/14] mci: mci-core: replace value with define Steffen Trumtrar
2024-03-15 11:55 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 12/14] mci: sdhci: add tuning support Steffen Trumtrar
2024-03-15 11:58 ` Ahmad Fatoum
2024-03-14 18:47 ` [PATCH v2 13/14] mci: arasan-sdhci: add HS200 tuning support on ZynqMP Steffen Trumtrar
2024-03-15 12:18 ` Sascha Hauer [this message]
2024-03-15 12:41 ` Steffen Trumtrar
2024-03-14 18:47 ` [PATCH v2 14/14] mci: sdhci: replace sdhci_wait_idle Steffen Trumtrar
2024-03-15 11:56 ` Ahmad Fatoum
2024-03-15 12:09 ` [PATCH v2 00/14] mci: add HS200 support for eMMCs Sascha Hauer
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=ZfQ8nZLimv4L5jPy@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=s.trumtrar@pengutronix.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.