cip-dev.lists.cip-project.org archive mirror
 help / color / mirror / Atom feed
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
To: cip-dev@lists.cip-project.org,
	Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>,
	Pavel Machek <pavel@denx.de>
Cc: Biju Das <biju.das.jz@bp.renesas.com>
Subject: [PATCH 5.10.y-cip 19/39] mmc: tmio: restore bus width when resetting
Date: Wed, 30 Mar 2022 19:54:34 +0100	[thread overview]
Message-ID: <20220330185454.10887-20-prabhakar.mahadev-lad.rj@bp.renesas.com> (raw)
In-Reply-To: <20220330185454.10887-1-prabhakar.mahadev-lad.rj@bp.renesas.com>

From: Takeshi Saito <takeshi.saito.xv@renesas.com>

commit 0a446288aa9f28ab00a31b8b51fdb005953f9f99 upstream.

Resetting the IP core will lose the bus width information and not all
code paths recover it. So, make sure the latest bus width gets restored
in the reset routine. For that, tmio_mmc_set_bus_width() is moved, but
not modified.

Signed-off-by: Takeshi Saito <takeshi.saito.xv@renesas.com>
[wsa: reworded commit message]
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/20210316085717.7276-2-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/mmc/host/tmio_mmc_core.c | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
index 0c752b4348de..ee9dc175e444 100644
--- a/drivers/mmc/host/tmio_mmc_core.c
+++ b/drivers/mmc/host/tmio_mmc_core.c
@@ -164,6 +164,21 @@ static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
 	}
 }
 
+static void tmio_mmc_set_bus_width(struct tmio_mmc_host *host,
+				   unsigned char bus_width)
+{
+	u16 reg = sd_ctrl_read16(host, CTL_SD_MEM_CARD_OPT)
+				& ~(CARD_OPT_WIDTH | CARD_OPT_WIDTH8);
+
+	/* reg now applies to MMC_BUS_WIDTH_4 */
+	if (bus_width == MMC_BUS_WIDTH_1)
+		reg |= CARD_OPT_WIDTH;
+	else if (bus_width == MMC_BUS_WIDTH_8)
+		reg |= CARD_OPT_WIDTH8;
+
+	sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, reg);
+}
+
 static void tmio_mmc_reset(struct tmio_mmc_host *host)
 {
 	/* FIXME - should we set stop clock reg here */
@@ -177,6 +192,8 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)
 	if (host->reset)
 		host->reset(host);
 
+	tmio_mmc_set_bus_width(host, host->mmc->ios.bus_width);
+
 	if (host->pdata->flags & TMIO_MMC_SDIO_IRQ) {
 		sd_ctrl_write16(host, CTL_SDIO_IRQ_MASK, host->sdio_irq_mask);
 		sd_ctrl_write16(host, CTL_TRANSACTION_CTL, 0x0001);
@@ -872,21 +889,6 @@ static void tmio_mmc_power_off(struct tmio_mmc_host *host)
 		host->set_pwr(host->pdev, 0);
 }
 
-static void tmio_mmc_set_bus_width(struct tmio_mmc_host *host,
-				   unsigned char bus_width)
-{
-	u16 reg = sd_ctrl_read16(host, CTL_SD_MEM_CARD_OPT)
-				& ~(CARD_OPT_WIDTH | CARD_OPT_WIDTH8);
-
-	/* reg now applies to MMC_BUS_WIDTH_4 */
-	if (bus_width == MMC_BUS_WIDTH_1)
-		reg |= CARD_OPT_WIDTH;
-	else if (bus_width == MMC_BUS_WIDTH_8)
-		reg |= CARD_OPT_WIDTH8;
-
-	sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, reg);
-}
-
 static unsigned int tmio_mmc_get_timeout_cycles(struct tmio_mmc_host *host)
 {
 	u16 val = sd_ctrl_read16(host, CTL_SD_MEM_CARD_OPT);
-- 
2.17.1



  parent reply	other threads:[~2022-03-30 18:55 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-30 18:54 [PATCH 5.10.y-cip 00/39] Add SD/eMMC support for Renesas RZ/G2L SoC Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 01/39] mmc: renesas_sdhi: probe into TMIO after SCC parameters have been setup Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 02/39] mmc: renesas_sdhi: populate SCC pointer at the proper place Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 03/39] mmc: renesas_sdhi: simplify reset routine a little Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 04/39] mmc: renesas_sdhi: clear TAPEN when resetting, too Lad Prabhakar
2022-03-31 10:13   ` Pavel Machek
2022-04-01 19:18     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 05/39] mmc: renesas_sdhi: merge the SCC reset functions Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 06/39] mmc: renesas_sdhi: remove superfluous SCLKEN Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 07/39] mmc: renesas_sdhi: improve HOST_MODE usage Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 08/39] mmc: renesas_sdhi: don't hardcode SDIF values Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 09/39] mmc: renesas_sdhi: sort includes Lad Prabhakar
2022-03-31 10:14   ` Pavel Machek
2022-04-01 19:19     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 10/39] mmc: tmio: set max_busy_timeout Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 11/39] mmc: tmio: add hook for custom busy_wait calculation Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 12/39] mmc: renesas_sdhi: populate hook for longer busy_wait Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 13/39] mmc: renesas_internal_dmac: add pre_req and post_req support Lad Prabhakar
2022-03-31 10:16   ` Pavel Machek
2022-04-01 19:20     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 14/39] mmc: tmio: Add data timeout error detection Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 15/39] mmc: renesas_sdhi: Add a condition of cmd/data timeout for retune Lad Prabhakar
2022-03-31 10:18   ` Pavel Machek
2022-04-01 19:27     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 16/39] mmc: tmio: support custom irq masks Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 17/39] mmc: renesas_sdhi: use custom mask for TMIO_MASK_ALL Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 18/39] mmc: tmio: abort DMA before reset Lad Prabhakar
2022-03-30 18:54 ` Lad Prabhakar [this message]
2022-03-30 18:54 ` [PATCH 5.10.y-cip 20/39] mmc: renesas_sdhi: break SCC reset into own function Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 21/39] mmc: renesas_sdhi: do hard reset if possible Lad Prabhakar
2022-03-31 10:20   ` Pavel Machek
2022-04-01 19:29     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 22/39] mmc: tmio: always flag retune when resetting and a card is present Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 23/39] mmc: tmio: always restore irq register Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 24/39] mmc: tmio: reenable card irqs after the reset callback Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 25/39] mmc: tmio: reinit card irqs in reset routine Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 26/39] clk: renesas: rzg2l: Add SDHI clk mux support Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 27/39] clk: renesas: rzg2l: Add missing kerneldoc for resets Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 28/39] clk: renesas: rzg2l: Check return value of pm_genpd_init() Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 29/39] clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 30/39] clk: renesas: r9a07g044: Add SDHI clock and reset entries Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 31/39] dt-bindings: Fix errors in 'if' schemas Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 32/39] dt-bindings: Drop redundant minItems/maxItems Lad Prabhakar
2022-03-31 10:22   ` Pavel Machek
2022-04-01 19:32     ` Prabhakar Mahadev Lad
2022-03-30 18:54 ` [PATCH 5.10.y-cip 33/39] dt-bindings: mmc: renesas,sdhi: Fix dtbs-check warning Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 34/39] dt-bindings: mmc: renesas,sdhi: Document RZ/G2L bindings Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 35/39] dt-bindings: mmc: renesas,sdhi: Add optional SDnH clock Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 36/39] dt-bindings: mmc: renesas,sdhi: Rename RZ/G2L clocks Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 37/39] arm64: dts: renesas: r9a07g044: Add SDHI nodes Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 38/39] arm64: dts: renesas: rzg2l-smarc-som: Enable eMMC on SMARC platform Lad Prabhakar
2022-03-30 18:54 ` [PATCH 5.10.y-cip 39/39] arm64: dts: renesas: rzg2l-smarc: Enable microSD " Lad Prabhakar
2022-03-31  8:58 ` [PATCH 5.10.y-cip 00/39] Add SD/eMMC support for Renesas RZ/G2L SoC Pavel Machek
2022-03-31  9:28 ` Pavel Machek
2022-03-31 11:29   ` Prabhakar Mahadev Lad
2022-03-31 12:49     ` Pavel Machek
2022-03-31 23:35       ` nobuhiro1.iwamatsu
2022-04-01 19:35   ` Prabhakar Mahadev Lad

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=20220330185454.10887-20-prabhakar.mahadev-lad.rj@bp.renesas.com \
    --to=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=cip-dev@lists.cip-project.org \
    --cc=nobuhiro1.iwamatsu@toshiba.co.jp \
    --cc=pavel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).