linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards
@ 2022-03-21 11:50 Wolfram Sang
  2022-03-21 11:50 ` [RFC PATCH 10/10] mmc: improve API to make clear hw_reset callback " Wolfram Sang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Wolfram Sang @ 2022-03-21 11:50 UTC (permalink / raw)
  To: linux-mmc
  Cc: linux-renesas-soc, linux-kernel, Wolfram Sang, ath10k,
	bcm-kernel-feedback-list, brcm80211-dev-list.pdl, linux-amlogic,
	linux-arm-kernel, linux-mediatek, linux-rpi-kernel, linux-sunxi,
	linux-wireless, netdev, SHA-cyfmac-dev-list

As discussed in 2020 [1], Ulf and I agreed that it would be easier to
understand the {h|s}w_reset mechanisms if it was clear that they are for
cards. This RFC series implements that by adding 'card' to the function
names and changing the parameter to mmc_card where apropriate. Note that
I only changed the MMC core. The SDHCI driver still uses hw_reset in its
ops, I leave it to the SDHCI maintainers if they want to change that.
Also, I didn't convert CAP_HW_RESET to CAP_CARD_HW_RESET yet although it
should be done IMHO. However, we need an agreement on that first.
Finally, I also did not check if all the host drivers are really doing a
card reset or a controller reset. I tried but it was often not obvious
what is actually happening in these functions without proper manuals.

I tested it with my Renesas boards, so far no regressions. Buildbots are
currently checking the series. For this RFC, I sent this as one series
so people can get an overview and comment on that. For a proper release,
I think patches 1-5 should be one series, and 7-10 probably. Patch 6
could then be applied once patches 2-4 hit the net tree. That's my
proposal.

This series is based on mmc/next as of yesterday. A branch is here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/mmc/reset-api

Looking forward to comments. Happy hacking,

   Wolfram

[1] https://lore.kernel.org/all/20200916090121.2350-1-wsa+renesas@sang-engineering.com/

Wolfram Sang (10):
  mmc: core: improve API to make clear mmc_hw_reset is for cards
  ath10k: sdio: update to new MMC API for resetting cards
  brcmfmac: sdio: update to new MMC API for resetting cards
  mwifiex: sdio: update to new MMC API for resetting cards
  wlcore: sdio: update to new MMC API for resetting cards
  mmc: core: remove fallback for mmc_hw_reset()
  mmc: core: improve API to make clear that mmc_sw_reset is for cards
  mmc: core: improve API to make clear hw_reset from bus_ops is for
    cards
  mmc: core: improve API to make clear sw_reset from bus_ops is for
    cards
  mmc: improve API to make clear hw_reset callback is for cards

 drivers/mmc/core/block.c                      |  2 +-
 drivers/mmc/core/core.c                       | 31 ++++++++++---------
 drivers/mmc/core/core.h                       |  4 +--
 drivers/mmc/core/mmc.c                        | 10 +++---
 drivers/mmc/core/mmc_test.c                   |  3 +-
 drivers/mmc/core/sd.c                         |  8 ++---
 drivers/mmc/core/sdio.c                       | 12 ++++---
 drivers/mmc/host/bcm2835.c                    |  2 +-
 drivers/mmc/host/dw_mmc.c                     |  2 +-
 drivers/mmc/host/meson-mx-sdhc-mmc.c          |  2 +-
 drivers/mmc/host/mtk-sd.c                     |  2 +-
 drivers/mmc/host/sdhci.c                      |  2 +-
 drivers/mmc/host/sunxi-mmc.c                  |  2 +-
 drivers/mmc/host/uniphier-sd.c                |  2 +-
 drivers/net/wireless/ath/ath10k/sdio.c        |  2 +-
 .../broadcom/brcm80211/brcmfmac/sdio.c        |  2 +-
 drivers/net/wireless/marvell/mwifiex/sdio.c   |  2 +-
 drivers/net/wireless/ti/wlcore/sdio.c         |  2 +-
 include/linux/mmc/core.h                      |  4 +--
 include/linux/mmc/host.h                      |  2 +-
 20 files changed, 51 insertions(+), 47 deletions(-)

-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [RFC PATCH 10/10] mmc: improve API to make clear hw_reset callback is for cards
  2022-03-21 11:50 [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards Wolfram Sang
@ 2022-03-21 11:50 ` Wolfram Sang
  2022-03-22  6:43 ` [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset " Wolfram Sang
  2022-04-01 16:25 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2022-03-21 11:50 UTC (permalink / raw)
  To: linux-mmc
  Cc: linux-renesas-soc, linux-kernel, Wolfram Sang, Ulf Hansson,
	Nicolas Saenz Julienne, Florian Fainelli, Ray Jui, Scott Branden,
	bcm-kernel-feedback-list, Jaehoon Chung, Neil Armstrong,
	Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Chaotian Jing,
	Matthias Brugger, Adrian Hunter, Maxime Ripard, Chen-Yu Tsai,
	Jernej Skrabec, Kunihiko Hayashi, Masami Hiramatsu,
	linux-rpi-kernel, linux-arm-kernel, linux-amlogic,
	linux-mediatek, linux-sunxi

To make it unambiguous that the hw_reset callback is for cards and not
for controllers, we add 'card' to the callback name and convert all
users in one go. We keep the argument as mmc_host, though, because the
callback is used very early when mmc_card is not yet populated.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 drivers/mmc/core/core.c              | 4 ++--
 drivers/mmc/core/mmc.c               | 4 ++--
 drivers/mmc/host/bcm2835.c           | 2 +-
 drivers/mmc/host/dw_mmc.c            | 2 +-
 drivers/mmc/host/meson-mx-sdhc-mmc.c | 2 +-
 drivers/mmc/host/mtk-sd.c            | 2 +-
 drivers/mmc/host/sdhci.c             | 2 +-
 drivers/mmc/host/sunxi-mmc.c         | 2 +-
 drivers/mmc/host/uniphier-sd.c       | 2 +-
 include/linux/mmc/host.h             | 2 +-
 10 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 7e48570007f9..9b8455c6e0c3 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1989,9 +1989,9 @@ static void mmc_card_hw_reset_for_init(struct mmc_host *host)
 {
 	mmc_pwrseq_reset(host);
 
-	if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->hw_reset)
+	if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->card_hw_reset)
 		return;
-	host->ops->hw_reset(host);
+	host->ops->card_hw_reset(host);
 }
 
 /**
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 1857f398298b..9ea837e2c1ab 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -2225,11 +2225,11 @@ static int _mmc_card_hw_reset(struct mmc_card *card)
 	 */
 	_mmc_flush_cache(host);
 
-	if ((host->caps & MMC_CAP_HW_RESET) && host->ops->hw_reset &&
+	if ((host->caps & MMC_CAP_HW_RESET) && host->ops->card_hw_reset &&
 	     mmc_can_reset(card)) {
 		/* If the card accept RST_n signal, send it. */
 		mmc_set_clock(host, host->f_init);
-		host->ops->hw_reset(host);
+		host->ops->card_hw_reset(host);
 		/* Set initial state and call mmc_set_ios */
 		mmc_set_initial_state(host);
 	} else {
diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
index 463b707d9e99..641ab4f42125 100644
--- a/drivers/mmc/host/bcm2835.c
+++ b/drivers/mmc/host/bcm2835.c
@@ -1259,7 +1259,7 @@ static void bcm2835_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 static const struct mmc_host_ops bcm2835_ops = {
 	.request = bcm2835_request,
 	.set_ios = bcm2835_set_ios,
-	.hw_reset = bcm2835_reset,
+	.card_hw_reset = bcm2835_reset,
 };
 
 static int bcm2835_add_host(struct bcm2835_host *host)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 06dc56cbada8..581614196a84 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1812,7 +1812,7 @@ static const struct mmc_host_ops dw_mci_ops = {
 	.set_ios		= dw_mci_set_ios,
 	.get_ro			= dw_mci_get_ro,
 	.get_cd			= dw_mci_get_cd,
-	.hw_reset               = dw_mci_hw_reset,
+	.card_hw_reset          = dw_mci_hw_reset,
 	.enable_sdio_irq	= dw_mci_enable_sdio_irq,
 	.ack_sdio_irq		= dw_mci_ack_sdio_irq,
 	.execute_tuning		= dw_mci_execute_tuning,
diff --git a/drivers/mmc/host/meson-mx-sdhc-mmc.c b/drivers/mmc/host/meson-mx-sdhc-mmc.c
index 28aa78aa08f3..e92e63cb5641 100644
--- a/drivers/mmc/host/meson-mx-sdhc-mmc.c
+++ b/drivers/mmc/host/meson-mx-sdhc-mmc.c
@@ -511,7 +511,7 @@ static int meson_mx_sdhc_execute_tuning(struct mmc_host *mmc, u32 opcode)
 }
 
 static const struct mmc_host_ops meson_mx_sdhc_ops = {
-	.hw_reset			= meson_mx_sdhc_hw_reset,
+	.card_hw_reset			= meson_mx_sdhc_hw_reset,
 	.request			= meson_mx_sdhc_request,
 	.set_ios			= meson_mx_sdhc_set_ios,
 	.card_busy			= meson_mx_sdhc_card_busy,
diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
index e61b0b98065a..195dc897188b 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -2458,7 +2458,7 @@ static const struct mmc_host_ops mt_msdc_ops = {
 	.execute_tuning = msdc_execute_tuning,
 	.prepare_hs400_tuning = msdc_prepare_hs400_tuning,
 	.execute_hs400_tuning = msdc_execute_hs400_tuning,
-	.hw_reset = msdc_hw_reset,
+	.card_hw_reset = msdc_hw_reset,
 };
 
 static const struct cqhci_host_ops msdc_cmdq_ops = {
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 07c6da1f2f0f..22152029e14c 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2999,7 +2999,7 @@ static const struct mmc_host_ops sdhci_ops = {
 	.set_ios	= sdhci_set_ios,
 	.get_cd		= sdhci_get_cd,
 	.get_ro		= sdhci_get_ro,
-	.hw_reset	= sdhci_hw_reset,
+	.card_hw_reset	= sdhci_hw_reset,
 	.enable_sdio_irq = sdhci_enable_sdio_irq,
 	.ack_sdio_irq    = sdhci_ack_sdio_irq,
 	.start_signal_voltage_switch	= sdhci_start_signal_voltage_switch,
diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
index c62afd212692..0e8fbf4957d8 100644
--- a/drivers/mmc/host/sunxi-mmc.c
+++ b/drivers/mmc/host/sunxi-mmc.c
@@ -1115,7 +1115,7 @@ static const struct mmc_host_ops sunxi_mmc_ops = {
 	.get_cd		 = mmc_gpio_get_cd,
 	.enable_sdio_irq = sunxi_mmc_enable_sdio_irq,
 	.start_signal_voltage_switch = sunxi_mmc_volt_switch,
-	.hw_reset	 = sunxi_mmc_hw_reset,
+	.card_hw_reset	 = sunxi_mmc_hw_reset,
 	.card_busy	 = sunxi_mmc_card_busy,
 };
 
diff --git a/drivers/mmc/host/uniphier-sd.c b/drivers/mmc/host/uniphier-sd.c
index ccbf9885a52b..3a8defdcca77 100644
--- a/drivers/mmc/host/uniphier-sd.c
+++ b/drivers/mmc/host/uniphier-sd.c
@@ -597,7 +597,7 @@ static int uniphier_sd_probe(struct platform_device *pdev)
 			ret = PTR_ERR(priv->rst_hw);
 			goto free_host;
 		}
-		host->ops.hw_reset = uniphier_sd_hw_reset;
+		host->ops.card_hw_reset = uniphier_sd_hw_reset;
 	}
 
 	if (host->mmc->caps & MMC_CAP_UHS) {
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 7afb57cab00b..c193c50ccd78 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -181,7 +181,7 @@ struct mmc_host_ops {
 					 unsigned int max_dtr, int host_drv,
 					 int card_drv, int *drv_type);
 	/* Reset the eMMC card via RST_n */
-	void	(*hw_reset)(struct mmc_host *host);
+	void	(*card_hw_reset)(struct mmc_host *host);
 	void	(*card_event)(struct mmc_host *host);
 
 	/*
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards
  2022-03-21 11:50 [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards Wolfram Sang
  2022-03-21 11:50 ` [RFC PATCH 10/10] mmc: improve API to make clear hw_reset callback " Wolfram Sang
@ 2022-03-22  6:43 ` Wolfram Sang
  2022-04-01 16:25 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2022-03-22  6:43 UTC (permalink / raw)
  To: linux-mmc
  Cc: linux-renesas-soc, linux-kernel, ath10k,
	bcm-kernel-feedback-list, brcm80211-dev-list.pdl, linux-amlogic,
	linux-arm-kernel, linux-mediatek, linux-rpi-kernel, linux-sunxi,
	linux-wireless, netdev, SHA-cyfmac-dev-list


[-- Attachment #1.1: Type: text/plain, Size: 143 bytes --]


> I tested it with my Renesas boards, so far no regressions. Buildbots are
> currently checking the series.

Update: buildbots are happy \o/


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards
  2022-03-21 11:50 [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards Wolfram Sang
  2022-03-21 11:50 ` [RFC PATCH 10/10] mmc: improve API to make clear hw_reset callback " Wolfram Sang
  2022-03-22  6:43 ` [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset " Wolfram Sang
@ 2022-04-01 16:25 ` Wolfram Sang
  2 siblings, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2022-04-01 16:25 UTC (permalink / raw)
  To: linux-mmc
  Cc: linux-renesas-soc, linux-kernel, ath10k,
	bcm-kernel-feedback-list, brcm80211-dev-list.pdl, linux-amlogic,
	linux-arm-kernel, linux-mediatek, linux-rpi-kernel, linux-sunxi,
	linux-wireless, netdev, SHA-cyfmac-dev-list


[-- Attachment #1.1: Type: text/plain, Size: 263 bytes --]


> I tested it with my Renesas boards, so far no regressions. Buildbots are

Wishful thinking, the patches crash now when booting. Still checking
what is the difference to when I send the patches out.

Still, looking forward to comments on the general approach.


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-01 16:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-21 11:50 [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset is for cards Wolfram Sang
2022-03-21 11:50 ` [RFC PATCH 10/10] mmc: improve API to make clear hw_reset callback " Wolfram Sang
2022-03-22  6:43 ` [RFC PATCH 00/10] mmc: improve API to make clear {h|s}w_reset " Wolfram Sang
2022-04-01 16:25 ` Wolfram Sang

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).