From nobody Thu Apr 16 05:14:30 2026 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.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 E99793A4503 for ; Mon, 13 Apr 2026 08:02:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067356; cv=none; b=QI+HsUPcDJYtLjLFDCQHOrkck17GEQ7gNQvC9RJgId4d5N80yJJQ9tQ7K1hGDoG/LDn+efiESRvN2p99xr4g/WQCcmWDxtpvcOd2am9ZARWedSgJyhwJaWw/+x+Fh5qbJmPdinlSaAJbBLD7VhH0xO4VJWrfubH4U+6sQRrwXg0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067356; c=relaxed/simple; bh=VLqXlHYEYj6QD9rr227aPs6s/WneA13bYBUQMaGOG6g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gKGrq6QU4TyfAMn/SHoz0x3tXNi8oaWBvb9vag0bWn5J7+lEwm4Ekb+GpljY9vmQqB1aDuU8lHJZM3Yfmh6o3xKUZyUZ6Jm/32RnXVCvSOXUU1w/vvORYMH9NsdAF3GaKWlB1WXtwPGoEl9Sr7+njGd1wL86H68sMk9voo712Xg= 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=C8wo875l; arc=none smtp.client-ip=209.85.167.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="C8wo875l" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5a0ff30b240so5702812e87.0 for ; Mon, 13 Apr 2026 01:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067353; x=1776672153; 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=luHrHS8xuRmiKOe/fYmQbUMhMu1rL/RwOqTb1rEgANA=; b=C8wo875laIK9HY9D6ybCEu5xIZxBN2w2JJgBWQUkFWaMrxdsRQZJxY+WHUQgGraqZi Z8nofw8GFontuUpm+LHEq90Er+6etBcFV2QoamyA8JynPPQ+gQPmObketRgUOCNOn2HS B/+E8iORZXjEBY3A7yWmsND8/KFbGN0JjEHEEqDyrBBekmMqIXtyksGsuvMZUVpFQ3j5 BaLh1Bi05BiiECCq/kBllzmWhnDd70/desQz81Iq4Hv3Mxim6EICD9eTxacYIjKFzyT7 pxRealufinfuV1XAcGynzfYXmRrKY1bUpy7QLsAiziMGfneBdRu/8i+8tprACCnXUlLI tpZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067353; x=1776672153; 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=luHrHS8xuRmiKOe/fYmQbUMhMu1rL/RwOqTb1rEgANA=; b=R6APaTanq6BOX8wU/f1SfWZ5qakeH4AUN92JRDw6UERbvnNWM8lIM0PuV4zaOXLCuA TbDzaJXUvJJ/yslzjq+anN5+IQ0QaE31KOve19e1oDkH5u2/y313F4r9UE0GQ6wjYbz4 QOdegIOrFmjYnX08e+ZTCPQhrtff5kw5Dee19RHt9/f8HlYwfAPbQEBioLYFP6nj417P 8sWA/gR1PhnoVjKxrW337RCYm8kRcn7Lhycq+2KTOzqa2kPpBy1/+mRLtornc0iH4I8U PYLiiBnKhZsg0ZWRJdXx7HBYskDTCHtbAhYNTfKycFsfj43fBZlWbx+JB3inQwmymP/S WavQ== X-Forwarded-Encrypted: i=1; AFNElJ/i4BlaV/A8RVhHcbIvNIIJsQ8fB9YT7LyxZafLYNCmfi7uxaoSpD3/UUJn3jh7881KawBNUKE6fB20nTg=@vger.kernel.org X-Gm-Message-State: AOJu0YzVMqMQgnGlV9Tn83L88gdyHsh9dy1H5RaEuoPmKC76ZvgrCiXU SqsnhtHECD/N6A1ajwFyeTH9Xtmg8kP8mMlaia/SFUmfeQ+6V3s1VnqQ X-Gm-Gg: AeBDieviMOAMGUKpF0klntlBB8i2Oyb2g3syMwkPoF2iHzW6hwhav9Bp9jfNR71op3I ZRgBXK2TOndGOgMy3ZyszLfJSp1khWEV1KJD5Y6hk3EWWsvedmNckchEqsHfhTxwUJ/MWjMYSiT Ky12ZUFphHbL2oB03U5mHtFhlC0zgTHeX7v0AswXcQddRQqfFo+WVN3C4h0GODbzdcdeU3Gp8aC KT0M8qRqkHv7gw4O0uuA37eI+0KDV5Nox8/85ChFxCThnPEGxWy4v84cmPTwD2EN9eZk3Ln+l6E sRO3Ix8+ZMfDmlFi7ZlJHMKvjgHxKp2/ASIhIN/6C9MY8yzFEufZthcac57XNFwL6gflQqBP2CW vl20092+CqZ6iH0HQT4VigB3az1Wz/hnK+eQiZyZlSolCInbDJIT5T1E0So92R1b4cOzeg+KOaL aN/NwbVwbPydm7ED8Sb06C8Wny4tO/O/P91+6cgMwNhGkn/2K16ykmT5h4OFOWw/Mh X-Received: by 2002:a05:6512:1395:b0:5a3:7528:528c with SMTP id 2adb3069b0e04-5a3efb5620amr4070325e87.40.1776067352455; Mon, 13 Apr 2026 01:02:32 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:31 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:10 +0200 Subject: [PATCH v8 1/9] dt-bindings: mmc: spacemit,sdhci: add pinctrl support for voltage switching 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: <20260413-orangepi-sd-card-uhs-v8-1-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 X-Mailer: b4 0.14.3 Document pinctrl properties to support voltage-dependent pin configuration switching for UHS-I SD card modes. Add optional pinctrl-names property with two states: - "default": For 3.3V operation with standard drive strength - "state_uhs": For 1.8V operation with optimized drive strength These pinctrl states allow the SDHCI driver to coordinate voltage switching with pin configuration changes, ensuring proper signal integrity during UHS-I mode transitions. Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml | 15 +++++++++++= ++++ 1 file changed, 15 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml b/Do= cumentation/devicetree/bindings/mmc/spacemit,sdhci.yaml index 9a055d963a7f..34d202af909f 100644 --- a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml @@ -44,6 +44,18 @@ properties: - const: axi - const: sdh =20 + pinctrl-names: + minItems: 1 + items: + - const: default + - const: uhs + + pinctrl-0: + description: Default pinctrl state for 3.3V operation + + pinctrl-1: + description: Optional pinctrl state for 1.8V UHS operation with "uhs" = name + required: - compatible - reg @@ -62,4 +74,7 @@ examples: interrupt-parent =3D <&plic>; clocks =3D <&clk_apmu 10>, <&clk_apmu 13>; clock-names =3D "core", "io"; + pinctrl-names =3D "default", "uhs"; + pinctrl-0 =3D <&sdhci_default_cfg>; + pinctrl-1 =3D <&sdhci_uhs_cfg>; }; --=20 2.53.0 From nobody Thu Apr 16 05:14:30 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 27E0A37E30D for ; Mon, 13 Apr 2026 08:02:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067362; cv=none; b=RJQ+A11p84HR1OeRS74RjkYzYSgYKmsJ3WkFm1DDOlvOHMDbSh0uZwJXbxCjZ50SfoQsB5K1BPPd0WLXxqBrw7tlpKxyICYZuF9DG0wE6Zao1fBi1ReiVLZN7yMz1oVgPxsFyFtsTyXS7tj3W3nJgdI7838ig8HzJBWEMtWlnw4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067362; c=relaxed/simple; bh=BQj/LtLtvJAa8qPvNururbfdiFEeQmxim48bMkau+Ek=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mdc/27v3x6oURSlVu2FPo30mGL4FuJo4eR6yMHxO1kWaLxKC1S0NAIYZ8Mt/mahScGQ4/a5X719wG5xjNw2ScwkaSdHoUdIKfjpRywgRRBYn6skRdRiFR7nkUINr1AVli6lf1r0xle0S3RSVDT+e4W2t2CiDDJnB1GQV5Dgb7eM= 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=sDxwhHPC; arc=none smtp.client-ip=209.85.221.49 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="sDxwhHPC" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43cfde3c3f3so4100664f8f.3 for ; Mon, 13 Apr 2026 01:02:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067359; x=1776672159; 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=Ej5PuXGxv2ijMAzQ8gpPPur0ekJN7jy1Kje2MEZFQ7M=; b=sDxwhHPC/kAaUPifrhWH+QNatj5I7JEzbeao/+4Tv37OLdp8MJgt6FPk8KfEY3XELl +dLTH+ec4tpG/x94DRRBIGmUAuGT6WcPB7Vh5PI3oUONYSEF6if+lB9sNWm3ehbUZdpI FJm3pwee9nL5lpUkClaXjWHVONFotu/xayjJ00POFgqAX3lI5zWvgL4JXSeUP0pAholT VCWEso+dQB9nTMsfFkdKJoi55NBL8HyR8i8Cl+0VxrV7Fh8ndvYyGb0gT8TBMdBYFDdC 5KHxGxrJ647epSeainwOK8FAvW80cpPZR/vsIjCfX7xP41/KiJVcK+fZpbhT9zShgncL QtUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067359; x=1776672159; 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=Ej5PuXGxv2ijMAzQ8gpPPur0ekJN7jy1Kje2MEZFQ7M=; b=qoM2spNEeyqWOPXL727q93bw4/TGfm0ajNt+ubNmiKAiDb0Xwo5c4TsDdAVVBNJ5x6 MvZ9u0A34mO6utTnq/fmW4zZhCp3/S6hwgjvC3ABuiyGXSl8EgAleeVf+WROeePzSb0E wXvcmudMFu/18QLay20kAp6MWkOM3F0WQYFnaSLegwLEcC5bqypMI02+6nb2Osj/kOOR QEKgHmtNPtJtjKodjYQgmmoicNlUcwOK3SvvKIFzihHlrqNydOrfB+QYRcAl1eqYvMHU 9tIqK+6E/70UrQEGArIEDHRHRW9+brdBY/V9MtU0+PhesvQ1Q9iUQhRdAY8eH+bSBdMz LlVg== X-Forwarded-Encrypted: i=1; AFNElJ/EP2VNMVc4yqGQNc3NpkcQ3g3OII5pPwvk4w6sAfIebAloD3lAOdA3SOPewqptbgo1WJ/layAi9bq6phM=@vger.kernel.org X-Gm-Message-State: AOJu0YyV2mROANe+12CY9PTan/FkqIrcH28gNOemJH2mcQYH29fqQIIJ vyxWfEIToinkxbvFambbmtedhf23HbwXkHNq+V0uAISNZUx/eGbVrnhr X-Gm-Gg: AeBDiev3telRpil9hCnRXXscfLJnnujcmQS0MiGNCta5smGvY0VLzViI65aZAz3wnuw 0WtK67GlgCT4/FuGwb5rFlY2gK3FEy+QtFaspL9iWBJkt85irfC3twtzdfT7iE6fiu4ZYmToj3X TCdSIuEwVMGDzWJW91XkSClBfUBW1GVYNzIZ0FPrzjzTYtpkhRF+cFd2/QzsND0OVwdiXQl79sH u/M56TJIWhY2emKUtrSmvwedDX6azobelLh2md/QRLEGjC7bfhuwmVoPB4FNCxNobTSBGC9h7tX 3samlQvAZUmWHxJj0P3eU6zus2Kj0pjh4qqglTmjOwo3494gYAHZa/42Rs1Ms2vsk3zburpVe2G 1D6H5wGRwQ5zKvLuC+Tkm7TmqrffcSKQPxS1isE0oy94YWJOjBGJbzeSNafC5gcaejT9mjfnENt 2HARc+yTH2uMJTsbd/101tklhZ0Sti7n/ri4HgUX3i65XHmwch28M6bizu31bhYUrsqBeFqOieV 08= X-Received: by 2002:a5d:584b:0:b0:43d:7783:c677 with SMTP id ffacd0b85a97d-43d7783c827mr5141524f8f.42.1776067357834; Mon, 13 Apr 2026 01:02:37 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:36 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:11 +0200 Subject: [PATCH v8 2/9] 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: <20260413-orangepi-sd-card-uhs-v8-2-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 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 Acked-by: Adrian Hunter Tested-by: Trevor Gamblin Reviewed-by: Troy Mitchell Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- 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 455656f9842d..0dd06fc19b85 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 Thu Apr 16 05:14:30 2026 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 579793A4F37 for ; Mon, 13 Apr 2026 08:02:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067365; cv=none; b=jkKJsuPvHSJDrf5phRVZjdMymcTZII2AIm3epTX0aI6v8NTgOo+cgxK5hV3ziNDfC2N2kYvMn98ahNC0lUJDSQEU7EkwFHRO9tZBJQ0jOcutn65dcXZaN0pfSN0oj9ALGXP4/YE9ER6zYYdW38z8p5az3cEaVPAQDwVucZvjJJc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067365; c=relaxed/simple; bh=lQe/1C1yUclvn5uXddSpw2OgIhgzl5fVc6scliCgVzI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BRqJYESbIo+xjhMsBsTDMeGb90Lml0cSjqVm5ZGI9IOPQkbCzocsAWgTgeuuV21Bl2zJzAXDoq7/1HhLSoNImv1p0PJ9quPSOR4LIaAkVOokkFVwa6C9DWyxjqOz55aybLg27Iyvo8PLlng0RAHPkTMs5wSpCGGf31J/IKETFt4= 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=gDuCQMsQ; arc=none smtp.client-ip=209.85.208.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="gDuCQMsQ" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-66f8f556f39so5457496a12.0 for ; Mon, 13 Apr 2026 01:02:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067362; x=1776672162; 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=/k4mLTIsc5RI8xaNMKymA8VHdibedwqV8+ItxZpomdA=; b=gDuCQMsQmnJj8CzWbO7g55RRtzve5AdPf+OW5t0qy8lKtIH9RxdX7H6GTkvB2XeeKH RzS6s1mYS88TYFhbJ3LUy1JQ1mwZkDTewFQkojbm66YPFu/E8VZgbcTckbFnI/5dAZ92 OrV7Jy8ucTZ1KdmZ5oOF0atftuwNzk8mgla8ESaCbZMmoPZJiC8dUM+twFrUEpJTzyBO QJN+wLP+38LhzYDqjYuakd8Q7MlMCK1UPz8qA36f7o4ZYeS6/4zM+dpMiWWCDTNtHuhk aK2yM75BIlmaYkdLnEL58UfpTmYj2+k/sHvFI157COAfkAKNCgJhvJZ2gJuaxeRF45iQ 9XLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067362; x=1776672162; 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=/k4mLTIsc5RI8xaNMKymA8VHdibedwqV8+ItxZpomdA=; b=VZvY1BqRAXNUSSaEpnuiNb6CDxdxfZkTAU3xcLIJNKa3h4wg30CjNIWSbFQnF571Iv FmbCTllgyeagUSoaMcUQW5/ektKErJdOA6NEMe5OHvrLvZClP5a4I40Ji25P9PbP453a 8M3HfT36O2F6GdRfjgOSgEVyS9Lo+tkjZQjz+T/qxFDfDQHPOqZrv8ZpIHuQ3gGeCFTG VjouZ3QrxT1VOLMzpga2mAeCv4r180SU9LONHkeH0vCK6lirlls7Xh2Q0mVb4Y3QjBZs RAf4r530hBM+YymBMMGyo7ONvonsT/l/qQe6AL4VJatAVectp1BUGcmUtHbSrEho9jtg 5klA== X-Forwarded-Encrypted: i=1; AFNElJ9BdV03BGhjpaIxXlN9DDMcI00uQqkRCGvC701JvCuvH2aUnGaHmQuFlKCrneMtiECS08dcNIMJgAgRqR0=@vger.kernel.org X-Gm-Message-State: AOJu0YxM5EeLkPG3I0yTML4O8BMJiIuEdGj/cQqt35kg0AYxOeP3VD4g qlB2aqn199NJiwfkXDaRqHS+e0CgnzGdNj5Wdnsnz7i+ygtMbv4P9CVw X-Gm-Gg: AeBDievhWJmzPtmpxKDE86BWW7fNs8W6UIHfWGQLHfPmT+Zl3Q8AXxxnylANUEGv3Si PhThrb3PloBO+98l5jOi/EGfyWHnmO0XFmjEdJGCGrwjD25Vs4KttNl/sHFqvQ+hoQLArW9rxDn d6MbQ3PGoQt9L7vpkQ5WymZShjqLnBXE31XiZz0c6diBSvZzZEfg8pkTlCOiGEuptL03GK45ncX +1+t4V1R/1BZ3qsDP0UbPrbSdOdRTnLzBWnsdMUPLiaTfAMf+0cX6BoDvx2FF6fPB7l2R6i3t7s BY72aq2UcMsSZXfRQALJOQAa0P0qD6blUKtGCPZtIa1goHj+LyUX9sgy4mH+S+WiRfsEjRxTe92 UktqhdBLW+clBvxmoZfBbwoGB4jeCnMQ4K9Q5OAEBFkzxRPC9QZ4F5jSVuM+T07ePoaoXENvlc6 SBWBXF55e9Vu/k2Gh398ELwVYDhywFU/RuRB7BrxJA1HPWm7PoI/J+kGKZ8xt66VlF X-Received: by 2002:a17:907:6b8e:b0:b9c:c40d:bd2d with SMTP id a640c23a62f3a-b9d7277c7ddmr642261866b.10.1776067359772; Mon, 13 Apr 2026 01:02:39 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:39 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:12 +0200 Subject: [PATCH v8 3/9] 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: <20260413-orangepi-sd-card-uhs-v8-3-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 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 Tested-by: Trevor Gamblin Acked-by: Adrian Hunter Reviewed-by: Troy Mitchell Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- drivers/mmc/host/sdhci-of-k1.c | 72 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 72 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 0dd06fc19b85..d9144537032a 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,46 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) SPACEMIT_SDHC_PHY_CTRL_REG); } =20 +static int spacemit_sdhci_start_signal_voltage_switch(struct mmc_host *mmc, + struct mmc_ios *ios) +{ + struct sdhci_host *host =3D mmc_priv(mmc); + struct sdhci_pltfm_host *pltfm_host =3D sdhci_priv(host); + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + struct pinctrl_state *state; + int ret; + + ret =3D sdhci_start_signal_voltage_switch(mmc, ios); + if (ret) + return ret; + + if (!sdhst->pinctrl) + return 0; + + /* Select appropriate pinctrl state based on signal voltage */ + switch (ios->signal_voltage) { + case MMC_SIGNAL_VOLTAGE_330: + state =3D sdhst->pinctrl_default; + break; + case MMC_SIGNAL_VOLTAGE_180: + state =3D sdhst->pinctrl_uhs; + break; + default: + dev_warn(mmc_dev(mmc), "unsupported voltage %d\n", ios->signal_voltage); + return 0; + } + + ret =3D pinctrl_select_state(sdhst->pinctrl, state); + if (ret) { + dev_warn(mmc_dev(mmc), "failed to select pinctrl state: %d\n", ret); + return 0; + } + dev_dbg(mmc_dev(mmc), "switched to %s pinctrl state\n", + ios->signal_voltage =3D=3D MMC_SIGNAL_VOLTAGE_180 ? "UHS" : "default"); + + return 0; +} + static inline int spacemit_sdhci_get_clocks(struct device *dev, struct sdhci_pltfm_host *pltfm_host) { @@ -252,6 +296,30 @@ static inline int spacemit_sdhci_get_resets(struct dev= ice *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, "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, @@ -324,6 +392,10 @@ 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); + + host->mmc_host_ops.start_signal_voltage_switch =3D spacemit_sdhci_start_s= ignal_voltage_switch; + ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); if (ret) goto err_pltfm; --=20 2.53.0 From nobody Thu Apr 16 05:14:30 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.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 DD5AB3A5429 for ; Mon, 13 Apr 2026 08:02:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067367; cv=none; b=HX6b3fDMxvuIIG31WTmp1RyOxMtWc8wvFFZjSTfXNW6vzuETt9b39MvSKcAvVya6ayDSTlVbDyPlnQoUCy4PtSP9FFh7E9jmevtyl/o3/SiCkpXA3L58k04KxhS374nAyHt7TSkt0tLU12zva2zPCdJRJQNkO1E5mWDAJnJGFAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067367; c=relaxed/simple; bh=GAdxD2ODxB/c86QgzU3hy4MnLe5aqdkbVZkALteNG0s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WY7Im9PL7Zg7avPqiX+DgiP5IlQ/naWhwb3+922/3SOHcVLEB41/xxWrYlEoPKwEXxCBpIJGmzAtjsfQVRO30ZPWtx00f+A4sAnur+nk/G78GRxDehOY+cbAI52wJdVZ8oIO1vApPsUPeJqQv+ejaCvGuVLD3r5IDhWIiPZlGFY= 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=W/cLTJHa; arc=none smtp.client-ip=209.85.128.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="W/cLTJHa" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-488b3f8fa2bso43260865e9.1 for ; Mon, 13 Apr 2026 01:02:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067362; x=1776672162; 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=sLi9neqVCeiJM5TwaR6TR5n9frPeJnqk3U/FYZfnxS4=; b=W/cLTJHa+fsNjKUiLEu3ftQNWY/X9HLXCU83SM4ixmldYutnejFZdI541vkftlpzGR z19p2VleYApXZzl2pKAf0Qd62YmUmFVTvj4GzCSw/2SmOY0+6IWICLm3UQW9+yc2K7T2 e1TIogz2DAJ+t6my/tHmyzXxIJVyTDci1Yodp4XDNRPDafqYKNkTapUv6cVDdtghUvQr mt30qFuAexz6tG0sWi5nGq+ebXKR5DDZ1n2Gz+94onRIiOp3bCqjRw8Z4F6glsHusDIS Lzfa0hPNlhn7BvTWOLr2ybE1Wx3QtjKHsiB/h7VU5U9M1qiXIeEdiOmqrZIWRLcYg5uB ylTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067362; x=1776672162; 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=sLi9neqVCeiJM5TwaR6TR5n9frPeJnqk3U/FYZfnxS4=; b=melESfiUA30bbTL56lxAkelQtHoT5yfVfgcffk7i3v4Ae4JL1ZpOniD6RfZx29Jv0o eopTk/dqZhr4sC0oCcTBDEX/GgPFHPTIy2oUMizxUspQoxrLqLOMfk9MSULtF3FcBBw4 pjlb54UF8vnfZWMV+23/SOnWopVRmStSqyucqb2ueru6iDfHXRJZf2KoRaNcuASXSxur b83OHdH8BhqNONJLpSezrQo4FWU89AjlmPyFkodvGNloFutjPaVRNB9wKT6HBN4wQue2 cS9vNH9NU3HZ3y6niqF9BiR6U2eLXtZt/MJHQDz38h5WBTGiMDWuezhyyOhpVZnPuPzZ 6vBw== X-Forwarded-Encrypted: i=1; AFNElJ9F5Jed9alUngXnq/Yu+tRhZr7oBJU2yWUMuH03y4k+5AISjZMo+AhyA+vJkYZlU+8FhKjQMDkv2lqb+UE=@vger.kernel.org X-Gm-Message-State: AOJu0YxwBOOzXIkLcUj2CFlFmAsqm/R9RVT3uXFaahZxGam18aWOmkGT uQ3ZOKfh2n+xYvhXhJ4KhJFEFcGoQW0FlyV5ti28caols5C2ZGhJda4X X-Gm-Gg: AeBDietf3eEEocweA3bHxAkVylUBHKOUEno6LmmrKmHJXrg2mOfy87zrr+dnMtdq6sh N76giWdNnHcJwXBV8oprZCyVMYpa9j+49wQ+pPsyhXwYT+Djk/5mkfosRSMtGrXVPmsqlOhGtdZ cMc1aWn/GcNrLrEkVRNmezGBkOj9Bq7fs3B6Qcnyp6BXyxhdbGUVtYCPuT8KEctYS5Y2jiztowY 8dVrGMI4DIS2/C3hqmWVzYVXkWutgjvBT4Ad25tg0A4352NFV6Wc22hQJdBd/AZzeP847+ZPGbE 4emF4bpXQi2gCr4O+S935EyKOFQzHW3poRMntKTYIsH8zLJJDh72r7EGVPWB6H4RxguV2bXbQ3I t0v+XkdwTIbdx0LIcMmWcMihE64OCDftVdxcK2pGvd0mJtvlnp2PxrnpeVM3DsytRp5XNGiOUf8 XuOpMMJZy5hTxuHx6GvRfkZLw0aw03Lqoic1e5ma7bNz6bC/2QrnBMqksWyQbNye4f X-Received: by 2002:a05:6000:25ca:b0:43b:5091:39db with SMTP id ffacd0b85a97d-43d649740c0mr19026840f8f.13.1776067361775; Mon, 13 Apr 2026 01:02:41 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:41 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:13 +0200 Subject: [PATCH v8 4/9] 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: <20260413-orangepi-sd-card-uhs-v8-4-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 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 Acked-by: Adrian Hunter Tested-by: Trevor Gamblin Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- 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 d9144537032a..37b0911e7cf2 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); @@ -326,6 +497,7 @@ static const struct sdhci_ops spacemit_sdhci_ops =3D { .set_bus_width =3D sdhci_set_bus_width, .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, + .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 Thu Apr 16 05:14:30 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 1E2873A451E for ; Mon, 13 Apr 2026 08:02:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067368; cv=none; b=rO2rkJho4jdbmwp4sKU1RMeqKcYRAMbnzdRVp8KyJ6vRKT/69MoS3VMvLEZSSQyAkbN08P+ofQR14CBOr8Lm7s/He57DvHIE+Ys+DkIlnaBwCBVo3fCYCkZzvDPLr+Ihf4Ig0tCjzALmH9UdF9NQ7e4bFNFK6hMJEf8sn9eN+Kg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067368; c=relaxed/simple; bh=eVrkEXLP+791DyS5CNA9zSUQG9FyxWIPqUaZlx8PVx8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vd90BQ76cGX5QX1RZDSiqNT4NyjXcmZ2Or8shCan+nV9x6t2CE2ivtOKjcrWHOppeyHYfIswUsvxksbkcJHH7H16WKvj/jM5JtBeGFR62qLMwZ83NVONAX8MROp7raf601IYv1xyYJzrScuYuCuIQuorQDN2M0vagaguomk5GCg= 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=awIaZizJ; arc=none smtp.client-ip=209.85.221.51 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="awIaZizJ" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-43d73352cf2so742671f8f.1 for ; Mon, 13 Apr 2026 01:02:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067364; x=1776672164; 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=J1uRceIt6FZHOLqKiVcTKsVGt2IzySijGuQ2Z2k+iYk=; b=awIaZizJtCS1nTBSvZeNWP1O43sz0ySsJWcKvGxYvWDqoJ1nfCqkVy47BHaVvy4Wbq u6epnqDgYDuj1WXO2uxtdu+KdpZAo8zaazg1G2xVaav4YqQP07bKQu9PO+Y7KZNYmKt3 J0tImueuHDMasMwz9rf/QcRlhPUE9pzWcj5MnIXLB1x/2xpuZrvqwJdBBJ+sWogXFLZE 2pfY4kZ7lZTbtnIY0x5dr1iGPCX6kk4KKwmcntATr00+qEnZTm9UjcVeZ3Z+GrJsi7ld orM5Y9A+Zeu/xwTyVM/s3mz089KtwHtpC6FYG2xc4c/W94MUjurFmK280zI/7dEKg1ce RijA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067364; x=1776672164; 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=J1uRceIt6FZHOLqKiVcTKsVGt2IzySijGuQ2Z2k+iYk=; b=X9qnbEzOIcdnBxUKkQ8GcuMi6SguVMWKSrRYNvGsn5XEkUBRHFQBPN9JjFpXPniyiT PnLsC5pcSvwyjo4xacXyjAgzNAidD8qB1w+9UV/2PE/Mkn5vGkqN3IFuFRErRDaqI0OQ T2ERTysahmd+P3X7UvBGQXuV68LoUy6BPPpIjdFqmTOqUatAk2J1dQ7KSktoq3lZ68/n eG6szD2JaZlT+ymbXVLa/7rWTCx1qY9Zw5u/uUd8XwNe7ux65V7ewFXI6QUv+dRgTSbw of6bpKfZp9t/mQjeqvM1j0q+Pvnz9A06m5alQWNTzbndfk3Y3aas9xVdiNg57FXhpG9r OnEw== X-Forwarded-Encrypted: i=1; AFNElJ/Nd0aUmjDJfYbIeLa9neHf2HIjRbBKGL8CIewIjYq07w7OdomKrSnbqGeWTh98KLLuqKV4Uwp71cDDSzc=@vger.kernel.org X-Gm-Message-State: AOJu0YzHk6rGJuk/5Sx2tcLOKTZrmAGa8pskpFcjn1az+ktmjw1BaKrh oJoK4y2THxQj5M339FdtFUREXZqNm92XKh10spaPO6aPsE7yt08JwX08 X-Gm-Gg: AeBDieta5jdcZ/nrKnIAAhLXSQcoFMBCUBvIznATywgnuI4IXJrInGPyQLz5jzheHgz 7vTlJ80vzh9rw0xeoBEIsmChxhdtu2wTYOz9rEZZhFkZKrLZX2B1bQYtUO9gppgQRRpmOQJnAcH CIvV4DkkYdRwrIQX7yF1dGze35RD+qMogS7xW3mgz8RFRsRKur8O4F/6L94LWkIJiXEylcbdLIE uV8iO51eEIXYpqpH4N8dGLSu82BuFH8GDhtN2AdYQ6lLfIOVvLtq+9Mr3k0INUraqoLI2QCHH8F x8IcB33SOl7AMjLkcBw4yV2ZaijsjCf5hYyBU1GhIG1UfU2n9UGRQOsdOLaNw9yS7GHElVNeB3P KorvqTbYcGC6Ak9MxLZwFuv0e9VJjPD6vAvXGomLnjMy6uv3g2kqVC04N7MNwXknHMQHeilmtKu cjcHXSXAOzbu/etdgj1Ubw7Ak3wI8WjPPoMTJ6/82q6nNdYcZeSnhyBhccHG+iNDnG X-Received: by 2002:a05:6000:40cd:b0:43b:912c:25c7 with SMTP id ffacd0b85a97d-43d642c4f22mr17696379f8f.25.1776067363780; Mon, 13 Apr 2026 01:02:43 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:43 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:14 +0200 Subject: [PATCH v8 5/9] 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: <20260413-orangepi-sd-card-uhs-v8-5-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 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 Tested-by: Trevor Gamblin Tested-by: Vincent Legoll Reviewed-by: Troy Mitchell Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- 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 b13dcb10f4d6..b3c472a0783b 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 <19>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <19>; + 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 <42>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <42>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index f0bad6855c97..28949f804610 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 Thu Apr 16 05:14:30 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 83B433A6B77 for ; Mon, 13 Apr 2026 08:02:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067370; cv=none; b=Giz0Kt0tlq4hWpvL6yNFvctTz6EBnTgZPpVGYIoEMVyBkKNGVnoPqoH9gm6aMDOiG2Ql3hdlaCOgDkd7QUJlP07/pq/PgBrpPA4hpvL5hI2SQ7NoZo5zl3ZfsSPSvbojjb+Lh2VXZDfg8XqYJXmi0SgvXGF5G4CjbbhdRws17lE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067370; c=relaxed/simple; bh=jzMsWwDIkxOKSax6gl1IICe0yAnfuQo2yxPv0AT8qsE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pS0VeAupXq9HTRoyDoQCzIVNdqi0Stzf3qANVjhNf+PYbIzAV1hOQ9g8mctnPH8kVjgXi3uMyMrXOI+dVv1Ilid4TbuGW7eKQdhstsPjwdx1wO/FRzUE/W8p5AKs2mjONfrdI4SbqxFnqkV0EIDHAP5x34AwMkgpgQnXiqpLrI4= 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=jxvTbPLS; arc=none smtp.client-ip=209.85.221.50 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="jxvTbPLS" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-43cfde3c3f3so4100793f8f.3 for ; Mon, 13 Apr 2026 01:02:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067367; x=1776672167; 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=1Bt7k0zpH6EPz3nKG6vw5G/jzVLlNuWcFiRyZwuaAKY=; b=jxvTbPLS1ArVU1BVZmapt9GH0VIK+MMk2M5c3unJoTou9fswUZbAyLN6q75qcOLrBk u+fENFwoVreo4/GYTAoq4zXDq7oOz5ux+e2z3uBUDcS7y9F40k4AxVaDQjYXoOPtn6Rv d7J69qnwBm8BYUb5x1Hq/EJCirQMRxGFBIWjZo3vPK4QWlj5MU7l1G1dU3womoxRvAUm RpAtklNB+2vrB0MGPNgPPw0PrLY6woe+uCdpPXslSoHNIYbGposADRJBa4UFpzf0SKJX I/Hja0fFKWAlzpghCHIiEbxanNyInSOoslF7wK+sWU8Q+wdbkxd1i2VRnAaLOlxkrlt8 3K+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067367; x=1776672167; 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=1Bt7k0zpH6EPz3nKG6vw5G/jzVLlNuWcFiRyZwuaAKY=; b=mFv41/xYJJTz0uNZMDYPGt15Islmbz2hc1iKaYLCKRwj9KXtKvVMQxiuRX4m2tRiqp LXY/ZJMab15G1XM8FL6IRAWlo0kgmeULNpnJ/GAVvRnc29fp9w1QoqSE8Vo7P2aCvVc/ y4Gj8+CNr0ZzUe7XRYe6FgcsEPVFmOmgR5djf2XAF5/5SGu8AA/SYLhd0Cf6nu0v1k62 5Lw8RVsbBCBfg5rxKCy/lkdHpaJcd+F4WQIulr3IuADi8hZceHjs/hP0UUqIuKfTeO5s SHBcjkienVA7Le8Z6mICTl7ew7pkDnMAzKZEoIOj0/LidhvT4QSpSaBBqYOkNcIEnL+u 7J/g== X-Forwarded-Encrypted: i=1; AFNElJ8CTIxBCaa3Or9CmHIZfkBlof33G9Jv05T5Dv4KwCZRyKCYNcBd79A2Ik31Qw2ApIfA7BocbZCxG+P/LQk=@vger.kernel.org X-Gm-Message-State: AOJu0YyA2qvTXwAfEYZqbLE8gJ8EqY4bMZx9y0w6Pbvgm6DbTkzbQ0tU +PD5xOoe5kQWrUL+EI3lSDwSem/HF3Qfw7s6l0Oe1NPwdgZBiIB6eCiH X-Gm-Gg: AeBDiesmifW33ckBVigD7mxmiczEJRo6UbYOltPeOpyHeTx+Jyr3w4YyrSWyLnpuGAg h6K8Xunvqu3iEKMHouvtxDLk6b3+Y5alv503H+bloAtkDLrLyCLMNI2RCtBTed8mXLs7FJ+ARpL VrIfAInJYcB2o7Nd8BhYgi7DrNkCccFG57g7rrypGCUPYw/nfnlGh+RwEZDinGnBfAgHQkd0+xT Pa/nM60n2fz0Se8heHQxOyodcwcEDE4J3as8Q80/DF1VpeZUBKCShetlz9gO0mHsPxdMveO+2PM ejDAVdyggt9imEzlM5K3zddvgdCs+ry8XUHUrq7vyvyjDJvoFsuUN+F/WRXtsJh5d1qJa4ouQbv Qese336RWjZDlIF67sHoY4fUDMwNJoRmsPz4wo8hoDIDw8p1KL5RNaEMiBizrdmPA4htnAV0+uN OvTJWy75aWwN+ekR8EeceKRbo+agHHKtiUiRK31JYgzJZzwC65qfnPqguyuHjsqpYj X-Received: by 2002:a05:6000:4021:b0:43d:7854:32ec with SMTP id ffacd0b85a97d-43d785433bcmr4066398f8f.17.1776067366337; Mon, 13 Apr 2026 01:02:46 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:45 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:15 +0200 Subject: [PATCH v8 6/9] 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: <20260413-orangepi-sd-card-uhs-v8-6-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 Add Spacemit P1 PMIC configuration and board power infrastructure for voltage regulation support. - Add board power regulators (5V 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 Tested-by: Trevor Gamblin Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- 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 7b7331cb3c72..9c417a483f6b 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-5v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_5v"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + 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 Thu Apr 16 05:14:30 2026 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 86E6C3A6410 for ; Mon, 13 Apr 2026 08:02:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067372; cv=none; b=MUOCd22oU2MsBudcli8FaiLFpx3a+Snj2U3uD3h2pt9Pr6XKF1q2iQCjI4mOTlauSV5QdS32XLXytI1bQzQRvvhiayyjz8AbbQC3zU3mXm2WXxmFgbev2HAfeGCButXOnebFPSIr+yifAEivRARhg0r+QvMEmS9rWq0yepa7Z1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067372; c=relaxed/simple; bh=1HbIW6/OtwG0nzFhm8AN7DBXkGaNxAyxn8jiZchQifc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jXW95GPGIe6J0DEaen701atUDimaeRATeaSQ0vzK5C4uC0ae7NH5FvDabotWe8DZrFclYevQaUfw64XFeiwd/XORb5kzb/PQlFoxBD3rLmebyJMByBiaXmG6FmDL6sYk1Sgt/mhMfVazbJ7ZQ3YXSd9BLj5DPWqIAIB/o09hdeM= 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=apKxG8du; arc=none smtp.client-ip=209.85.208.51 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="apKxG8du" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-66bd4e0560fso5375629a12.0 for ; Mon, 13 Apr 2026 01:02:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067369; x=1776672169; 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=jgUUdQtr/fVKD3Ff4J9UbF4I4wxaToLEFfaMYOrzMgY=; b=apKxG8dua0+Xga190aQvovpy84ZW1N7XuS0EZ9F64/AMHegbb4oFTKbX69WS7D5mn7 6Vd76Xt+CXqH4cj+U5N61mECmrCXXZgZ6f8ZtwdUHYpv25ckeFwqDIVNFw4foU2dakXY u5ZxpNYFbUSGeSEiMOsae5UmPboCydpU+emSThEor0ezhcigZ2Ia5FELCtHOYWUQbi72 XXmdwrKjDkoiVB1o99EaM+NgEWK1+D84S/4U5fgN2//YJEGdTK72I8td682Gx7veJ5wk 8HsdCWjlO1rOO00KBVGd20WSKAcaypoIT1Zt4oKr19tuiBHgcwu7vG8WKspQQPQkMd94 UbHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067369; x=1776672169; 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=jgUUdQtr/fVKD3Ff4J9UbF4I4wxaToLEFfaMYOrzMgY=; b=fWqbuFxIXMShxhTcwaIskcCfccv8xeC216FNHtUKLut3XokTR3mO9HJ6fWxGTU0YsA HeRC2l7M4StE0sbj3W0ktgDjfoPG0CwjDaf4A4pxir8eQC4f2st3q346K71gmr5oJTB1 h9I/1pB2M8F+FAQLQhZV+Otn/1c1rloEI7Bt+Xk3DB2kC+1R5bFByjnrH3w4IwRYdlHs CsfxDCNK2eUoxcuZqTZtIXeRS5pfmxsRGv6jFl86MsFPQWVVv4qQA1BD/hGEAllV/zsr Xa6MJ2oZzRAXYSgCdE7yyaml7sUN/YKPsrpDHiqzV83e49i9cfwMpBaChEbo+95DUuq/ 6EnQ== X-Forwarded-Encrypted: i=1; AJvYcCWzGpyLl2Kj9w6ixvcJUTF4qm7kYUxLm3IHiLgxb968dzt2qxEE/vTC8+ZRMO61nTCcaS47rwRSMFNNxJY=@vger.kernel.org X-Gm-Message-State: AOJu0YwWCLgaWpr1FhmTHysbLw9xifVmtcOW5klhDhCaYfpocUZy1WPo XkzbvTdQ3qccGD8+RA7YWuj+fZLlO5MFv0fjdhiUmEpyrhXb8/95f91+ X-Gm-Gg: AeBDievXNi8GL317PZc6f9++PiuUL5SrmBlbOrdTQEqsxymnh/ALuZzWMBrpPRZyJfv 7xNi2RMJkIiDcB/bgdjnkD0rnC9qS6hI56RIf7XlbszlLQEq8r/4b6lJ4Au20f3u8L+Hwdyvdvo f/9YjixkQAaEIid65bawyzjrrupe9KBwWj0Sm7AQIh1txuCV9d6HcZgHNkJpoz2dCiZGD1WxhGe LFx7S05B0RioYv+WW2Pf4FRR9fG2qivH31JdI8399Hyoy7GbZavyZiye9ISw/Oeui/NKcjOR3L7 i/5gnNPumbNXtKS5Nc74G3pF862I5YMQ8NxB6xp9R2WJg+iYd78YRby1W0f1+YsYiew49PDCRwu VCfXcEJqtZIrVFK9w7jld30200qosH4xyZ0VDwZ7Z+komAqYqIUkVzKS7bZz0st0XeP0/hWJLIo slOGlsygqv+gq16hdIwzpwzIux27CK7PLkVRe7p/hT3p24GYinlmNwHMm1LataiZWzxd50UHIPG fc= X-Received: by 2002:a17:907:60cf:b0:b98:8494:3174 with SMTP id a640c23a62f3a-b9d46265d98mr798014566b.24.1776067368357; Mon, 13 Apr 2026 01:02:48 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:47 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:16 +0200 Subject: [PATCH v8 7/9] 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: <20260413-orangepi-sd-card-uhs-v8-7-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Vincent Legoll X-Mailer: b4 0.14.3 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 Tested-by: Michael Opdenacker Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa --- 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 9c417a483f6b..95cfb4681ced 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", "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 Thu Apr 16 05:14:30 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 C79A93A782A for ; Mon, 13 Apr 2026 08:02:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067374; cv=none; b=NCcZzA+gdH/AfKd165+ILGSXzwAFU/k0blD6bXVbK003d9wAPSN7MD/Rdc1eIh6D+ocwu8ULO1IQQAFcSe0NclRFFzj7cXV+Ygg5d8KfH6UIBIIqM0W7el7A0NP0q5OIsa23HbH9WuSB7YSNH6LIpuJFqIdS6haj1h7atqpodpo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067374; c=relaxed/simple; bh=yPVLAlhkTA+kUGyF0dssolOKikJzb0AxKHREa9fEcLU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nCf3nsQfk//5/Ww7yGejBpYzR1u5i6RpANWVntBzMo+O0wPYd1jZHURm9IPDKGttFlj5vzFKJpkggoQS4VLXAsfyY36+29F6u2VjSlbQk+fNngC0sDIH0i8iQkFKYlo8IfDVHSXEjscMpP8oMPv7phJpdXdebsK7GoKPpQBS6qQ= 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=VJSdlOO1; arc=none smtp.client-ip=209.85.221.54 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="VJSdlOO1" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-43d70b3e159so412321f8f.0 for ; Mon, 13 Apr 2026 01:02:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067371; x=1776672171; 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=39t86zaG16kXe9hLAHIjg+gQj/3rkIeOmwWRfItDZnQ=; b=VJSdlOO16oExuSwGUTA5QdFg/5Q8BjiRZS8doPCYJhNayDEDRlK9iqI6VClcielYse 7gLpmsgKVFH+cnbCLBHN242v8ZRejqkPH1IdgmTmjuNwYRefsVfR3U7HN4mS4wnbIota 2yw8nDzko8WbUypzt7WmB6r3XKs/s6maYAEC1dWbt7HpmaimmohLlmYHLWSpoHOt5ZMc MalpVAm/QlGs/1REuI0nt6od2bVI3N3XrXSM42w+Y4UzTXKTDySrse0jaMfyagYBmryw flO7DDB+PhQdiIqYFjF+XK+IMjpg2wdBiFL2o1ahaMleDa98qVq5TRhfLmObGYuAH+f9 vC6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067371; x=1776672171; 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=39t86zaG16kXe9hLAHIjg+gQj/3rkIeOmwWRfItDZnQ=; b=UGtJ0ymQY9iKaDBn3xUQmMVqUqulRYZLYlhBEtsu4EoguJoVcZtJbVE+6ObCX6P1/o 0XfjBRiUsr9pGIFvQFWTkAPrLtTei1plVYp2gAcroErEFblTgfChUAlC16Y6K4JL+g4f S3nsDPdVDLohOLQAsLX+8kuIQ2XeTA5LF0OWNhj/N8OU2cTDaSmuHvoXDTHyVJVQLVyO FmHs5XFFPQOIBVj4kKyZ04+lMcxErUnjrvlTk4nFhJqfjjedRDQxiYj93PupxEOM/3M/ gJac/9SlXFQ9QHaHcY/Bt83AGOf6UjMagdW7OLeDM+k2WvSzwlLwUi3eNPtQUmpBI1s3 B6NA== X-Forwarded-Encrypted: i=1; AFNElJ+o56wxe576adeGfJ1ABA/r/In7he9UUSO6GgFM720yircHgk2Thtu5z3NDrsRKLP4bkNkw27KN/vyb620=@vger.kernel.org X-Gm-Message-State: AOJu0YzZzW6NUctmXki6fj2kPgUIfr/zLhIkj0YpSrnMb5zkbDW5R1EQ fF/TbZ12FLmB5Te22UpzCnQGClXLNhUFgXCD2rl9qgdbHYQecLHdACBw X-Gm-Gg: AeBDievMB9ERQ/dT62bSXIVzfxLwM4k13lChr8C9s/FtMabffGJ7zngS3j4s6aUKHSp cyxDj3Au6OBge57EaFZwHyzBjKzJwqS/fbiQKmouLsFp0TiJCA3+/E2BlanPbiyh1pqdzSBAxFd ewqUWB1kf5GcPC8a012Mrhey9kc61ieHRd+EDANkJn/TUIeKcG3qM27fWQfRd2BheT+ujIbhfxW ZIkl14k8Z/RaUa9fHOyssh34P9LzgO4XVnCqsMjXnRpUEKDSwNxwyZ+PIeDURuLsok38v8PTMgR +yDIddMxTt/JfaFSfDti4FjCjafr1uSFNbvhSfcBbOf9Ivb8/sp6c2Yk/eko37zY8I41PmA5RMF nNiHok70AAhfm6c8eHRvw5SN4BOuFoT8MZ8gYsOtWs914fWGoCnTAyVI7iOt+qPe498AtXAKl18 EbA+8yvUAxWUPcFDu27Hdi5cjPbCWyD/REBajJWXZ8jiHFjy3yVZeUl5BkoFeRuyNm X-Received: by 2002:a5d:5849:0:b0:43b:45a0:9df8 with SMTP id ffacd0b85a97d-43d642be552mr17751732f8f.35.1776067370293; Mon, 13 Apr 2026 01:02:50 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:49 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:17 +0200 Subject: [PATCH v8 8/9] 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: <20260413-orangepi-sd-card-uhs-v8-8-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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.3 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 Tested-by: Anand Moon Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 24 +++++++++++++++++++++= +-- 1 file changed, 22 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 5790d927b93d..a7d88564630f 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -220,7 +220,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>; @@ -241,7 +241,7 @@ buck6 { regulator-always-on; }; =20 - aldo1 { + aldo1: aldo1 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3400000>; regulator-boot-on; @@ -367,3 +367,23 @@ hub_3_0: hub@2 { reset-gpios =3D <&gpio K1_GPIO(124) GPIO_ACTIVE_LOW>; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "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; + broken-cd; + 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 Thu Apr 16 05:14:30 2026 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 681743A7F67 for ; Mon, 13 Apr 2026 08:02:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067375; cv=none; b=cM1K01C1OoOo3hQSCdpdkVmjBTNnpLdWAyWRHUAyGDLAHhfFqpnkBTQ1o+FdXP49y9qVMgi7nPfvaB++zWl/ovQGLKMP3vNJgsdxfir/LUPD0pSgNmz9QAVNyL23RS0NA/D4ZVTt+SD7wlodPH9boHl68b8hRmDohtUgPSshMjo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776067375; c=relaxed/simple; bh=hxs3OSpNzHQmcxvHvXpddESvsaNDoOgB9L1Rmxo+7a4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XJBSYIDeEuVW9gnrUcpdeLPf4iy9l2vdMguL/LCFf46FFr7GAbCtCQMSe0DjCfW84P2amhDnAwjI4OF3ExRB/Ih1YIIf2rjGT4MWQk+Ga7IroGA42c1y62PHKJvrogWwY1bnbP5NiW0UaK3IP/a7bxqyL6gYvFIQFJlasHQBI0w= 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=pCIR4x29; arc=none smtp.client-ip=209.85.208.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="pCIR4x29" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-66f727d6849so6050833a12.1 for ; Mon, 13 Apr 2026 01:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776067373; x=1776672173; 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=rPuO322us0uZuJ4hizKSGfFjcUXHsAzG0IoitERG8vY=; b=pCIR4x29n3VXokr1EVW/X59x84NswrGgRbM4JhU73UU6KM71VGMQ9cSS9HRvptJBcy dFHHhS3umBDNPYQi+pXqqrLDDgXrJTaEfRDqaxKdhMxYuD6x1jf3DKvAJlfaPyC++wfK gDFhX9un4V4K2+c52GTJAsa66bOhOZQj3S4YOfUJ24sin52pY0UsECqAaBcduzWwiXFq JQOTZHPTeBYhVCNyiYrEHEvA4eyUvBYjs3KzlloZdd02A2jkk/xmHtGF2FruTgwNfxi4 9YnMoYwuz4hu1ZunHE4Nv8hQqKU2KM1E06C7R/778eBormExBChG3SMQGC+gfkQOYYP5 Ysqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776067373; x=1776672173; 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=rPuO322us0uZuJ4hizKSGfFjcUXHsAzG0IoitERG8vY=; b=CqsqFj8olOFpP4egu/0Lnza5/PYO6rnSW8mvCp5aqb75nJrml9hC2ww/wYQegr9M3g F31qUNocTsu7oHohIi4iYbHDgSvJCClIaOaMKk+24h+/fdwdPY2XsPQnDbwM7Z3dcKEo DiQXllDbNm7w1bo8Tte/wbFUKslePrcv3Blk0+lX8pkWx1myWre0oxE2ELPvHHr9pPKX VT+JTrRIFiRAio70xOf+rPr0AOCA0gMWkxid6X1LqQjvlhzAh6kYwwTF9IeoOaJZImg4 WOnRvHFySGmYmujM6xA9Yy7YPPPBpx951d6X9k8GtWeKY6P/5bxFKUfJg3oSVle4G+Ji n8kQ== X-Forwarded-Encrypted: i=1; AFNElJ91uR/aUWxoR+FGFApHpCYt4kieJ5CElVTj+5U2GkedyosVrgW6ydGsA3/+tYuYOMe39WnVTg+nYsm2PVc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywwj/ie5/4VCWFuUWlzu2ovxEbclrtpwjJdCLg/U5Bf1qrbp8g6 vNetPe4KUDnO32XqnnDRIBjAi1/1677tlcn2rU/9D71RYDxeQHWQbCha X-Gm-Gg: AeBDiesJ8dsejVrH6qr0sxQ9qe1zzLpBfM6UHeT3cRgm5zWsC+5Pzow7aTmZxL2n9rM IJ+ziYIvf1B1kpiMW266Bv2Za0+quHKPsSkhd/+1jmbAKUTjvAa08EXfQ+BU+8PW16fP9uuwAlg rFzDhshalFI0N3iBZesC/xFc6qEh2B56X8anrhI9dN49H5ZHTN/m8pqV91rQLtS/Qv9KxXJdqnR bAklPU12Dcc0Yuvne07eVUvLrtTzfYKgfK3SdH65Yk/p28ldv1NuwtCtuB1GEp2oXgPLztlIp22 dtNLebX0vp9ZplWHXwDIvP2CyVi/3VfHC7OpfkjCeh4EQfOpbYQCJoJbMAd/ISPxISCJmtYPKV3 NzrgrnkXqgDw+08Ebrirh7bxSyhf4NhapjwxWj6SO6OBaNGZPiyMwbiXo1Ya7R5+cf8llA4/nGx kOOK+HI6KYlAJfwgZm/UM0/iovgKOV6assarVpyflyhaecsMZepmwu5KWMwQ8B/Hze X-Received: by 2002:a17:907:788:b0:b9c:b682:83ba with SMTP id a640c23a62f3a-b9d7277c7admr701543166b.4.1776067372290; Mon, 13 Apr 2026 01:02:52 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5c981sm32155932f8f.33.2026.04.13.01.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 01:02:51 -0700 (PDT) From: Iker Pedrosa Date: Mon, 13 Apr 2026 10:02:18 +0200 Subject: [PATCH v8 9/9] riscv: dts: spacemit: k1-musepi-pro: 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: <20260413-orangepi-sd-card-uhs-v8-9-c21c40ec16d0@gmail.com> References: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@gmail.com> In-Reply-To: <20260413-orangepi-sd-card-uhs-v8-0-c21c40ec16d0@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: Troy Mitchell , 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 , Trevor Gamblin X-Mailer: b4 0.14.3 From: Trevor Gamblin Update the Muse Pi Pro devicetree with SD card support to match what was done for the OrangePi RV2 in [1]. More precisely: - 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 [1] https://lore.kernel.org/linux-riscv/20260316-orangepi-sd-card-uhs-v3-0-= aefd3b7832df@gmail.com/T/# Signed-off-by: Trevor Gamblin Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 66 ++++++++++++++++++++++= ++++ 1 file changed, 66 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts b/arch/riscv/bo= ot/dts/spacemit/k1-musepi-pro.dts index 29e333b670cf..774a4640f065 100644 --- a/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +++ b/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts @@ -18,6 +18,24 @@ aliases { ethernet0 =3D ð0; serial0 =3D &uart0; }; + reg_dc_in: dc-in-5v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_5v"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + 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; + }; + =20 chosen { stdout-path =3D "serial0"; @@ -77,3 +95,51 @@ &uart0 { pinctrl-names =3D "default"; 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; + }; + }; + }; +}; + +&sdhci0 { + pinctrl-names =3D "default", "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