From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98E6939B976 for ; Mon, 16 Mar 2026 14:04:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669869; cv=none; b=DTkwYsI166Xdp1uJfqpKqyCaL3tJ3LjCKqVN8KLyiBv4YfTxfRFmN+ZUQicNJ8DBzfI8i7ZmeeSA02d6bO6KaGmzO2UQvqZ5lfaqBtSxgcjf9AEFZQcSsFJL+O9GvDjJ3Jfi/JU3S93WG7yIHAjIPK77LRQYicFhB0J+zxUxn/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669869; c=relaxed/simple; bh=vmF2pgWK2VUkaN/torpDV5fO5DqEsvTqOvhELAztUNI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sXYMbGDEt0EdIgh0z0BdwQRKx++WA+L6FNHD8HhQRn3+WLCqCpMWv1ezZnyjUgJkeRuv5XozyzOgJ0fuKwTNyGdgpk20dMBJ8LxPCcm3LDU3gDt/vRsuakE24m2UnDFnAxD0dP/0J6LTabYLsifexUUPSbDlmJ5CJI5fiExRNsw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lKIgGgLB; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lKIgGgLB" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-439c5b40f60so3607590f8f.0 for ; Mon, 16 Mar 2026 07:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669865; x=1774274665; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=O74WQNc1aV3W+cT5lrJjmSbPvv2lawW0j0OjNB+99fg=; b=lKIgGgLB1PMNFm0tt7D4siVQ+lCI5xoPwrzyfbFfhFRjfeqqf2wdBI1LNu6g7riP63 lssojq286iErkTocLbjWSieYoKjKGgECUnW5M14q70yvJrX4LHcUHelVbHfae/cMIO+D G+3hu9gFNVVPzC29E5bN/HfMSIi3/BkaVPIeOnryA1PfMZsgoUZV+9WsoSETRYcXQXRe aDQs/5D6JHmZPreEfGMg6ZgrfDuXrRSGuuFcOI3UyvC9ZxeXsbKXZqcYdldK8TwJD6Oi 67V7YJv9Uk9Cg617m/XSFJu1l3RKSKZ2eufjyEjmjiqpFpX2d2AZIM1Y1GLkPICsjwWN 8HRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669865; x=1774274665; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=O74WQNc1aV3W+cT5lrJjmSbPvv2lawW0j0OjNB+99fg=; b=Tal53BbJkxtKp8R+cZcE1l9bxvFtOdT3zttBlDXr+yUyiLt7jMOeRIig88p+vP5wRo fEv8mAqz+xMtCGM/dR9WxN/Rwy+1mf5IOtyJLP4rlFF5FqhnECVHlj+t0IG0TyfquV53 whh9UGspIr0MXtfLEMwrWGcEf0Hvg+LqjYANXG1q24oCx4hbE+bjVRzMf63FodV9nT7Z 9DIj0wOIbRb08R3cj4t4jQAW/j0VsBtA7L02zQtGkWpADSDi59KVVbVGbLFLIQBrTnGk /+9B5FcILuXlINoNSkn0wLJuLdW+S3T8PTarFfNOXrXOkEPp3546TBbfGualsHPfXTHM aT3g== X-Forwarded-Encrypted: i=1; AJvYcCUODBmBwHP3Crv6OR00g2lFUTlDx3Y/laofI0g65WrPG2I52+ETnUB+Id3ezpMl7qgO5v8eIVKxUTNjdHI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/3MqlgHOyqOpK/3aQPidaMUX8JHJHR6FQzr1JkUNUOyHkNq6W bHZ9tzVMDCz4DeK4tztxPNcYqxar/sv1N7SGO+h8DmQUYd2n2iWoaj0z X-Gm-Gg: ATEYQzwJqiNwlCd3cP+o0yDG4IU0wY5qkb8rVmpyUkVU44ERsiKjXRtl8yqRctOPQlS 7CLk/1PqX4SSxbDb9x3vYKV2Jd4IYpVa888jKQosGCH0SCei4YzPH2bPHKO9hrCMn5PlQlxIPBI 3w8l1NlV0E10QtuXAy1YZaH32XC92gsgfMR/HsJiXfsEFolULlIKdkGDtHu1BqrpUpR4VgMFTgU m521Q6Ua800XhVzur1noOGFb5abFa/ijjpXrGelWyfAoeZyT16Dj7BTPXhNi3FaXv8eoP+dt0Tt xv7Ij4Rsh8bk2m/UYXOOyUUSXVMj9AU+PaUX81ZvVTZyFsKMmozrPxbUXv845hDuQadbcOu0Bv7 Zhrek3bfQ/1doVf0TgBybZ0dKiUzglIJEHDBOHpfbw/WvxNmoibtQpG9+I5FHeHsTA70KWBoKKv xl+UgBDkkEpg98JNw4pLnvqvKVxCVCCEoOAyxKrw1fEtOL55L4gGofrVBl6xuIr+he X-Received: by 2002:a05:600c:698e:b0:483:1403:c47f with SMTP id 5b1f17b1804b1-485566ca5cdmr217587185e9.6.1773669865177; Mon, 16 Mar 2026 07:04:25 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:24 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:29 +0100 Subject: [PATCH v3 1/7] mmc: sdhci-of-k1: enable essential clock infrastructure for SD operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-1-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Ensure SD card pins receive clock signals by enabling pad clock generation and overriding automatic clock gating. Required for all SD operation modes. The SDHC_GEN_PAD_CLK_ON setting in LEGACY_CTRL_REG is safe for both SD and eMMC operation as both protocols use the same physical MMC interface pins and require proper clock signal generation at the hardware level for signal integrity and timing. Additional SD-specific clock overrides (SDHC_OVRRD_CLK_OEN and SDHC_FORCE_CLK_ON) are conditionally applied only for SD-only controllers to handle removable card scenarios. Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Acked-by: Adrian Hunter Tested-by: Trevor Gamblin --- drivers/mmc/host/sdhci-of-k1.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 455656f9842df90c7a94a290aeec22157b378fc1..0dd06fc19b8574ae1b00f7e5d09= b7d4c87d06770 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -21,6 +21,13 @@ #include "sdhci.h" #include "sdhci-pltfm.h" =20 +#define SPACEMIT_SDHC_OP_EXT_REG 0x108 +#define SDHC_OVRRD_CLK_OEN BIT(11) +#define SDHC_FORCE_CLK_ON BIT(12) + +#define SPACEMIT_SDHC_LEGACY_CTRL_REG 0x10C +#define SDHC_GEN_PAD_CLK_ON BIT(6) + #define SPACEMIT_SDHC_MMC_CTRL_REG 0x114 #define SDHC_MISC_INT_EN BIT(1) #define SDHC_MISC_INT BIT(2) @@ -101,6 +108,12 @@ static void spacemit_sdhci_reset(struct sdhci_host *ho= st, u8 mask) =20 if (!(host->mmc->caps2 & MMC_CAP2_NO_MMC)) spacemit_sdhci_setbits(host, SDHC_MMC_CARD_MODE, SPACEMIT_SDHC_MMC_CTRL_= REG); + + spacemit_sdhci_setbits(host, SDHC_GEN_PAD_CLK_ON, SPACEMIT_SDHC_LEGACY_CT= RL_REG); + + if (host->mmc->caps2 & MMC_CAP2_NO_MMC) + spacemit_sdhci_setbits(host, SDHC_OVRRD_CLK_OEN | SDHC_FORCE_CLK_ON, + SPACEMIT_SDHC_OP_EXT_REG); } =20 static void spacemit_sdhci_set_uhs_signaling(struct sdhci_host *host, unsi= gned int timing) --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4E4B39B979 for ; Mon, 16 Mar 2026 14:04:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669872; cv=none; b=hr9exidxi9VxYmRBUQ3G06h94uJ+WZaCBCKekwj9o6zQUzIu9t2iv5yW7epbrefcIxZ3++m70XuOJejNIHlaqbv+bneCq+C4XyhqORyFqArhKra45qUwKBR8i/fBnShfHtuS/kUxe3hC43bc+NFG5j3mUOMBAzwk8ja0Hc2OE+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669872; c=relaxed/simple; bh=epbnSIRFEcgFtseIgir8HKOEck/DcrGNKZLBIi+3AcY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o39/q7HlCoq2f7RSdzqq3u339goVdvRTkWLijSq4ydBJdaTXUC73CDzXHOn3mH6q68TsJrwPaNt/YAgVCsnPgq23RwjtWr0UFHTxJ+ed6SeZPlextYrNV1kzR+QOW1+uYIo1XK99bNF71b8EUHTyNhNnUZAeD47ruvgdpOtvlKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eE3Eo1RC; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eE3Eo1RC" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-439b2965d4bso3208009f8f.2 for ; Mon, 16 Mar 2026 07:04:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669868; x=1774274668; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IatXzbXfYasV7clQDZ74AZFa+ggBYqSvKjib0f90qgA=; b=eE3Eo1RCYJK1C+/a3vbyx/q9uB8XQjN58P/y7fvIpo3tNUehZKpTii/jRVqKsvSiTE YMmJlU3g/aSHPaHMLOGerCpvRbJ7ynJAL4xGNpOrp4bpXNkWvjIUo0XVOHFCk51K5soO 0lFJ9ba5lU2JdU4x00y8q4mj2CdnfqzELNTkxNnPEoiNinUQI2gipwgDz2HhPLZLaQYm DyVzJfynPS48+lpH8GFt6JgqalHOOFcR/nN5ZocvS5/zXC8JogSXbG+TKTfy5WEFMLrp VY80GTA3m5Sf1a4L+v39c/lqileu08vz0QAxJ29Pv1cggqfA5TmqxdZJITrupbLPQljS nEwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669868; x=1774274668; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IatXzbXfYasV7clQDZ74AZFa+ggBYqSvKjib0f90qgA=; b=UVSSYpxO6EACz+kovcaSSUqSMaF80FhC7rJe/rcMPqPGdRVRrXAQ/SkdfxysEDGzay HWD5IXHiq+sC7ot0yIFY0p0uTfPrZWT8yTBB3WHWEi+PUlUqIkHo8OrDetG7b++QlcoR 3Ohf+EW6OCriXH/D6hWxIsmW2nqSga6/+znSlua4Cso0sj/W3nSfqdhTBoRBZ3BN5Ir7 t3/sFwb96rUIL6pU2qcF2/vc9RTSZ6vkCuLxBSZ1Sxc88H9hu7WrDwrEowAIsiZ+qxgx TXudAQSY04s/nL9Zpd8YBApjjZLiq0X5FstdL247Zf1KBgw859edoK3lvEFjK+eguQWy CSVw== X-Forwarded-Encrypted: i=1; AJvYcCVPGRiy6GRhkgHY6Wvb4lBNkeATUsJ7qcg6ggxiiORSmtCS1Ci+9XF5CwWaBCAyw/vN20mO2hworP0u+Eg=@vger.kernel.org X-Gm-Message-State: AOJu0YwC2y7PhhdlJQ5pnCLowqh/Kn2PbSBI8GDHduauTv2vpDSxWD24 TtRU/qJGYWYymyLTCjfiPj9DTS3y1jzz/hEyol/Q9cQnmw+CBgGnILxf X-Gm-Gg: ATEYQzypIpGsZpm4vrwSfNxI9Dclpf3htAXH3MWWozUtQ2/9H4uZpgZi55UW4Bx+DP3 kYHC9sOqkDWfeGbS5uCOEuvRWHNclKEY5MkuyRH61/3aHs6NJcO9+5lN7MbVEvLaTYi1vYcFd+d fhlMA5G2jbyvq2ULF6bndun6DupU3rTjBpEzFSS9muLfHEF6Ahm/pBVCM0c78PhKYQdGsMSkQWF l3qrOxy2CBm5uWGola6+mg0BCpx6mvyuBm/bQkKPVzWHklRUymShhc44wL6vY5/vdGBbTzpti0v d+InVZFf6YPXksy0LW73Fk91UMj0Ku+SGsXhGqUOBE7k/yw9QhK/0oId+Yyv7k9HtP74Hi7PJfq FbSYVZc6EhLgTZ0gb5Pg3d/E2NPNQBYOIP0ON0flAms6bNGQhuaMck74CS9pvihoX59melNYri/ x3tfN9oi10mh0OmnJBbWgG1pknUSiaIUjHWu+bs0P6DDO503xmkGm/NTcEN55jnofguMcykm3ei rY= X-Received: by 2002:a05:6000:4313:b0:43b:3e40:2223 with SMTP id ffacd0b85a97d-43b3e4024dcmr9315126f8f.19.1773669868020; Mon, 16 Mar 2026 07:04:28 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:26 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:30 +0100 Subject: [PATCH v3 2/7] mmc: sdhci-of-k1: add regulator and pinctrl voltage switching support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-2-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Add voltage switching infrastructure for UHS-I modes by integrating both regulator framework (for supply voltage control) and pinctrl state switching (for pin drive strength optimization). - Add regulator supply parsing and voltage switching callback - Add optional pinctrl state switching between "default" (3.3V) and "state_uhs" (1.8V) configurations - Enable coordinated voltage and pin configuration changes for UHS modes This provides complete voltage switching support while maintaining backward compatibility when pinctrl states are not defined. Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Tested-by: Trevor Gamblin --- drivers/mmc/host/sdhci-of-k1.c | 58 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 58 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 0dd06fc19b8574ae1b00f7e5d09b7d4c87d06770..01afdadcf70796704b272ee5a31= 543afd5e01188 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -16,6 +16,7 @@ #include #include #include +#include #include =20 #include "sdhci.h" @@ -71,6 +72,9 @@ struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; + struct pinctrl *pinctrl; + struct pinctrl_state *pinctrl_default; + struct pinctrl_state *pinctrl_uhs; }; =20 /* All helper functions will update clr/set while preserve rest bits */ @@ -219,6 +223,33 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) SPACEMIT_SDHC_PHY_CTRL_REG); } =20 +static void spacemit_sdhci_voltage_switch(struct sdhci_host *host) +{ + struct sdhci_pltfm_host *pltfm_host =3D sdhci_priv(host); + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + struct mmc_ios *ios =3D &host->mmc->ios; + int ret; + + if (!sdhst->pinctrl) + return; + + if (ios->signal_voltage !=3D MMC_SIGNAL_VOLTAGE_180) { + dev_warn(mmc_dev(host->mmc), "unsupported voltage %d\n", + ios->signal_voltage); + return; + } + + if (sdhst->pinctrl_uhs) { + ret =3D pinctrl_select_state(sdhst->pinctrl, sdhst->pinctrl_uhs); + if (ret) { + dev_warn(mmc_dev(host->mmc), + "failed to select UHS pinctrl state: %d\n", ret); + return; + } + dev_dbg(mmc_dev(host->mmc), "switched to UHS pinctrl state\n"); + } +} + static inline int spacemit_sdhci_get_clocks(struct device *dev, struct sdhci_pltfm_host *pltfm_host) { @@ -252,12 +283,37 @@ static inline int spacemit_sdhci_get_resets(struct de= vice *dev) return 0; } =20 +static inline void spacemit_sdhci_get_pins(struct device *dev, + struct sdhci_pltfm_host *pltfm_host) +{ + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + + sdhst->pinctrl =3D devm_pinctrl_get(dev); + if (IS_ERR(sdhst->pinctrl)) { + sdhst->pinctrl =3D NULL; + dev_dbg(dev, "pinctrl not available, voltage switching will work without= it\n"); + return; + } + + sdhst->pinctrl_default =3D pinctrl_lookup_state(sdhst->pinctrl, "default"= ); + if (IS_ERR(sdhst->pinctrl_default)) + sdhst->pinctrl_default =3D NULL; + + sdhst->pinctrl_uhs =3D pinctrl_lookup_state(sdhst->pinctrl, "state_uhs"); + if (IS_ERR(sdhst->pinctrl_uhs)) + sdhst->pinctrl_uhs =3D NULL; + + dev_dbg(dev, "pinctrl setup: default=3D%p, uhs=3D%p\n", + sdhst->pinctrl_default, sdhst->pinctrl_uhs); +} + static const struct sdhci_ops spacemit_sdhci_ops =3D { .get_max_clock =3D spacemit_sdhci_clk_get_max_clock, .reset =3D spacemit_sdhci_reset, .set_bus_width =3D sdhci_set_bus_width, .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, + .voltage_switch =3D spacemit_sdhci_voltage_switch, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { @@ -324,6 +380,8 @@ static int spacemit_sdhci_probe(struct platform_device = *pdev) =20 host->mmc->caps |=3D MMC_CAP_NEED_RSP_BUSY; =20 + spacemit_sdhci_get_pins(dev, pltfm_host); + ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); if (ret) goto err_pltfm; --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D9E139B4A2 for ; Mon, 16 Mar 2026 14:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669874; cv=none; b=OMOfhuqEGEh0uWAd88Dgk6Xswrh1kor6/APfjJ50krvFNdmlwzCODyT2fFg9I3/gIpm5zVNqe3D1AFaaJkDZl49+wyw12kkgHPS6a3Dss7RzNU0TX870CdeUPXSeR6t/1iZEW3NlVYqCpSZYGaXkYo4memSnJrufO+GwiHIg7VE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669874; c=relaxed/simple; bh=EIbrLuhe1ooGthxEgQtJO7e+J6yAKFsxYGpGpHEbBow=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F5CphJE8G0HvTDTbnb0voh/q6aA/5SZHbzfDEx8NPIPFTS2QmHtsrnEnFzQHeU6bdLaPqvMWJt6BjGLa6KpvGoDRkngIR+37jVDwKRBNKBSt+mc1oENPzQ4JSvvY4jh1Xu2/PfW1HVHm8BZbCm+MT021C21F2lSvU8ftCAAFQSQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GaDgUCxy; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GaDgUCxy" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-439b9b1900bso2995661f8f.1 for ; Mon, 16 Mar 2026 07:04:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669871; x=1774274671; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9V4OY+Uejyw2avNrbAtAaf1qtY8TrzCMiBRo5m6knWA=; b=GaDgUCxydsqiBf5Cey9KAqo2GzIm1m6RH7HMMhpQ5/RHFqzKD9WjRWJuRh58VZC0rB ZBz6ZzQYrsJsB48mFdlOxe59Igj3iTG4yd9KuzuYXMERRT80AJEz/OxjbdCo7xeGxGXB mNO5Qhx1naafHWa12EJ3qrVKntnduUs0RO5nL+5qRUliGw6GBV77UDUCeyFRtCALKcsk SAzHDReBR24ABHWQ5OlsxK/kAuyoNtUAjGAYfaRfi14JFGerwgWO07S5NU2Gtj6dt4nz Y7rALaOEU67FkK0HelhYS8R2MggyuwRSJnDHRODfwCXCOyGrGkibTmcGzcbBZe6fYKIw Yjgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669871; x=1774274671; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9V4OY+Uejyw2avNrbAtAaf1qtY8TrzCMiBRo5m6knWA=; b=W767XxxsplhKLvSaXj6cqBPx+QbMlKNgpdXho1Yd8aqIqubWAb7jhBq8Y8z/agg3lX jIcwqOeOP8gV8wkhWc7Jh4YfvBjQWPqCrN22FqQx82IyGEMqp278j8Aqpq8h+EBdh5Mz ivNnYbLqMlhmuxvtYan3vZJuu/0PoNJdgdZzyT2NlkGMy/YdjnBCyq56OJBpB5qbMFcF Ip3g4K6hLY3xJQELBOfXtBXfWxLO4tXb1Q1L4yvA4D0UfctSRP/lqUA3C7R2ZqeRysnV dosLDn/PQi1ihTVxot6HZcv8nEjIbHjmEFD5ejciK2lwBY+7a5PV4lukHQy7ShZbh1Mn zOyw== X-Forwarded-Encrypted: i=1; AJvYcCWxA8yr86LBe5cAXsOCZvSbcL/97Vqyi+YeN2CL4t2Ef7ypIZulcENtbAh9A2/urcpmVZvRKYwPXNL/aao=@vger.kernel.org X-Gm-Message-State: AOJu0YxCKRjmYfAXuzQAMo0wVHU4/RVeL9MxsWzuuJI9dRn4VYiVewMI I7T4kUwqp2eScf6uYKVlsqsDKuNPctXF/jWJTElTe2oz2SX2AkIClb9A X-Gm-Gg: ATEYQzxgagRGYoWyS6smLjmpBoH7vooQ+V1avSTeyUgCBU5iuGUl9ruEgipJZThNZBG dnCjYnGAggol7Qe5sywxj1qQdfK8UzxCjDsyCCo4clM6N4yyUTruP+tIAyzctfru/IHL4sapPWr 6507RK8ejfVn3y1ocR/SZe/YnatpetV/G2PGMUvaSss93EsBHfJHNvwKLQOFSu+ng+0tIbhB5x4 bAC/UgIIyFEeSnc2TSQkb8CmP1oV4AoqmMoUuv52Jq/g3DTs/MbrL7/HQ65lxNHEV/VmhtzEydc 1NBmdXc/ONG1e0X621U1dwMYDUspb9kbWTCyeuhVZHYlBtHTpnDlf1JpJTnCqecZaAtcCNBlocF mLp9WbaRdPT9AHiKQsXushm9dJJfgu40o52NNjeBxbvOSuySnj4VwVLAjB//+Nu/4lXmF+VP47x Z3+gqG8K6JFGGgssnK4F1MHwdEJrX80M59ak3ZIsc334E2+L8AqG+CWczJniwiNtTr X-Received: by 2002:a05:6000:4012:b0:43b:44e1:f661 with SMTP id ffacd0b85a97d-43b44e1f791mr5650973f8f.36.1773669870494; Mon, 16 Mar 2026 07:04:30 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:29 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:31 +0100 Subject: [PATCH v3 3/7] mmc: sdhci-of-k1: add comprehensive SDR tuning support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-3-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Implement software tuning algorithm to enable UHS-I SDR modes for SD card operation and HS200 mode for eMMC. This adds both TX and RX delay line tuning based on the SpacemiT K1 controller capabilities. Algorithm features: - Add tuning register definitions (RX_CFG, DLINE_CTRL, DLINE_CFG) - Conditional tuning: only for high-speed modes (=E2=89=A5100MHz) - TX tuning: configure transmit delay line with optimal values (dline_reg=3D0, delaycode=3D127) to ensure optimal signal output timing - RX tuning: single-pass window detection algorithm testing full delay range (0-255) to find optimal receive timing window - Retry mechanism: multiple fallback delays within optimal window for improved reliability Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Acked-by: Adrian Hunter Tested-by: Trevor Gamblin --- drivers/mmc/host/sdhci-of-k1.c | 172 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 172 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 01afdadcf70796704b272ee5a31543afd5e01188..83d7f9fad5c1fba2f07624ee657= cd979a1c7e25d 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -69,6 +69,28 @@ #define SDHC_PHY_DRIVE_SEL GENMASK(2, 0) #define SDHC_RX_BIAS_CTRL BIT(5) =20 +#define SPACEMIT_SDHC_RX_CFG_REG 0x118 +#define SDHC_RX_SDCLK_SEL0_MASK GENMASK(1, 0) +#define SDHC_RX_SDCLK_SEL1_MASK GENMASK(3, 2) +#define SDHC_RX_SDCLK_SEL1 FIELD_PREP(SDHC_RX_SDCLK_SEL1_MASK= , 1) + +#define SPACEMIT_SDHC_DLINE_CTRL_REG 0x130 +#define SDHC_DLINE_PU BIT(0) +#define SDHC_RX_DLINE_CODE_MASK GENMASK(23, 16) +#define SDHC_TX_DLINE_CODE_MASK GENMASK(31, 24) + +#define SPACEMIT_SDHC_DLINE_CFG_REG 0x134 +#define SDHC_RX_DLINE_REG_MASK GENMASK(7, 0) +#define SDHC_RX_DLINE_GAIN BIT(8) +#define SDHC_TX_DLINE_REG_MASK GENMASK(23, 16) + +#define SPACEMIT_RX_DLINE_REG 9 +#define SPACEMIT_RX_TUNE_DELAY_MIN 0x0 +#define SPACEMIT_RX_TUNE_DELAY_MAX 0xFF + +#define SPACEMIT_TX_TUNING_DLINE_REG 0x00 +#define SPACEMIT_TX_TUNING_DELAYCODE 127 + struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; @@ -96,6 +118,50 @@ static inline void spacemit_sdhci_clrsetbits(struct sdh= ci_host *host, u32 clr, u sdhci_writel(host, val, reg); } =20 +static void spacemit_sdhci_set_rx_delay(struct sdhci_host *host, u8 delay) +{ + spacemit_sdhci_clrsetbits(host, SDHC_RX_DLINE_CODE_MASK, + FIELD_PREP(SDHC_RX_DLINE_CODE_MASK, delay), + SPACEMIT_SDHC_DLINE_CTRL_REG); +} + +static void spacemit_sdhci_set_tx_delay(struct sdhci_host *host, u8 delay) +{ + spacemit_sdhci_clrsetbits(host, SDHC_TX_DLINE_CODE_MASK, + FIELD_PREP(SDHC_TX_DLINE_CODE_MASK, delay), + SPACEMIT_SDHC_DLINE_CTRL_REG); +} + +static void spacemit_sdhci_set_tx_dline_reg(struct sdhci_host *host, u8 dl= ine_reg) +{ + spacemit_sdhci_clrsetbits(host, SDHC_TX_DLINE_REG_MASK, + FIELD_PREP(SDHC_TX_DLINE_REG_MASK, dline_reg), + SPACEMIT_SDHC_DLINE_CFG_REG); +} + +static void spacemit_sdhci_tx_tuning_prepare(struct sdhci_host *host) +{ + spacemit_sdhci_setbits(host, SDHC_TX_MUX_SEL, SPACEMIT_SDHC_TX_CFG_REG); + spacemit_sdhci_setbits(host, SDHC_DLINE_PU, SPACEMIT_SDHC_DLINE_CTRL_REG); + udelay(5); +} + +static void spacemit_sdhci_prepare_tuning(struct sdhci_host *host) +{ + spacemit_sdhci_clrsetbits(host, SDHC_RX_DLINE_REG_MASK, + FIELD_PREP(SDHC_RX_DLINE_REG_MASK, SPACEMIT_RX_DLINE_REG), + SPACEMIT_SDHC_DLINE_CFG_REG); + + spacemit_sdhci_setbits(host, SDHC_DLINE_PU, SPACEMIT_SDHC_DLINE_CTRL_REG); + udelay(5); + + spacemit_sdhci_clrsetbits(host, SDHC_RX_SDCLK_SEL1_MASK, SDHC_RX_SDCLK_SE= L1, + SPACEMIT_SDHC_RX_CFG_REG); + + if (host->mmc->ios.timing =3D=3D MMC_TIMING_MMC_HS200) + spacemit_sdhci_setbits(host, SDHC_HS200_USE_RFIFO, SPACEMIT_SDHC_PHY_FUN= C_REG); +} + static void spacemit_sdhci_reset(struct sdhci_host *host, u8 mask) { sdhci_reset(host, mask); @@ -191,6 +257,111 @@ static unsigned int spacemit_sdhci_clk_get_max_clock(= struct sdhci_host *host) return clk_get_rate(pltfm_host->clk); } =20 +static int spacemit_sdhci_execute_tuning(struct sdhci_host *host, u32 opco= de) +{ + int current_len =3D 0, current_start =3D 0; + int max_pass_len =3D 0, max_pass_start =3D 0; + struct mmc_host *mmc =3D host->mmc; + struct mmc_ios ios =3D mmc->ios; + u8 final_delay; + int ret =3D 0; + int i; + + /* + * Tuning is required for SDR50/SDR104, HS200/HS400 cards and + * if clock frequency is greater than 100MHz in these modes. + */ + if (host->clock < 100 * 1000 * 1000 || + !(ios.timing =3D=3D MMC_TIMING_MMC_HS200 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR50 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR104)) + return 0; + + if (mmc->caps2 & MMC_CAP2_NO_MMC) { + spacemit_sdhci_set_tx_dline_reg(host, SPACEMIT_TX_TUNING_DLINE_REG); + spacemit_sdhci_set_tx_delay(host, SPACEMIT_TX_TUNING_DELAYCODE); + spacemit_sdhci_tx_tuning_prepare(host); + + dev_dbg(mmc_dev(host->mmc), "TX tuning: dline_reg=3D%d, delaycode=3D%d\n= ", + SPACEMIT_TX_TUNING_DLINE_REG, SPACEMIT_TX_TUNING_DELAYCODE); + } + + spacemit_sdhci_prepare_tuning(host); + + for (i =3D SPACEMIT_RX_TUNE_DELAY_MIN; i <=3D SPACEMIT_RX_TUNE_DELAY_MAX;= i++) { + spacemit_sdhci_set_rx_delay(host, i); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + + dev_dbg(mmc_dev(host->mmc), "RX delay %d: %s\n", + i, ret =3D=3D 0 ? "pass" : "fail"); + + if (ret =3D=3D 0) { + /* Test passed - extend current window */ + if (current_len =3D=3D 0) + current_start =3D i; + current_len++; + } else { + /* Test failed - check if current window is best so far */ + if (current_len > max_pass_len) { + max_pass_len =3D current_len; + max_pass_start =3D current_start; + } + current_len =3D 0; + } + } + + if (current_len > max_pass_len) { + max_pass_len =3D current_len; + max_pass_start =3D current_start; + } + + if (max_pass_len < 3) { + dev_err(mmc_dev(host->mmc), "Tuning failed: no stable window found\n"); + return -EIO; + } + + final_delay =3D max_pass_start + max_pass_len / 2; + spacemit_sdhci_set_rx_delay(host, final_delay); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (ret) { + u8 retry_delays[] =3D { + max_pass_start + max_pass_len / 4, + max_pass_start + (3 * max_pass_len) / 4, + max_pass_start, + max_pass_start + max_pass_len - 1 + }; + int retry_count =3D ARRAY_SIZE(retry_delays); + + dev_warn(mmc_dev(mmc), "Primary delay %d failed, trying alternatives\n", + final_delay); + + for (i =3D 0; i < retry_count; i++) { + if (retry_delays[i] >=3D SPACEMIT_RX_TUNE_DELAY_MIN && + retry_delays[i] <=3D SPACEMIT_RX_TUNE_DELAY_MAX) { + spacemit_sdhci_set_rx_delay(host, retry_delays[i]); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (!ret) { + final_delay =3D retry_delays[i]; + dev_info(mmc_dev(mmc), "Retry successful with delay %d\n", + final_delay); + break; + } + } + } + + if (ret) { + dev_err(mmc_dev(mmc), "All retry attempts failed\n"); + return -EIO; + } + } + + dev_dbg(mmc_dev(host->mmc), + "Tuning successful: window %d-%d, using delay %d\n", + max_pass_start, max_pass_start + max_pass_len - 1, final_delay); + + return 0; +} + static int spacemit_sdhci_pre_select_hs400(struct mmc_host *mmc) { struct sdhci_host *host =3D mmc_priv(mmc); @@ -314,6 +485,7 @@ static const struct sdhci_ops spacemit_sdhci_ops =3D { .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, .voltage_switch =3D spacemit_sdhci_voltage_switch, + .platform_execute_tuning =3D spacemit_sdhci_execute_tuning, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A4FE39B49E for ; Mon, 16 Mar 2026 14:04:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669877; cv=none; b=kNDi+I++KgGaI4xE914I+NT5RQNT/T2eQmZrOc8DVwP5HJbgcrQx8dX9QtpOBQZoyT1GgZcywT3SgKj84SE6kD30nKVvAEM7tb9EL3UVj0c5TRF8NKeBGFzLUEymqwC05dZFpdbmDtZol9HvqrjhQngy7lsvog084PtV21O+x7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669877; c=relaxed/simple; bh=VV6Uc/fQnB1CO6vc4YbToyuLpo7rYuo3u8QPLHi0LME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=onF1USUSvTg++VbeMIUMl1CEkjzQjfxMp1c720eAc3DZzxfHkfl7Qmk0wKc26YaRGsNmlz6RL56kVV7TdRKBbqgeQTsoyCqx9CRgTKVgVWYCC5Uo4mV2tirbpmStqqznQkTdykXL5CoVR6sVN+2Y6Yef7u1y9xtMNo8C+AyllPg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hFl0H1UO; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hFl0H1UO" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-43a03cb1df9so4553296f8f.1 for ; Mon, 16 Mar 2026 07:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669874; x=1774274674; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rCiQ7r9hHEhSUVh9d7R+U0a5N1ipko9lEeJud3TU6bk=; b=hFl0H1UO70v5rzFIl+vpmFU9pGZKT1tze3YuJFp9rNy0KLahvcBlvPs93fIjZFVaCc Y9tC8eql64NClqQckpzvL+de+cw6tubNlMffBLGxs7IOzs56KGhtAX/hDLecsyw8wz57 XiDborgL+JopxGogyrsQ7KeKeXJ41jYHuikUXpZmdpa5Saeg4TZp5xMIpcevZWEe4b4g ldzDorvI/UQopK1ugIhbgE+QsZIewvrZCBRazB2POSAkUHAnL/2aAbZLa/EdZah3UlyB RHyqhcuWiuHST8WIdAe59gK39CmRzFoo2Ygpr13O8ZvsAWWV400bSwl7JcrVp7rIZ/Z3 MaHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669874; x=1774274674; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rCiQ7r9hHEhSUVh9d7R+U0a5N1ipko9lEeJud3TU6bk=; b=npLboDEOdmkMHaZL9Rmb9aP021TXgQs6gd/+xTChpHje+Q9wYRAudpRkLmJgAYjziS Ia755GI1MN4hd5u+t5HKlySBlxISMv0wvQbZjimnHBH5s8wnI/rghpQ1+XdHAurYBhgH KlcHxC231TCEUMd9epjaO70GnnkxHF+6vG/BWtbRhdOLeOvnz5wEx1egb1zfwA/Z99zC Hz0V95iFyRNYqCpas2E+jAP3AiHgj3GpR7EF0nPoGtmAbuQiL0omW4l9/ve4xyeY7OFC kx8C8v5US4je9/X+xZ56Xp1xEvTUlv3wAjX8cg9WaTd9YUYyh+I7TMAriEHETe6HyfXn PuDg== X-Forwarded-Encrypted: i=1; AJvYcCUXZToLX7oWiOJZCCi7afQ2282XpxbO72iNIU7PyOHjoJwRRXoaEqpUx0KSv16W8gzUOtadT6MDOQUj+Wk=@vger.kernel.org X-Gm-Message-State: AOJu0YwUcUn0ZI+U05sfGqmtGB1JryUkjpNlrFtO4zKojuoRYxzroOJP 0E48QpWD3M+mdZCddf/5bl9LBxFvGd4ykeSaFdvXEILlqQdJiJeas91m X-Gm-Gg: ATEYQzxFPKGHRckq/k7yfPwFFo9VS6J6CGXiFrb5SrfOsULCArmO4/Wwb8ydljakqa3 DNqI11m4boDI5ntC6WqqtKVb0rm8LylDMWmZMI+ehLrPa7awy9/ZPKK6NHIY3Jx4+LwvSZ2B4vd Egk4mJESGvyg+4LnBe/yYGoEqIjntgVDVuUhgmawi4x46ZT8TftxokzxLmPx3FgWOoufhGScofc lHMI+8HBAOLdiwgnj50d2S8fltPdLvK4/e5PeeK7I6c5rvfm81Eb+35AA5AhecJE+MUq3rOIFfu 7z/J2T0g4GXg9oOpGNWrHpOoOtQP3uPpv4aMzRJb0Wdum+L2h522PH8OfmETx6dycUaVDQmJwdd POv0889I72Y3nG+p8DBxQpUGK5/eu0ZaR57f80AsWLUUSTWzka/Ieme6wwFUmItKYKcE7KT3FQL RxX3dJannNt0FkhWZ0tRblZg2z8Hlq3E+e1SZkFf1NoGUmFpxlj5R/sQxHImfpbuGe X-Received: by 2002:a05:6000:4012:b0:43b:433f:48a9 with SMTP id ffacd0b85a97d-43b433f4a42mr8024247f8f.15.1773669873688; Mon, 16 Mar 2026 07:04:33 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:32 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:32 +0100 Subject: [PATCH v3 4/7] riscv: dts: spacemit: k1: add SD card controller and pinctrl support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-4-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Add SD card controller infrastructure for SpacemiT K1 SoC with complete pinctrl support for both standard and UHS modes. - Add sdhci0 controller definition with clocks, resets and interrupts - Add mmc1_cfg pinctrl for 3.3V standard SD operation - Add mmc1_uhs_cfg pinctrl for 1.8V UHS high-speed operation - Configure appropriate drive strength and power-source properties This provides complete SD card infrastructure that K1-based boards can enable. Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Tested-by: Trevor Gamblin --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++++++++++++++++++++++= ++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++ 2 files changed, 53 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot= /dts/spacemit/k1-pinctrl.dtsi index b13dcb10f4d66022d27307de73a6ea3287e97441..8d82011f1af666fb78c282a2abc= c0cb88f962053 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -570,4 +570,44 @@ pwm14-1-pins { drive-strength =3D <32>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index d2015201f8e5adff8bda75712036b8dc2b79bcb5..3952c4d0ecfb26e9d215955ca87= 91243bbd1dab7 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -1211,6 +1211,19 @@ emmc: mmc@d4281000 { interrupts =3D <101>; status =3D "disabled"; }; + + sdhci0: mmc@d4280000 { + compatible =3D "spacemit,k1-sdhci"; + reg =3D <0x0 0xd4280000 0x0 0x200>; + clocks =3D <&syscon_apmu CLK_SDH_AXI>, + <&syscon_apmu CLK_SDH0>; + clock-names =3D "core", "io"; + resets =3D <&syscon_apmu RESET_SDH_AXI>, + <&syscon_apmu RESET_SDH0>; + reset-names =3D "axi", "sdh"; + interrupts =3D <99>; + status =3D "disabled"; + }; }; }; }; --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABECE39B979 for ; Mon, 16 Mar 2026 14:04:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669881; cv=none; b=GCpBv/2vGzIkpHjrWjPNPJ+3m8fbWew2GXu/D6THydntT48jPwQS4d/wUl45OawVZYu8f0QG0wUXgqJV/T0OSBt6OoB8RMlPn4ASz6jODYL08HXY2zsWrNiKagKjHjhl/xDLsDA3pQLJCHGUUU1yoAks4CEYXdJGcy4Y2nIrKeM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669881; c=relaxed/simple; bh=TMuC+r//YMxau2/SdiPrZPIigFg5514fOWLlzC/iIWo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KWYDdCuL5ROeMZoQ5pFu1SfIO7A3SktLOQbNOYOMK+2ej9fOqg+DcRXUeFKniAf69/0DQPNo6u2TM41ccSzVlOTE2bXz6n8MoSxgaiqWfWIzT6emwVzTewY/Sj//J4IvHaFg4B07q2fvWS86pfvZeP8k+cw2DpqhCjD96PDTElw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kzp0BIFN; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kzp0BIFN" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-43a03cb1df9so4553335f8f.1 for ; Mon, 16 Mar 2026 07:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669876; x=1774274676; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bzdLQZF+g4qVulg9JsUgV+5Hi9wiigjRN7QwVdQTPwc=; b=kzp0BIFNW+Sa/Gg0mi0HWEjvXDz6jcddOa0znTSZrp1qM0adeY2OE84Zd+EiDy9V3n 8Lt7SGiMFTWwSZPvExojX8G7bC9LwwShEFtBOKC8N4rezn/kzrPLT6vUBbwOuiJuksT6 OfheNZ7uBd8lvYOGTGKjYm3iHYJFEDI8jqGzVnP7V4nElkrdaqu3DtvnwcYFzM12Z1c1 UPjdlGys+bQVpwcPtcPQt7fCIJCMUhzje5Yle5FJcORThhyCZAaWcjh28Dq/B0da5eLh IqeRAq6HKEeX45PCuCnQfWD2dTlMJ1d53AAa2F2K3XcajkZBqLsVt4FPS+OFbbt4Uc8g S/jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669876; x=1774274676; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bzdLQZF+g4qVulg9JsUgV+5Hi9wiigjRN7QwVdQTPwc=; b=rkQhvZ9aHbVokjPO5s/v+AtuB/cSjfV5nllUfUZG3l9SAH0n3GvHwp5BM2L9fmsgQ+ SN3SFHObmwVZ61dFZVy+RydmJ+FIg6HTZvoEm7GgzkKFFZd1P0QwESYwe4xnEd0Ty1do XvDab+6o6/kXvK+WVBMkA2bFz6ksRJJkXJ8y2rATSUDRyThJ8ePZDVmL9lQrx6UOoeuU 1AeZt9KCY6XxNI49EmBJ9N3R80pOFym8a5/cW0+DysLSCnzVfZx0wd+K9kHAfXQ4YHub Zi323XYPAxK64tc2lyHcAlsLUHXY9xbfzt3DI8JH7CIbdHvfNEcHbTES7MkFgsbKD8OK VkTQ== X-Forwarded-Encrypted: i=1; AJvYcCVD5xICYtu3oXZV63BS8F4PC4McF8tZhOK6kv2plLQjweV4CisQGiXCGdZNg+LHbQaWXFhoPhWRp1aeKOo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzg01ssnCbdzhTpA0+JndZFLyxe3KNMQv2RgKN2joLcuuPYvlSR dNtlUMwxfcPspbHUOip7ms4SfGozIPFKFhqGMkBxy031s2cwd6qGVsFl X-Gm-Gg: ATEYQzyTEqtWPKnXD/oy4ae6n+nNqV8eh4XfShdRLHxzbtrpLGEatzO6tSo1++ILixb EG8FEWiXuGvVC594wrQjjmCkA+I8YS1u1jEAPjPcgYzSFW16k7GiQ+U08cUtlPi1WR1cTzJxbOq OxHeeOfzFVCLh5Ka/nBN9+0qC0KML2W9+3higapFRauBEsNKYxUr3UsJkvRiaJCJ6qO6+7M3qLQ cB8uchytD60aALb183ruyd/1jTpph+sr0MHNz9EWA+AXy8FtcYE0RD+bNWWMATzCyvbQyzpJvlN TM5i4ygeE/D2jWCFIIfg3R6HqhZFnfIkHDSebXGPiZJT1iy+VcRCw3ykcQJYR96eseuzBtHiHno lTcI1UV+CrPNpcFE7vakQqGr46HBokbm4mZJJv6BYA1Fq8CuNueaOjZoUxk2+phuTCyO2qbyutD kZ+3rM/KfRaNM/hCxVXO+GDc7CWR0KJ8hekymqN8662uqRAoyw6g45XZZsRofdl3Quc0+Pg0WSb dU= X-Received: by 2002:a05:6000:250c:b0:439:cbcb:5723 with SMTP id ffacd0b85a97d-43a04dc083emr24515986f8f.42.1773669875968; Mon, 16 Mar 2026 07:04:35 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:35 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:33 +0100 Subject: [PATCH v3 5/7] riscv: dts: spacemit: k1-orangepi-rv2: add PMIC and power infrastructure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-5-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Add Spacemit P1 PMIC configuration and board power infrastructure for voltage regulation support. - Add board power regulators (12V input, 4V rail) - Enable I2C8 for PMIC communication - Configure PMIC with buck4 (vmmc) and aldo1 (vqmmc) regulators - Set up regulator constraints for SD card operation Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Tested-by: Trevor Gamblin --- arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 48 ++++++++++++++++++++= ++++ 1 file changed, 48 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/= boot/dts/spacemit/k1-orangepi-rv2.dts index 7b7331cb3c726f11d597f81917f3a3f5fc21e1b9..f1533c99881dbf38e16cff5e91e= 33253cfa7a56d 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -19,6 +19,25 @@ aliases { ethernet1 =3D ð1; }; =20 + reg_dc_in: dc-in-12v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_12v"; + regulator-min-microvolt =3D <12000000>; + regulator-max-microvolt =3D <12000000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_vcc_4v: vcc-4v { + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc_4v"; + regulator-min-microvolt =3D <4000000>; + regulator-max-microvolt =3D <4000000>; + regulator-boot-on; + regulator-always-on; + vin-supply =3D <®_dc_in>; + }; + chosen { stdout-path =3D "serial0"; }; @@ -92,3 +111,32 @@ &uart0 { pinctrl-0 =3D <&uart0_2_cfg>; status =3D "okay"; }; + +&i2c8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&i2c8_cfg>; + status =3D "okay"; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + vin-supply =3D <®_vcc_4v>; + + regulators { + buck4: buck4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3300000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + aldo1: aldo1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 75586324B20 for ; Mon, 16 Mar 2026 14:04:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669881; cv=none; b=R7VcXbUynWcBu9ZElVhCyEGi9Ol+6uHi3LK0c50dN0TJDPHTByMDANqXEDk8PGnM07SKMk/SwUV/fFkx4CwYmsvTa2CsKCspfkgoamckNKwIn7LtsUc0ywHXBtXciPHoME73p0ap1hpI+k9Uc2zpED88viEGPVdG0mBPwJrmeJc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669881; c=relaxed/simple; bh=h2D5WHgrxz43uhMtLfKxOR0sKrVvSVtSEpqCmED+0J8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pHzrl3UbZRCzUbNjZAZAkgNIHL3BYGncrrVfflIV9MRjKu8v/XOODQmMMC+ZNzAeU8n4xG0BkDJTn+8SW8rlO8uwoQlv+dkyxDsm/Dq7AhWBtLeof2FzeBk3kjVVUsUofhdVrkkAvLTh3FB9zRAQOm7ixOcWE9+9SHmUwirYjxs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mtJ4HdJ8; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mtJ4HdJ8" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-48541edecf9so50488505e9.1 for ; Mon, 16 Mar 2026 07:04:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669879; x=1774274679; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=H7U0Z6Pq5BNBGUpIipaToeDztdOq53P+XHlRkPRfqt4=; b=mtJ4HdJ8QgssEsTbDBqiXgNQLdtNx4vkkURRul7rNcjEGBVTCTQr5hlNt7SjVa/IWJ T/XhkmMFUYDVlsWPa92+SMhFlF/THR/qqfzH6asCOYk4staQcNX64sJYa+m0m4Iq2LqA PnZxV0pslDEOyy91jhlL5CC9WfAEh9FDSrqbTB6PNI3Z+uu0QA1OwJd8z6lhL4WmhCPQ fN2vvhWIB0q1tS7ntep46grP1trnYHKEJOH1ezarmqX9J0+sOXZ0Aq1JiXrd8519L6w8 3uxpKSPauxUheJWfRWTS9vc4mqtyKOp/cYJVEDAr2GbYwln9IW1WNIL5lJ/4OWbpQdk5 BLNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669879; x=1774274679; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=H7U0Z6Pq5BNBGUpIipaToeDztdOq53P+XHlRkPRfqt4=; b=sRBRRmjmu+9/1mxg2G8beDnxV6HQbK44riFsL3XdsLCF9i3LauGNJrozwKYhrb/UYN weTqb+O4HMiwOHB/bkzVWX+4eTUSKzIg3XtTEEjIOnM1VTX+obUUVIgs/9kiUQpvcOxA C0OvfRwNi6RieBhEsdPqSfSiKMcQ7Kh221F810i7RUa6dcyrVQIxlUcywpCcR/OuPhqJ OVO+P3QyffDwcosdoP4YZO/BLEQaDQyhmu0hJ7uGyCUe/25J07cWy7K6qXFwvdsflQJP ttgnjt7Obodjq0klrYSykjY7hv+8eEywmXECEb7p9cnB+944+zyYutB3QAz4dS2Tm5GN Me4A== X-Forwarded-Encrypted: i=1; AJvYcCWjccD7jYidfMaoRH1+HH6ZeRDo88BRCDHUMuqD674UM9NBsOmgUbp6yBqgow08mGqcPiIGeNWOXkyLMYE=@vger.kernel.org X-Gm-Message-State: AOJu0Yyg7x7RCGjFtLMwlNzgK3zJGlOMe2dTbyBXfuld1dh5DOMthGIf OpqdM1jVH2WXH4hRjPLganOYI4rGxUfXSpl93wOJN6mg+LpyqKKXJF8m X-Gm-Gg: ATEYQzx3dRZDGlvY7NXk4xSweiwf9Wo9vzO6yVbH7SU9nWpTbyH5mdGWlW8lgKufaRg 7QdcwfsUCbEHR8c/5+0gsk/49++5Tu85Xsl7m8UXzjQm5eByOwROhdgWxbfVu1EGnsRCfWux3gN NZDbWWC15nNnlV6ycCCZRz0nga5iyoKMXgGJfBMu0yvYwu9Fnvj72qHXVzJdl0lwTmA37lTCR4t WvcsXYFTrz/TPIRnblo7WTlifAEYDDoFo541VawP+cEb90hscL2KTfILNtdxZeFPd2rlIvupRGa +uZDOa7Wh+yOIv0XDcpHGowmp5Mylj23xCWHUzT5usRRNl9a7YQWPChjMuirX/q58sKy3PonLnH s6g6uYIbpWZMN09sWgG7D6euP/tbk5Ci6wRnjfHIRKm8anIMAwcQ+Gbs3hagc6UUAywf79BZjSb jBvTUIBWlbDXvxcMLqO/RESJDY8p9iD8BXnSM6rf/F7S2r+8mFS9c1HXdRfsElYvDn X-Received: by 2002:a05:600c:81c5:b0:485:3812:36da with SMTP id 5b1f17b1804b1-485566cf00bmr199399265e9.9.1773669878422; Mon, 16 Mar 2026 07:04:38 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:37 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:34 +0100 Subject: [PATCH v3 6/7] riscv: dts: spacemit: k1-orangepi-rv2: add SD card support with UHS modes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-6-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Tested-by: Anand Moon Tested-by: Trevor Gamblin Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/= boot/dts/spacemit/k1-orangepi-rv2.dts index f1533c99881dbf38e16cff5e91e33253cfa7a56d..aff23846085d22d1e9cd77434bf= fd2816ad59e12 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -140,3 +140,22 @@ aldo1: aldo1 { }; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.53.0 From nobody Tue Apr 7 02:59:24 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2F9639C65D for ; Mon, 16 Mar 2026 14:04:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669884; cv=none; b=FH7tpszaE80Wm8C4YdYouQqxehPQUEKi4DzEkUjK7E8qWEjp94OjK9tCPSqbVfS6WPdYC0ex+RxNzEcBpWonD4A/OixpTX3fvvOD2bn0MdxJ9De59eAP18hffqPrEMmSJ5y3AUpaGCObQ4jda2anmxuX6xbS071kWBzwV/S4PoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773669884; c=relaxed/simple; bh=fx2qLZcY5f16CxHdcoO1htYJobmi8onTWzwMAk9DhnY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AkgFt3wwcCN/OyUF3C6jk3rrH+xd85NLLxNAa5L8rUc6hs3ljaWD+V2AKZdOaXULpsyvuNXvokpePfvdr7nuNo1HCsTfeF6gBDYBncca4gvzE1d4e5COrUeRQotFTFOGNq2qtXCF7CSeeCczXj6Q1ribnjrhm6CK6iQX2SLAPBI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k2+5KxeT; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k2+5KxeT" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-439b7c2788dso2850415f8f.1 for ; Mon, 16 Mar 2026 07:04:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773669881; x=1774274681; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=TGku/l9FNPrwiqABN5hj0gv51qaKMC4DWzEN52XfCG0=; b=k2+5KxeT5DmooyN4GmYiPjtdRtxC5ZfRHpJIdl/sAo9ksryCsDTVEyaZttF53OgOCX jDNWjQVf4jAYzC2iEZABAvxo4PrkgLwvc0q/SBeX5mZ6VxJj2WpccgRtooc7W8jqQO14 AWT5Zy1CJgvJAornghvIxwkhUOeSQZY+AoJH2ueQuiT7mJtJHoUdhQvk2Ktp/h1IdfVv ovFPV1OdTafe/qYpBJ1gwKKXVwIBtO2OolBZcjJn9IIIdZjWuFwnDCwAP/QzkzCwr/iH 8wuFv1esBkAGafkspkqvpj+bk1Tl2pYcSEL7y/+dF96wMMNHLbQPliqSzU+3UkdEIZ4U x9YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773669881; x=1774274681; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TGku/l9FNPrwiqABN5hj0gv51qaKMC4DWzEN52XfCG0=; b=HxcYrgtAexVUGgtlarMEOCDExpP6WSpDQeRgJzuwqCkOPzz3qN2fBKVpF5pc6Um/jL MZ/Yyls9ZGupbZDfNqpSZnqfMZxagU1MDyYjqTLheYpB/+Nhz6yCVyX6UCxDDx4aTqjV E+8vCMWypxpeG9K0AX0S8Dg9lZDpiAW9AAO/JLhiloGsoy9/9JabUrDex56TrtTB2C5A EJrgrkEW4+Kp/6sSSHp67FDUW+16ybFOKL3eCxvez6P6AH/shrPHVcloDPKthFcE6TuZ 3Vi0Or95QmSYa1DYfIb5vUJLAHJVlK0K4uQ+7ONZvCJ7NvUjCCWtQPprGjhLDnHdWCSg o/ew== X-Forwarded-Encrypted: i=1; AJvYcCX9+1nzPhmNmHGd++BUUpQIDqJ7B49S1dg09Yn3pJhk7cuVf+3YcmxNlYtcA6JT8cKaPYntoWPcY+PgpkE=@vger.kernel.org X-Gm-Message-State: AOJu0YxaPKN7Jjg1kHaTwQN7ESao6PwQhpU/eKIjEas+yNvdYiBr0eQc BMcEbMooE/1yxCQ1G43b/OX5ww/iko0d+4KuGr7RjQ+I6Cf1AJcU1isd X-Gm-Gg: ATEYQzynekIGl+qcrAAE2ue1loYDHQWRZDwq23PyUNrVGfIpLEnTexEXOvJS0KR8tDR SjaMep4a4IFez73ccmTLUqhkA5CyOGOeKxF4f4HtXkpaNFoEefjUlTEUaOSP4iyl1e8WbRpayhB abO5K9aIHI6ArxWu8LRuR4p8s0LUl4XLHLZcdp/ICMtqIv1G5DL/91GoWxaIgeNBEd7SpftpJ5W agIU9cJKeJ0sWPdvGLzQLtLoA96NcwuigbuKFFGXQmNK3AzcAWOaBilIBN4Ja6LaIotbs0B+V76 941Op/rPcBxkRkx7UBXaRA4mXMu+55Bm4+TaZa6NjiUjt2xw85kdkBLI7kLE3OHh+PkheI5UpA/ nbMeHqIHXPVcf4iPbaeaJ/F9ZalZk7qD+V7axemHnIie3TZ1JHcXDWbpc3G4oEDr8RmkZfTwVoT vNPvHitlcwXOIt2f+nHAS/MCuNl8hYquzJpZ3zND4CTDOgIwn6Y9xzDjXgRJJYpwq4 X-Received: by 2002:a05:6000:2889:b0:43b:4153:c2a6 with SMTP id ffacd0b85a97d-43b4153c45fmr7601207f8f.36.1773669880512; Mon, 16 Mar 2026 07:04:40 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.234.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b3a09e453sm20698725f8f.0.2026.03.16.07.04.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 07:04:39 -0700 (PDT) From: Iker Pedrosa Date: Mon, 16 Mar 2026 15:03:35 +0100 Subject: [PATCH v3 7/7] riscv: dts: spacemit: k1-bananapi-f3: add SD card support with UHS modes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-orangepi-sd-card-uhs-v3-7-aefd3b7832df@gmail.com> References: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> In-Reply-To: <20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Suggested-by: Anand Moon Signed-off-by: Iker Pedrosa Tested-by: Trevor Gamblin --- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 23 +++++++++++++++++++++= -- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/b= oot/dts/spacemit/k1-bananapi-f3.dts index 404b69c47b91f8c37d74a3031dbad0d94a28d1b4..a7d480d01ccc0439dbf456ed5a8= 1f467af68056a 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -222,7 +222,7 @@ buck3_1v8: buck3 { regulator-always-on; }; =20 - buck4 { + buck4: buck4 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3300000>; regulator-ramp-delay =3D <5000>; @@ -243,7 +243,7 @@ buck6 { regulator-always-on; }; =20 - aldo1 { + aldo1: aldo1 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3400000>; regulator-boot-on; @@ -369,3 +369,22 @@ hub_3_0: hub@2 { reset-gpios =3D <&gpio K1_GPIO(124) GPIO_ACTIVE_LOW>; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.53.0