U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Anand Moon <linux.amoon@gmail.com>
To: u-boot@lists.u-boot-project.org
Cc: Anand Moon <linux.amoon@gmail.com>,
	Dave Klotz <DaveWK225@protonmail.com>,
	Eric Chung <eric.chung@riscstar.com>,
	Hung-Chun Tseng <alan.tseng.cs@gmail.com>,
	E Shattow <e@freeshell.de>, Yixun Lan <dlan@kernel.org>,
	Huan Zhou <pericycle.cc@gmail.com>, Peng Fan <peng.fan@nxp.com>,
	Jaehoon Chung <jh80.chung@samsung.com>,
	Tanmay Kathpalia <tanmay.kathpalia@altera.com>,
	Tom Rini <trini@konsulko.com>,
	u-boot-spacemit@groups.io
Subject: [PATCH v1 3/6] mmc: spacemit_sdhci: Handle missing pinctrl states
Date: Thu, 29 Oct 2026 19:16:52 +0530	[thread overview]
Message-ID: <20261029134705.3767-4-linux.amoon@gmail.com> (raw)
In-Reply-To: <20261029134705.3767-1-linux.amoon@gmail.com>

Check for available pinctrl states before selecting them in the
SpacemiT SDHCI driver.

Skip pinctrl selection when the device does not define a default
state, allowing eMMC configurations without pinctrl properties
to work without spurious pinctrl errors.

Select the UHS pinctrl state only when it is defined, and log
errors when pinctrl state selection fails.

Cc: Dave Klotz <DaveWK225@protonmail.com>
Cc: Eric Chung <eric.chung@riscstar.com>
Cc: Hung-Chun Tseng <alan.tseng.cs@gmail.com>
Cc: E Shattow <e@freeshell.de>
Cc: Yixun Lan <dlan@kernel.org>
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
 drivers/mmc/spacemit_sdhci.c | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/spacemit_sdhci.c b/drivers/mmc/spacemit_sdhci.c
index 836201ce83c..668555b94e1 100644
--- a/drivers/mmc/spacemit_sdhci.c
+++ b/drivers/mmc/spacemit_sdhci.c
@@ -355,10 +355,27 @@ static int spacemit_sdhci_get_b_max(struct udevice *dev, void *dst,
 	return mmc->cfg->b_max;
 }
 
+static bool spacemit_sdhci_has_pinctrl_state(struct udevice *dev,
+					     const char *state_name)
+{
+	char propname[20];
+	int state;
+
+	state = dev_read_stringlist_search(dev, "pinctrl-names",
+					   state_name);
+	if (state < 0)
+		return false;
+
+	snprintf(propname, sizeof(propname), "pinctrl-%d", state);
+
+	return !!dev_read_prop(dev, propname, NULL);
+}
+
 static void spacemit_sdhci_set_control_reg(struct sdhci_host *host)
 {
 	struct mmc *mmc = host->mmc;
 	u32 reg;
+	int ret;
 
 	spacemit_sdhci_set_voltage(host);
 
@@ -383,16 +400,26 @@ static void spacemit_sdhci_set_control_reg(struct sdhci_host *host)
 	sdhci_writel(host, reg, SPACEMIT_SDHC_TX_CFG_REG);
 
 	/* Set pinctrl state based on selected timing mode */
-	if (IS_ENABLED(CONFIG_PINCTRL)) {
+	if (IS_ENABLED(CONFIG_PINCTRL) &&
+	    spacemit_sdhci_has_pinctrl_state(mmc->dev, "default")) {
 		switch (mmc->selected_mode) {
 		case UHS_SDR12:
 		case UHS_SDR25:
 		case UHS_SDR50:
 		case UHS_SDR104:
-			pinctrl_select_state(mmc->dev, "uhs");
+			if (spacemit_sdhci_has_pinctrl_state(mmc->dev, "uhs")) {
+				ret = pinctrl_select_state(mmc->dev, "uhs");
+				if (ret)
+					log_err("SDHCI %s: uhs pinctrl selection failed: %d\n",
+						mmc->dev->name, ret);
+			}
 			break;
+
 		default:
-			pinctrl_select_state(mmc->dev, "default");
+			ret = pinctrl_select_state(mmc->dev, "default");
+			if (ret)
+				log_err("SDHCI %s: default pinctrl selection failed: %d\n",
+					mmc->dev->name, ret);
 			break;
 		}
 	}
-- 
2.56.0


  parent reply	other threads:[~2026-10-29 13:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-29 13:46 [PATCH v1 0/6] riscv: dts: spacemit: Improve K1 SPL support Anand Moon
2026-10-29 13:46 ` [PATCH v1 1/6] riscv: dts: spacemit: Clean Up K1 U-Boot Device Tree for SPL Initialization Anand Moon
2026-10-31 11:54   ` Hung-Chun Tseng
2026-10-31 11:56   ` Hung-Chun Tseng
2026-10-29 13:46 ` [PATCH v1 2/6] mmc: spacemit_sdhci: Improve voltage switching diagnostics Anand Moon
2026-10-29 13:46 ` Anand Moon [this message]
2026-10-29 13:46 ` [PATCH v1 4/6] gpio: spacemit: Add SPL support for K1 GPIO driver Anand Moon
2026-10-29 13:46 ` [PATCH v1 5/6] pinctrl: spacemit: Add SPL support for K1 pinctrl driver Anand Moon
2026-10-29 13:46 ` [PATCH v1 6/6] configs: spacemit_k1: Enable SPL GPIO and pinctrl support Anand Moon

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=20261029134705.3767-4-linux.amoon@gmail.com \
    --to=linux.amoon@gmail.com \
    --cc=DaveWK225@protonmail.com \
    --cc=alan.tseng.cs@gmail.com \
    --cc=dlan@kernel.org \
    --cc=e@freeshell.de \
    --cc=eric.chung@riscstar.com \
    --cc=jh80.chung@samsung.com \
    --cc=peng.fan@nxp.com \
    --cc=pericycle.cc@gmail.com \
    --cc=tanmay.kathpalia@altera.com \
    --cc=trini@konsulko.com \
    --cc=u-boot-spacemit@groups.io \
    --cc=u-boot@lists.u-boot-project.org \
    /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