From nobody Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 E1D323A4F3F for ; Tue, 7 Apr 2026 08:26:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550365; cv=none; b=JgPdqIA7pvIZmVhqQXY8ELOsYJO3YkWpiLYoc6hABuMkAi4F3e1os0JOG/cG/vA8/+ZdPbE5ljPXIcNbLEA0RmI0EVkdxa4ty+YJlwQ8nrSuyAGnQwWx8ZNBsxbNKHVQVW5vnQr7m2GCFDl2Rtf7z7gOAN/ijnC5nk945A+w8qU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550365; c=relaxed/simple; bh=Qk/MRdECLsEU42cJzI1xmlh9FrTNHcLigqTFDzeobEY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E9v4/lglrThQoq2anmEFXF0z/FSRexl+ZF6tFRUDNDA1ZfPCLCoyWtfX+LK91+VXZOuJqOqaC3g4NdjRdXeOlgDzBem1RBFF3E3uZ4XoFX6QMRPGgWMB8OUNd6jYBxvM5eanYl+zln5GQR5eo4Prz10EJXvj0o8aLgvpP+a1skk= 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=DWbsiufC; arc=none smtp.client-ip=209.85.221.47 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="DWbsiufC" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-43b8e8e7432so3844898f8f.1 for ; Tue, 07 Apr 2026 01:26:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550362; x=1776155162; 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=fpUyjvSyTbzy5QP1Zl/gUHmx4JmgzxN5EinAbVZD5Nw=; b=DWbsiufCJ5FY+lyfZO8kGLNIRjrc0p0zAI+BGoNDfc/UYembE7tArTUvJgzaLZSe8q FUVkWFiRiaHoF5gyCBKx/3sZaS4c7b66F/nDBX+XV/9rBmnNS1bdO5eAvpM6bmDNpi3a m4aYX22BXa8s0JxsNczEaFt0HJclqZu6hATUuCng902Qn3Dxs4BqNGSYB8XHkittFXnV EEEnSbINxp8B7NkqlPRhgsCCCydOs9SuSLjww2uiz5c2H7cWWMRoeIsjj4LnfZLV0gx3 sknfqNyoL3yc59nlTjM955QFg2m+Ft7H3XQuNTrERKinbcjEfHzfcZOQwhGE3ZH5QdNr Hc/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550362; x=1776155162; 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=fpUyjvSyTbzy5QP1Zl/gUHmx4JmgzxN5EinAbVZD5Nw=; b=pdkHFKPtEXI6sTxexHYq6RO8jgZfgVX5NBJAZR0/yyJ3+xyTY74fMG988KqspMnqQo DQsb/gTRbnEPFpZr/REYtQ/dP6MHttWYtbVg6HPncGSSQ9usG+BKwDlk1/aGMzyKB6mH FQYMthyU4A/Ur4P5mJqBy4Z146CjTdPXHFXAX9SSmclqpAq0ALqU8GsnhP6dvb+dZirc rri1m+K6YczGJssuC91SIXCibuY+CqdVN+yprhGQe4JPeahkRRkxTrrzPnZn7/AfNiU8 fRXP8QrNNpDrqxZwIeo88hfl4C9kw0iKIXHOWzEpBVbDr78AwsvbiuQWWpKBXD5rrvn/ JZoA== X-Forwarded-Encrypted: i=1; AJvYcCVwiM9RzXyL4KQoU0UVUFxNo4yQDBb8ODmYdSb2criDGMOezDsrv2mlG39+mdaVdmHf0JB+BcaYStVcre0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3K71uwB3g0CQIqLzOrB06IXqTxQRsp+VkrS2/qYqqlmYwTwcZ tuVlyemEilOm5NAbNHivyQi/2+B97c9la8/0AQalJbGT/x+k3DIznVzW X-Gm-Gg: AeBDieuQ+GfbpzpVqKeVEa340bb4yrI7IwgRqMMDhF56YlPMCxXBxdNNtSIeQ1kU11L D8MkB8BUoHjOW1ikeBXl170KJT90o66aMgvZE6+UyGpJZepImu3n6lz5fzp5Pa+w7GcXQHsP3j7 1UbTZywUE9tz3fUkBSmBOGe9DdPByE/xEq1WiXdBnpnDw0UJ3moffoFHfSp9IouLuqFqr5sAvES uqr5NNPQ+p0XKkV9cEa10E6aDwwaYGckBcp35MiWggORkB9i8KkRjVnPzlGoonGm7AQ91HSMgNK odRZcVr27eCrMm0FV6gYNI2wQva1mMcX2LZ728DonvwAZKNRE8zah4FU6ndQxhB+v8Mqz3+QvBT EkcKcBzOJrZUcrB8nJE11Q6v/GUerBanErzJjU/ExRVJ/rH00X+6gBnj8o7xEBoJX0CAWKDLDA1 WB8rWFvUebb59hqV7HQeV9jnHVx5hbw5KN5glUdXiImyN7xdt0xMjb4ZwvkSZI6wzC X-Received: by 2002:a05:6000:61e:b0:43d:1bf6:927 with SMTP id ffacd0b85a97d-43d29295ffdmr22629143f8f.14.1775550362070; Tue, 07 Apr 2026 01:26:02 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:01 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:21 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-1-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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.2 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 --- .../devicetree/bindings/mmc/spacemit,sdhci.yaml | 16 ++++++++++++= ++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml b/Do= cumentation/devicetree/bindings/mmc/spacemit,sdhci.yaml index 9a055d963a7f0cdba4741c1e3e7269688dcd5f45..932fccc609bf8dbaf3ecfe09d9e= 610852ac7afa0 100644 --- a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml @@ -11,6 +11,7 @@ maintainers: =20 allOf: - $ref: mmc-controller.yaml# + - $ref: sdhci-common.yaml# =20 properties: compatible: @@ -44,6 +45,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 +75,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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 8B7E43A5426 for ; Tue, 7 Apr 2026 08:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550367; cv=none; b=uyzQgn5a22uKOpCczJKSXh5WZi0fLRRvRyjs7VsRIo0danMeR0XiAeCXj4F6MPbxpYbVWAg8ZANJc3GEHKS38562PnYgrpD0ERUDYgJpSwQQywpnTXHKhIgaaQqlBonhf+t7PYevMmP9/EYtMPJSobqH4Tdygjrxj4/bq0w7Rug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550367; c=relaxed/simple; bh=pYJvYi3wGayZHU9DE3xysB2ygNEcNECfzw4JJTA9oS4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bvIeMHX2jAQ63EB9hpni+eg6YJSTpJvVKQh2emnnxtyvh0+zozL8/RgHF0Z/CGfKHn2N/bjLdnVcxgK9Nd63daAfPZkCOU7ikUgmju41F5vcs90pUCOfCChRb+QR6qJDUzpHIPFVLmABEOBNc47N4n/XuoymtMTfe/N2j4srAa8= 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=UosiLVRO; arc=none smtp.client-ip=209.85.221.47 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="UosiLVRO" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-43cfe71e5d3so4169451f8f.0 for ; Tue, 07 Apr 2026 01:26:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550364; x=1776155164; 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=peA/baapFwTx+WaActDGaVNbab5ZZYgiEvN0ikh1DXM=; b=UosiLVRO0f/NtnSvQ3BS0HsaRY0kpZZtGQdEGUEzT1MqivhX++fFHNBDAm2JNhnRkV KF+xqA+rXUSuFQPpHxiPLxNY/MveA/idy46IDYReNUbdkFxzjaBtOzphVOhePToeofJJ ecKUxV76J/j+uwywMRMs3BUGfkLj5Iprb+cPFrhZBsGTGQC3GB3hCKMKTdU4F0wNRCnx N5eTumlAccWimGNYnIJRruehJQirfLSTnL/005zHyyekm1ilN0PcQ29gg0+sw1KP2/n9 rBS8eBbdaWNoACF+MTJiPcBlIjC4gnzc4NRrhYB/gn9JKkk5KD6xBfMGCsVRayk1fhbZ ODjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550364; x=1776155164; 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=peA/baapFwTx+WaActDGaVNbab5ZZYgiEvN0ikh1DXM=; b=mytMBZCU5tep3UDZUdozDHDSfVQDwITGoGO1UDkv7jeFpk+nzS5Zj0aeNis+q+IctU cOK5fSCDG0xQicqG/sL1JJSfOKkym1xQmHnD6YhGIWBl+oG4oBWM75qUhDQmfsa03dCN fhUGcVaRMA1W2DNV9oCCnhtF1qqWrXlWwbxKRjRZg4Q+d9dB66T1DziKXswmEfeo6Z6z R6BD0VDskBqhPgFOQtLnwJV9np90RMNOvX6x1rs2W64mHxholIPnLcBT1ZDBrWpgUVpV MfZrW/22MqGQbfYDSinMTpXN40MqY4foJ7gOUAITA4xH0XTEDWrYQtQzRZDWGof1sP7b 7yaQ== X-Forwarded-Encrypted: i=1; AJvYcCVfgeuvseZRBizUkrAc//5NFD/cCTlxZpTxY2/412zHImN7OZzX+UM07/PO/yyl6ZSlOgDItXFLwaee/p8=@vger.kernel.org X-Gm-Message-State: AOJu0YyifCH1/nk2VgF3x7a3Ewn+zpndBl/K4+Y4KOQhXya7W39lqpnF DjMmIvtCXdPxYA+WlY8x0hllcS/CtMUPwQeZAfISPO0KBoe5mda6uud/ X-Gm-Gg: AeBDiev2xWDT7b7BSaygMxcuwEP9FR9ktGCTI2n7p/5aG+BU3XXOFqxcdQFW39wU7U9 stVwsFGkkTrxVZSe/y/zsv2a7xQAqfnpA3vAejN7Vbd5EvbNHNsWxkzQvjRn0kXlILBpVRvuXmu vGBcuxYiqh+Ctn7g1aZeai9AJTQBvqMI/P/G6NVkvw2B0FKWUHa5BjZrtsUkl/9jcDym0XNNiG8 ovrOt+Wf8iu5h0kR0Sy15xefPBSv0Yl36A4bbKviDKEmQVwbDjymxBO8T6qZHcN1IeKr55c1N2m xEiwb83d81uSPAd6iLf7+2FlU/lhBh7bxfAQRuyoJZF3Cn4jUfdM91dSr6RGxlswqY8+s/tIB7b XWjxmonpFCCWTqh7ADu/dbnk4SETEdNx2wJD60fL/Fei0lpzJ0aXto8Onfk3WsW5hXAz+twxP3j w468+E5IzZ9e8wpDN0cSkpDFzpEcmioCMNlFvdSa2T1tE9c0iHK0z2vsPoYkjo7o2t X-Received: by 2002:a05:6000:1446:b0:439:dfae:8083 with SMTP id ffacd0b85a97d-43d292dbc56mr23436623f8f.38.1775550363826; Tue, 07 Apr 2026 01:26:03 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:03 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:22 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-2-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 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 Acked-by: Adrian Hunter Tested-by: Trevor Gamblin Reviewed-by: Troy Mitchell 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 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 Wed Apr 8 11:14:23 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 8418F3A5E9F for ; Tue, 7 Apr 2026 08:26:07 +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=1775550369; cv=none; b=FDF93foQzeDH5s572/z76kKOJzH3eRa5ZiuBp/Dwtq+nGfOrW/U2Ulx63nDbsJSYcgva8WtvpTOY/jJ8ZfX019FwBms9ZaqeqEvK9ZDzRJ3h84Qwmp+A9HhytjAzKPUEwAwmBL3cQZ1i5kUsB0y6rd7hJIRzO3B0zZqpkf6hQ5k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550369; c=relaxed/simple; bh=nRShNwlonydI3xmzkTMo8kbMpMRZ4r+QQYByxQWL2C0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GxizQrnG/kuMT297skl3xukMWEZX0stUAD2cOTumrFxCL10cmz5jRQWJLzi6sY8QOqE0EPQVoJXBjy5dXzdwIFu3Maz52brMkhxRC97y3rq3gUR5JG49uynH2CY3u3cxkJHO/031NRUQa1iD2t3KTxYVJEVDCDJc5nnLLKEQ8vI= 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=FisXem+9; 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="FisXem+9" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-43cf8fe9c2aso2762630f8f.2 for ; Tue, 07 Apr 2026 01:26:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550366; x=1776155166; 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=U+Em78pG4MczTisQO9YIrYNt9KPWDr1XLJMXM4SwDxc=; b=FisXem+9PrD0XNnljD8G7lgQjqAIMxB9oYK0JnmabQxuGIg0a7qakkRZlWBrGxk+Tr rHf5u/2yvCb4QJxxdf6MzY/RvvkE5xSU+da9VlIhzJmHoOFYT1lolkVg9UUGATIYwbEE I4kUU1X42+5a2yqAwGCi0UDse3cBUDNH1GIBwsJs+V0IkNXU1SYC8wK9qtjjnQI7HrSc 06RW12Yfrkkn+kVko8FdoCRkF1gYx5kvp4z0q2Rzt+gIZV8Z84iZoK+PjCWzbKlr4FXW 9TJEBzFlgFVWjRi5T0aAWWOS5lZzjNv57geITQCrwodqWomMj90/2iGhJrcZIaUQl2Rs ierA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550366; x=1776155166; 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=U+Em78pG4MczTisQO9YIrYNt9KPWDr1XLJMXM4SwDxc=; b=eajT26ChFx2h7PMIOs6qpJB75+3rkgsQERpxhcrLiAPf9ZtRZEz8B5LQ8ewSlY0/G0 Mc9Q+3xlW4ifS2x0xwHQCIsu/mc4XqZNmIngPUjg0I2iTUZcXXsmoiVD8AJdDxsUBFIm apI18mI8Ovn28m5adqPm38NYt/Wkm5wYWseVRytEfoX2mjBlGuhvlVXLPUBJHdesIiii CnVux0CG/c3nuyjcBEobVtiTRiT8nrH/i8Ivk2h9jR/PA+qpDup5W+QrdZ3+M/fQeFxG yt8cphFO+GKaXJuBGzyXnATMSZEusgdPaK0uupjIB1SMZcBRtSVNUmbffc6MU1WPmBjh Xw1A== X-Forwarded-Encrypted: i=1; AJvYcCX8bNv2I5YTMjFWMGqMuuEti4lwYKXRNBU9h0W4CT5n/o0UZQzNg+DimMN5g6eLcGO6yldrMKOkm/XYLkY=@vger.kernel.org X-Gm-Message-State: AOJu0YzzNoNIVGTWs6trr+jJh3iXRPT8H2PucaomlhHbrs3OnCLw7Jet DVFhML5c/6nYg+bXnuYdpuiJjMopSDhcHCeOuihJAQZqbrqTD9/rJscz X-Gm-Gg: AeBDievjMjKDkZkJk1G8oTYaZtO6blwycrZK6uoPw2c3JlrFmeq+jL7D7U8aoE9gVX/ fQYbMpXcBRLQpbaSpIG+K8CTx9uX2CiCdWhT5oEw8YgTNtqCkXipL9iG4BnIBRm6GiAHy2nHWIA X+Gs3m/4n4MAlEctsN52Pvf16GlCT7m/KFgfeWc6bdG2IL0TsIjzP373z37WKGMKMaHTVqqg8dm kfdV0VbXXayzoD8rH+sqRzBrsAMj/QaeumOL81XiEjLk1c/liNA/vLiVFJjzOjAKklF9d7kXFJk NYFr1mnLW099e1TLh6iBlXdXAIbcj+ihBQVEQ+MV5LmxFDSXGWSjwYdNOOxsCpUtleEoPJVCQjD VKWNzEApw3SGE3ySHHCRsrWMiIz6/yCvCIzbqtN0I3OmRJoRxxEPVLTNSb3Z+6hjCPris9FeERA ma9RemT5VA/VAYEbdt8bddAb7Y1+DFGp59GjqzjRicicvPMgnorTbBaa80Tpbk4Kbb X-Received: by 2002:a5d:664e:0:b0:43d:4883:192b with SMTP id ffacd0b85a97d-43d48831945mr2963140f8f.41.1775550365599; Tue, 07 Apr 2026 01:26:05 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:05 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:23 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-3-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 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 Tested-by: Trevor Gamblin Acked-by: Adrian Hunter Reviewed-by: Troy Mitchell 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 0dd06fc19b8574ae1b00f7e5d09b7d4c87d06770..d9144537032a51a12d7480885f2= 47f4c66583e59 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 Wed Apr 8 11:14:23 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 165253A6B63 for ; Tue, 7 Apr 2026 08:26:08 +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=1775550371; cv=none; b=RnkU2RGUl9nl17dg8L70jER1N1dPQNRGl0tVi4Tka398t2SYLkXQEqu4vKmdS7ObXKjsIszF1KOxQiaTr3j0WhP4m1bMmAjqV8Kv5dqog3yVumIAfmKrzzrqIN3RarvxC++PPm8kebQFTz/1d6vJ8IGlWziui1fM4dheGmuyLT4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550371; c=relaxed/simple; bh=fQ1KMTaWctmz5D5E3ldpes5nl/8jf8ICxgoE0gxmCaM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=knuUsOSb0J8YihCjMVLJAsCYjVLdNjV6dIekdv83yFt+XfS8gbpYx+rPrgXozP0TlFZFf0qJrnl8Hy71LiZ67TYAaV0nm6Lt4bX7S3CUEHlVeqf6PA39AzpMEGOyRU1mjyiw6RJXYUy94q5DIwkw27Md+7KxPcbUOlGuigcL5gs= 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=H3bPWrzB; 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="H3bPWrzB" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43cf5d14d6eso3913376f8f.0 for ; Tue, 07 Apr 2026 01:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550367; x=1776155167; 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=XNCE/cSRi77G3boIciBEAZ+63eediPcSn1mPCDdeY60=; b=H3bPWrzBa/Kl1UX+AqXb4ClYFdoF82QjBGIcJKBXqPQQCzHcmhcNXm1OzZQoQw6gkp nxsyxKtgNwsDP2CT9sKfdaJVKa3+FBYlBurG1IwW9GZVliaxNohIs7CvrM4lHoTcARlo Q5VzC6sjDySyzWNucwZqICp5OBhD1p/BRu0ndNPzQHxVQDoLdH18Iw8EAKhTBg9JQcBq 59t4UHTLwyrtAL9eeCM6vjS0Twwq/y9ZLIGZNfUS519N7Perj5XivlLK6EmxEaqB7kku 07hEFHEyRVGOvhtEst5QRzXnwwHT9Iz1Bxza8K7JeyI9n1ytNpoJHIced7EHIP2bNNq8 BvXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550367; x=1776155167; 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=XNCE/cSRi77G3boIciBEAZ+63eediPcSn1mPCDdeY60=; b=mFPWWCCJG9z/CWOX5VHzy1Z0hM0TMydPhATA7xb98otQw8mXi2IxXiy4NLYYznplBS rT9GWeSaPd544X9EbZtqxVj3qbgOcDFlmhT/D8fQV3m/cqlGr87k7uau07VURDvGCVJu oV5WWMiQfUiO6l44sTk4f2cuhOxq/ErnRLApPnTNOnzm62Cx/yW2Aa9VeD9YIkKTJvJn K+jm6kbR9gmq35lcDMutPmLO7DtSexjkyUZX+qS+rrW6tfARpXJoH1ofNDC3s8/q2DNv Zm2XazuAPdYnxU2blqJND1PjDwuCQjnzW+YKtZ5WLgMPoQWXfMSeSbhZtbwqUDOJ58XH 90Sw== X-Forwarded-Encrypted: i=1; AJvYcCU++8kAUxsDt3b5MaNTjJ8rLN2VdOevoqkspMWUxp38mwMknvmelTlYquCMWhFUgBvy9G1qfXaKwAPSVJw=@vger.kernel.org X-Gm-Message-State: AOJu0YxwRbsZnHzbZ0CUyUYfDq2dcmKhMvgdTUYy0TxLUlG4mxej44Oe +gHqksG2VeDApW/sDlAMd8rKfFShaILNpWOMSBB5Yel+n6VMejwZm4pr X-Gm-Gg: AeBDieuTRw+7e3NGzz7hYmwauGOwatozLdEBYu8HpDUiZ4WyDaUNxaoHT6binWnSXU5 PmHgpriIlowMhKn6CI3jKbvdp3bqBu8VZbkyGqhuntEX9CGZOHwnLuY2ekajCPuTW0yQKtZpQor 1qfrqSvptq2dikr/z1FO6uCuWlUqMgeEqmvXh73MzBxf+g9riFrbwYSywvwK6U3AoPJrqmN1JjQ kxn5ZaRuCzfp+0GUfh4eanh/nMCiD6jnmRe1x4KrjqKFo3l3iuQo4PMbvl6fpobknt2F0tWmTU9 PIW1YvMLTEf6oR5nHWk4ZeukC4FO0BcCj+Zhu8j40q1MTPAkadhh8NIkhaTV1JZjpeGB2w0P2mC VSSv9vw18y62Erol7OhAdCmL2jVRInBqb98WDiG4sPIwbDLseXBXHfCIWauRCuqmYeZ96wUBzxa u7rwFsMLg+w4/lEAKPHTWlY39+hiEpyYesAKFhkJqXC/dmeL0S1ccu5zxt0CKnBnU5 X-Received: by 2002:a5d:5d05:0:b0:43c:fbcd:4b4f with SMTP id ffacd0b85a97d-43d292e800dmr23860630f8f.47.1775550367372; Tue, 07 Apr 2026 01:26:07 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:07 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:24 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-4-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 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 Acked-by: Adrian Hunter Tested-by: Trevor Gamblin 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 d9144537032a51a12d7480885f247f4c66583e59..37b0911e7cf2023ad440fbdbf50= 4821457f061f6 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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 E88223A6B96 for ; Tue, 7 Apr 2026 08:26:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550373; cv=none; b=pHykwyz08CHNRDkQa/cnjRR2iF9SlO7UeaRag+Eukvy13LQrh1NKLIHvAcMjdzvzXRpaBmMmuH7hYwtm1Vjdipw5urJ2ChkASmdnI/SW/nmf6SXXAL05Rm0lEywy2cIorqjnuHm+UjRl3Mwsz1/2PDlHk9JYkWmCa+FuXRu4Gr8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550373; c=relaxed/simple; bh=srwvc+G6b+Bd39d0fyAJoHrONrs2GTTxkVsJWJE2N5A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RhnfJDyVsShtU6DYvN71hGnJ2YlfkqQbtc6ECIAKqg3URcab5dTb720o7nTNkc5H5N3nGWpgkOpJZTlduw9bpfRTkwvGXWWOUIF5ZzN1UY8xlRoAUuhoAoyqzjzZRIeTCmjs2xbhz8CLSQzXFiagjtQMVRbeqtD6aQN6JiFluGo= 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=cyyITjf3; arc=none smtp.client-ip=209.85.221.47 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="cyyITjf3" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-43ccda008cdso2867626f8f.0 for ; Tue, 07 Apr 2026 01:26:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550369; x=1776155169; 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=u4Odv7xUvMFtyNhPTKS3HH3RP8ayug8koOlIGuCJxko=; b=cyyITjf3D6VMZ2BpCR1GYjpNOWC/GkgM2PeFErLBo1je/mHnakZ5TGB2TLWPsRufOh 62OXFRNXXZDYeXj9s7VbD4YwjNOiktC+sFeH08l22uMypXnPLakGcsjEVOjNJZoRipQv HKwJVGwMkonDZ/jJOtW56qgykTkIMf10XonXWO+aZGUi/FiNNMF69GLnde6awrXNdnHO bGaZur5aZn9CXSsJ8IOm4JEnqkA6yiLmzxwz1RUofDyl6KYzJl6MXfTfXhW9w7+Zz57s PYWXsfLU7mgLy/E2xZUmBAXsHZRQZYmOO+SBIFHQEIoAPbsB8h6tPYRNrLagm4lUznsE M8JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550369; x=1776155169; 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=u4Odv7xUvMFtyNhPTKS3HH3RP8ayug8koOlIGuCJxko=; b=hGEOh3WhfAFGBWKiKqqsc2pzk5i+MF36iwNRyDeCuoxepe+DKnK4rX2Zvonf6ElRGb h5CrTmy2mIIbwHnw9XmMmjL/6DXMMTmbMmGPRg4VHpBEM0dO9kX+ssR6CsbBAOUuoRYJ Vy/HvU6NB9v+Ui82lP7PCzp+lPuiT7nFKrIB2ZtB+NQ72TWpYaJMysNwcwvbd/cHZ8Vl M3l1vM+spGIP10MCDf7s9LqC+FBrVroOo0kb7RT4idUHEU08Gh/RmvDP8DZl5g55YnqP PNe2I+K3L+CwY6v93mAW5+4G4imVXK4TJHNkj1i673haTvR0x/QC09JeEYmW+cuBgf9y pTpA== X-Forwarded-Encrypted: i=1; AJvYcCUU+mJ1bowVaEHP3PajCgtLnpDYAyQMniYc67bier1ysLoyq7Ll1FOLYTL/tui+DYkPy+dwoaH+v3aSMLI=@vger.kernel.org X-Gm-Message-State: AOJu0Yxr0YQH2Tz/Fw5oeEauZOpG8lUIcti3eIz77k2Sv7o8k1o0TeIt q7KAh5UEHwBJXakCye03S8aWzIrOfURzctgbjLn24GTiZtTpeSidbKZR X-Gm-Gg: AeBDievZZ+Sl4Hs3nRcl7hDmw+rfkEBF0qP+bcJLfR37FazIq64uv09uQe7omBWWAJC ljuAV6DOskFaSgt7UCpEdOs9qynPj/vIhpuB4QB4As/P1nKiNGnNii3oemb3hO4AshbH10QXcYc lxt+GLl45TaRDkLDA4Ffliu1EMQRFIFyaCVcW+YSdxw3Q/8ORgOtctQRrbqxIm7gdg+fHAzOwti Fbskckf49AtX5PxZeiRkb7ENwSfAE1WFEqREpeZgc6o80VVWVxPkjUl76noaRdvdfM/5BHasgOh odeNCpBc2HCqf7uAr9mPycNzn1VFZBsU8zKR0WMSShsEO7krl6bVvQvsMZy27NBeFc+74zVIrjB X3jnMVMqGHrZKNYN309sYJkQ9/5CBhgv6wvMFRQrYJfjNfoXf82zRpaAjCu7t3jUVmh2wmAXT0s kfLu377v27EyOqguoyXN6NpLOvTOXQL4qABeD0MfZYX/WawBBbjbEK1EMPX9IgH4QM X-Received: by 2002:a5d:5f82:0:b0:43d:439b:e102 with SMTP id ffacd0b85a97d-43d439be12bmr7817683f8f.10.1775550369145; Tue, 07 Apr 2026 01:26:09 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:08 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:25 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-5-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 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 Tested-by: Trevor Gamblin 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 b13dcb10f4d66022d27307de73a6ea3287e97441..b3c472a0783b99091662d2d3516= aa7fec4b3c3a3 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 f0bad6855c970a609253d4b0ca2a4fcbf06bb8e3..28949f804610c60b7fa89d95750= 7be32e3b49f34 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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 C3B2C3A4F2C for ; Tue, 7 Apr 2026 08:26:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550374; cv=none; b=qGRIjrzd+VbvojLsq6WQHKH+AfH3FUjAak3Lh/H11szQ3lHwjKZdoR5SYSNuRzILc/ZqAqIfFsbDOgefHEbfSbuM8u1yCZFE4lGWTxi5iyZ32NKqjt2iABYmas0apR8hXsxJTOnX5ChWWZ+0J8Rwm0Ikq7AIOKlBfxdIxNeIG0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550374; c=relaxed/simple; bh=mH1spPeTCHz8roINYMnma7FI82vi0r8vKKTb06yrJYo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Fr8xsq0Dn+ku5YXOYATdqCnKwx+qZQVOSYwLPlkX5JIFbLz+9X72HoER5rotqxiSr+3jfBWwQlhdiYqkF3bZSEutqm0NLmvvycd2VG0J70WTM8/szqYVNQVxhqW090QRjQAAsoO0K0dLByO/vMwmFRxaTqH56Utg9S9nqobzVlE= 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=V4QI29SF; arc=none smtp.client-ip=209.85.221.42 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="V4QI29SF" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43b949bf4easo3681654f8f.0 for ; Tue, 07 Apr 2026 01:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550371; x=1776155171; 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=MilkKS52ju+/z2QrTRIvbE7nHZSA0fcfW7w+lU+2hFc=; b=V4QI29SFk1uzpQ7JvU9GYVVyOvC/8gjwaqaRttcTapoLEeojT4FSsh7KPLLtLmjHeh KfT1vj57p3aAG7hg4uslDg2tPjjBxT/osppeGJD+NKdBdcfP3TXi7I0pCpopzZb/9tKM EAX6/aLDdDIlAAnTge/FwROFXfgqvj5OPqKFxM/+9Ssh/z1OrqOhgReatJhBdDGaSiwm ScAZXIRziyMWHhS279ZNxw9hS57e6eyVaLcpxbOasiR9EdDhJUQnwZP0+i0DILQCMd2j qLgkrIQqC4ksiH6B3IyOoyJ//CFfMfZRDErksIvYBWExVRw4xYJzewTWR/3x6EC85+J2 D5/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550371; x=1776155171; 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=MilkKS52ju+/z2QrTRIvbE7nHZSA0fcfW7w+lU+2hFc=; b=YyvfwDfdm1KV+8352hNmjpvcYDETkDZSD1+tjy9fA1rR8dp5XdwKv94qWcIaDmwR72 hvmPKuMGSlC7RYwhQDcmmx6Rrc6te2BD7JbxSqtIA131pJM2A34tF5nQxu13CGXwtGE9 lqoj4z3EUYq02qnfzOLZEGaX1Evth2/8+qpY+UpAS3VUj0NSmQ/GoOXf0mMj1FIioH/Q /csMvDxuWfdKnCc7X2/DZ/SQbUJEZLf9oDMfKFAijRHZU8YufM6z2N6HOSSc4PjfbrbL GTZ1JXLWzogHZtwby6Z8OlYb4eN8kGwm/fB9r4oQluEO2+p8p7ZItZ1CISzKHFoaJ+kB pPkg== X-Forwarded-Encrypted: i=1; AJvYcCVmZhWiG2wlJzFlUKU/lHDRix1CO7wxVYWorxmCsGlio+X8de7K83Xl4af7zh2z33sCi6ASu/ZXOrXT0EU=@vger.kernel.org X-Gm-Message-State: AOJu0YweX2w0zykMG/gU3F5aERnjZ38VAX3+vyt6//dOVVY8CHCEE3gn WiXxaGphe5GojfZT+rPCpfmrB8HMfj/SaQHoScaHUOgFQZta8mLP+7vO X-Gm-Gg: AeBDievHkiqqK5IMpS9qk7zHjz/ZFwBnFqRQaQjzug2mrEQq6b3+jUW6StepfzCH/vj h1sMRjYDekoEJdQxJXG/3ZGymzj8b996hFv4BolZRXYcOs8fhvUth+yl7xL+F131P5hzI/YhFt4 3cabpgR2e4XyJTbq5L6hW5adimqNpeXWTZmRlw2Kb8OKti0qE+58YIb+kmvyQ9bCA/wEqYCGiT5 m2yM9Xi6bLtAnqnJso//riHgKY3k5ccRNlC+wnugDugOaR6fdWqLxk8YTPfZgeh9B2cDGiWZig7 lsAIIdyticIqInIECd8R4WwaHL/q4AtZqkx/Zc/1tutChxXt5hJoQSdaIDtRuYNlEbrldalKCCk f4GX/d9ffZTsidAwFMtY6ZRSy5KBY0o7G1Ozt+Jbi4g0xmexV/ak2b+JSfXJyWJ7D86vaggLSV8 d9euPONNMTJeP3i49MSGB8dwXjC3Ox+V6ZBwsK8Z60oK3ww0th1tdIoMNfEsNbA2b2 X-Received: by 2002:a5d:5d0a:0:b0:43c:fac5:d382 with SMTP id ffacd0b85a97d-43d2118dc50mr29229253f8f.12.1775550370963; Tue, 07 Apr 2026 01:26:10 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:10 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:26 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-6-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 X-Mailer: b4 0.14.2 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 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 7b7331cb3c726f11d597f81917f3a3f5fc21e1b9..9c417a483f6bad6e60617cf8d54= 00ca079588726 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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 6B8E43A6F1C for ; Tue, 7 Apr 2026 08:26:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550376; cv=none; b=Mo5RZkY8/+cZIMJ8xgSlhSUScVYkM+NzPvF5NuY0tMA2uk2nAZfydPLemytkWC/38Ls4ZcwJRpvCt/alP2Qok8DmU+ZYr1YjC3tCCdqwRSPqoXgws5x+1oxctssHOLADa0OP78/fXN/GKta0NfY9M5aPghVu05FxAeLL32AJtzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550376; c=relaxed/simple; bh=KJIzry4A4nurV1BrjZIQd6f00tZQA/BJAngY3gGarwY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VXDxI4UmUrwV9Wl0KeMHp30tiBLWLegsobqrmURmXQ3RZ3HRnP/PT8G/Ds5Mo6OH6/cNTF1ubUh4QgfWcJETJsfbUXwin7K1qX+QaZiXkK2RWn+1FmaTpfJRehQWOrKKq5XoqHElm7Zhg5dYZe2Jc19O+vBAX+U6HD+tI7RPov4= 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=L7F/kaEe; arc=none smtp.client-ip=209.85.221.42 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="L7F/kaEe" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43b87970468so3702847f8f.3 for ; Tue, 07 Apr 2026 01:26:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550373; x=1776155173; 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=KR1DjVt7yf8BAFWkx8gfMXo+nWfoRdvH9vj0RlDPuXA=; b=L7F/kaEe5m64Iagz64rRExv9x0uTrL/aR5iFsS/oWJvFZ5bkc5BNVRPffwQJQHw6ep EsuZp32ZlLMtCmYI3Traza3OUzNLFdvtUP94XRrw7qgYayjixVZ+1mqGVYhUdF1FNoEU AqRkRu7jyDQWv6TxoOYG7ACQjWWxQUbp6unLrUMLiaVVw17J3lWpC3tq3cuVndcX4/Yk Yj/hS5D33qHaRwY+4Ty3/aj+JEQLDn9ZXLsgyRR58F/dMNAMcNA88WUr7779sLtS8fiV hoNWDKrrK72zh1VUl5sd893JR7/H8HdGeUIN1+IThKyrHejvEjoegb2xW1gF2YIiNsNg zM0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550373; x=1776155173; 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=KR1DjVt7yf8BAFWkx8gfMXo+nWfoRdvH9vj0RlDPuXA=; b=VVI7YXxVNe+ndwYqmy2RDUcnf4kvutbbTO9VA7XDxGNFRNOm0Nm/7OGMvqnIjguE1J gTn8EWwWKo3p1253TC0UZD86eUic+l6h2TuuirnaSbjoba1qUdK7AUdlPAP3a+H94lfB OJKsiAvMpInBzC2HIgPA19TBPxdSewjC9Xxl/0LUO0y0QhfWDL8RdtXcu8JvP33iXs50 82xbw1UPM+H62VesMEeoNXSbEcoQk/gfq8i/Pc4cl0vjEXExtJzzJIcojYMYNqJY711L +csKU4nOq1Ji3TGOaY4zQWgZiV4PBuL1zMmg4oDCXjJ0F0OP7FszcSjE84grknjJOVMY mfbw== X-Forwarded-Encrypted: i=1; AJvYcCWHuwtSnno/6SK/VBqSofJJ0wfpJgpWTnC/7ZOuMQf/gYl+fluCYaQ9QUYgmFbuL2tCux9CmCNhcfAi9jU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx77wFyMAYoHOT9S731y6piMu3tnLGeVml2iPMRx+EJQaIW++BN tcA+6tR2U891uvaf6r0FzWp+HX+1TXyn6oe1tY4DLyOuvHVJOfcwHCCK X-Gm-Gg: AeBDietnG2VYdAyKlaVlzRWONut4jgRGaf0HI4ArvNy3Cva0h6joeJFHIXKpqCpp2Kv 2rrZGUG/Wz+9IgTg9yrf6Czv3VT3qq1Wd8ed3dtOko8uI5ITVE54MNLUv4FPZ5fTRY9Gu7WFv0w LSjUWi3e4p2P4/m0GyIohM6Km7/4dx1wR/J584nDwUCYwbvyPh5IFJrpUezn2gekAhtxZmDzgeP 1K6M67720YPcQ7xnb2yozXxb8z26CLd31yQ+55LVIeqENdLl3X8fdzi/iqFnqe9FenPmMltzQzv XubSKiuqf5p8DrIH5vMInUKynsZDJH9qTC5H78W2p6bW8me8j8wwGplon3Zt4q+8WOEN23yMAOf Oy6aIDySrrp8iB+qHbCZAupRSQqR1kjNxd/irlsECd1xhHmz9zdvzt2qYvDBxrSy6AU4g3/7WGp V2ANn1Fnibxf1Vfgnw9fgXMgQagZnAgBJ4QPro0802i5MDG3l1b+uBLk7vFKFOEtlqLkCyjgqVV c8= X-Received: by 2002:a05:6000:18a9:b0:439:c2b6:d5d8 with SMTP id ffacd0b85a97d-43d292db1b2mr22596880f8f.36.1775550372704; Tue, 07 Apr 2026 01:26:12 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:12 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:27 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-7-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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 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 Tested-by: Michael Opdenacker 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 9c417a483f6bad6e60617cf8d5400ca079588726..95cfb4681ced8f539693717e718= a3633c35989d5 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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 228313A75BE for ; Tue, 7 Apr 2026 08:26:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550377; cv=none; b=uVDjGueSqvoW3UfqI4mlTytf4OTc2y4Jx0u9XTFE4TsOJ9eOB9EY8hxCDthHQdrS2meY+BRTUExArIV4xFa7HAIip37MOxB3+if2eU7hL9FiRo9Wv5Cgz8c4R2F3pdzgOnUnp5XEQo9aOBzAqXy7L7oOCCn/rV+Keq3LEAhJ2t4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550377; c=relaxed/simple; bh=P60e433P/IRmmrRLLAQOHXv5D73fLkqt9Yaf5YISuyk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YIZCzZuisEN3u8CxuTRDoWlcFsE4+rwHZ6YxybTRULRB+7OTJuBwUb3KhvJjoD2Hm8HNoKOY74bGn2I3FqkrN3nG/jbSCRtZ8aTm559FPry5IeU68lR9ndcRultTKDsH0y7qPR3NQSTPntk/eLjkAwetvB4hfhD+Fmk6n1+rYIw= 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=fVPE06Rn; arc=none smtp.client-ip=209.85.221.41 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="fVPE06Rn" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-43cfce3a195so2869011f8f.2 for ; Tue, 07 Apr 2026 01:26:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550375; x=1776155175; 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=W+BJYlYfkNO3bzgJIrrKwScy12NnJdvPgI8y4TWtzcM=; b=fVPE06RnhB+KnepdJsMxqMRxZ1cc4pJXf58oO9OaoFFgt008XVkZmGX6GpktHqHUA1 uvNrGpJATNSSBNGiL5Yd46FOJlm3Ym9U+un+RBGihOKaRphtj7KWHx6fmkEAgZyT+q/M c/nXAcvAacFfj1ptwL7O5X4RWJniYOeUwDvcoI91lZf3s45o/Oy5R24fatk5FrYpn62q YhJZEpZ+3O8ejEMpyHe5O0stXDkXM4DpXORn9XW+JglT/FRcusK/fI11AkJu/evtrzxH QRmphIp7LNOlcZZ0AEGBYuYcx8w4DYz14QiADWr/su6581m8mtjJ1gxLlJ+8RAOo1LuW r+3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550375; x=1776155175; 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=W+BJYlYfkNO3bzgJIrrKwScy12NnJdvPgI8y4TWtzcM=; b=OIdvmK2/dExg8Tc42wR2rmsD5hYzyUbDkBc2sfw68zElIsA/0ZZicwP+QQfO+t3gTD 0EJYAiCryzsXdb27q65a0ZzvNSQl3zPFg/mBOtJiU+bokbBrbeDkRbBUFpAtRmskLDUn KokN7FjuQTgUIB5CSTcg6uijRvhqGZ8DJ+/i+2RKCn8zlD1wBbOGXBRqr7mOH3m5pwRA 8+ixurd1Z0h589vuUWn1LwX9M7rJ/5QtdeffjZJbEmgw/20z7WREIalYgLTkbvLWfWbB i01vYU0Dd20h72goaQaMrZMI5AJDshg9TL9HS+od+Hzyj80mwWO90tZP+6zP5FdsQXyK w1Jw== X-Forwarded-Encrypted: i=1; AJvYcCUM90XzJn5SjzLnm602rETZ9LW/yHB4LbEVZZ8pL9XPAxJ8f+AuCQ50n71rDVnos1tRmrxfoX95wtT2bnc=@vger.kernel.org X-Gm-Message-State: AOJu0YwiSlq1RPLmr6CkfDYwbEKlC6BUEbRZPNFfoomJo5EyOjfG9v+U 7G1sj1J3u7sK0Y0UAvJGbli8Ep/7a02hd3HDn6+VPz+KEggrjhAoRwy9 X-Gm-Gg: AeBDievUbR9K5LDTItAG3EJBisIjaEb5pRFdT+hbY25srkkPZhixiwvYk9OlLejehAH T6zvAlFaDivhPEMHm6UZwvNW6pYMk4CSK2OFL2vrsI0Ic/2UfIx6tlhcPxU1Sa9SQKBSk00Krb2 GHkwy6PQqXplNY7ys9WGOTe7seLAwuVo3c70vjNjTzT7bI6HyUrSolzFHM0hYqkut+1i4AQROd4 LzPOryi517rnS0DBN6JsIYf3iwwYlauu3Pp+/0FpQlsom559gLBvr1kWslRhJ4ZO5SBcGpIpFas /RvzCILCHqvaBf1W00CXl2ogTvXLsn4ACuL2WEFoT+VnwYiv6LYsjc1cFbXl6nMbOhmWIuMJDLY 0b+fcb3HJxwcd9+e95evzvNu7CY4tn5ffEwt6Lln0e32Kim2yKNDeDwX5lq6RnCbXcN2kdUWG4j aqwsiCubwzqAEnKZv7L5HOfgJECwvIOWVlnZ16NFZ3gL6sLIbgA5eNzYryX+bcMnK3 X-Received: by 2002:a05:6000:1883:b0:439:f605:afde with SMTP id ffacd0b85a97d-43d29314e93mr22324658f8f.51.1775550374535; Tue, 07 Apr 2026 01:26:14 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:14 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:28 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-8-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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.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 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 5790d927b93db350c8f53aa0f314183b3173fd76..a7d88564630f3332270ba5fe47b= 078bb14f564e5 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 Wed Apr 8 11:14:23 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 30CA63A7F5D for ; Tue, 7 Apr 2026 08:26:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550380; cv=none; b=lkFidUShbMwpKJqubO62ohCrBVo4QHRIhnETnQwtvIdMAfLLNjygFMKCxJVXtUd0csZtc7CEAGbStCA+Q/YQjFHEC/gUj1LdlK7kjqJjoBzFy7tBV5VxYcCUlTHDSyHqg2VJ1xO5dm9Pg8dXE8BWYlogPGWCskew8qCs4wdSQ6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775550380; c=relaxed/simple; bh=yFIoW1VgE9eos0drC7//IWDtDDzHIJ65CgsEt+Mqivs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BrvpryaD+fLdnlIHC5A+IvSS3Qfd09ED67EzV1YZFJmNs0NdxUcvbD3SadczmGgRSsTvrZqMydmzeufPRqMjyQSaLlNa/W0QHkr+QC9fixcsCX/NTKssp0OqXJ1HV6Pvd9GNDZPWKSuwHrQL98oBZHbVKTuSls5zecPqPIYx6xo= 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=VKu1HGC3; arc=none smtp.client-ip=209.85.221.44 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="VKu1HGC3" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-43b949bf4easo3681714f8f.0 for ; Tue, 07 Apr 2026 01:26:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775550376; x=1776155176; 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=kN3bcWaJsQHhIwZ8SKksLHpWgkJwI9t6gAAiBuFLbmI=; b=VKu1HGC3OAH15O8CsrURvx9Mu3TOHcbLL4dwTo16iznbNCbrFv/7avKMYMGqXzcxwp BKT+TiEu2rtaxuP/coCJNkKndTN5Osg+cJYpi71deQH+p7YARXAFyj58L7g3ZrLuQzwV wgkW6MMzgzqhAac24xw7szhGjfW95n7IOrqLJNPzVGaTCghkgzDoEo8oVCdHPxinjujf va5/24B+JDJhrW//mP1zfwtdrWm2OwhJdCIopGdSozW8M+lJWxjRfa7UZOmv/z7MRsG4 DdGpf0Osj+rts48AuY/IPo/6bDAPgHzXNFi44jRBFlTQ/5Wz8Rf+0wIKGCB7th5XYG+J r1og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775550376; x=1776155176; 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=kN3bcWaJsQHhIwZ8SKksLHpWgkJwI9t6gAAiBuFLbmI=; b=jFDPGGiGAeFfHLA8Gp+ETn8uzKvu9lty0zC8cHoSEtjo4hMiZqFVEqTRoro1UHo0zu NkHytovYsT4eaY8/02fPa/QvHuUMdV6k12flwFhEKLicPQSKX0ndzH9rGEHEN0hhrNC4 Pm4c1By5fqh7Y884vIwFZl7eFBnwsxVywmPLWMzJOJByUa3ppfadNto04AvWw8U7++Tm OvwkXzN6GSXYBvje4F08/ZpmfMagJ6CvHN75CNpF5fMSBsNywNSQ0SfGxjnnQ7k4ibyA 7EH/fdHqwesr0iBH5u9FKw8gQER3IGtjrBIWrpBtnJm3BDxx/EmcUGBsbuDOaiLa9/QC z6Lw== X-Forwarded-Encrypted: i=1; AJvYcCVrLDtGWcowzkVUENO/fhnx7yfMt4ss/9osocuh8igQxKOohZTrBS+7DPMZjYxt1bxv7oz9wC3+/uprx84=@vger.kernel.org X-Gm-Message-State: AOJu0YyMdPvXpu3g62+Tn+DtpkQZ3lWqOg7oqM0OrItqLStBNlPJPBSF osQgr/eKcZd1FXut2jVq98Sqcl25seZR52vUPCN3ZGIPq1OxhK7STTyb X-Gm-Gg: AeBDieuqq1iYz0x4F19QCtJJAyvNh4SQ5G1iV+dIBscpse6dUOw6pVoAhqBeTvStNie I4djxu83FzYsHOYXjawE1rjAY7kVZuhIReww2wkujCdbULz3ocw+YjjXl9jf95ESjKUPISaQVAO kXIWv2ISUxa9jjAVLA+4kBu6WIEnl8FmXFnSujjcOL/nA5VdixomYUAxIAVEt1XQkx+6Ri1jqk2 MUUjYCRQuosv8AL3dFTS3h/8Nof2H7YtE0ZOYEnPoGhaBDZGWG3SrUS2UkcWvVHqHL6BYtP0Xi7 abMVrp5hL8/XOlbwBtq4PESQvOzYBhMxbBrho/Nhjq+eNtvkoNIxg3LeP0iF7hCTkiHPfiUXK/h 8j34h3hHYb0SxF9fXkJ/KxolHy+GkMIPhPKo40SsP7qd99jPLHCxWzVaYSmUXtZEN1365wUks5I nuruR/A7sfFSS1jbcwgbYcSz2OzyiysXoWXwpEZl2zD9LAxmm0rvEf628K+0sA6zVa X-Received: by 2002:a05:6000:2908:b0:43b:9d69:43a with SMTP id ffacd0b85a97d-43d21171c88mr28578084f8f.8.1775550376299; Tue, 07 Apr 2026 01:26:16 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.239.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e4d29bbsm48669958f8f.21.2026.04.07.01.26.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 01:26:15 -0700 (PDT) From: Iker Pedrosa Date: Tue, 07 Apr 2026 10:25:29 +0200 Subject: [PATCH v6 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: <20260407-orangepi-sd-card-uhs-v6-9-b5b8a1b2bfc8@gmail.com> References: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com> In-Reply-To: <20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@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.2 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 29e333b670cf0a5c4ed852668460db475b9c44cb..774a4640f06562b5632c510e896= 1e3d8f60a3b81 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