From nobody Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.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 4AB543ACA74 for ; Mon, 30 Mar 2026 08:38:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859907; cv=none; b=bYZ/hBypIA19ivkhz2azXC/qjz52Akl6rJ5b5VVOwCXOljUm/RUVC1NHXCaWufhj+S1HjV+4UrJz+5sheLaZfOMvQjXOFGPtRwJym3VjW/YlLo/O9ecKgTFcmHqmSNyyja5aLdmh0qvcePS2zUQNH5XWTIX8x7KgzAj2uixCjrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859907; c=relaxed/simple; bh=ukJEaVdX4VDSTNRrPu2xDDLoME5kyYmNbMApJbbiz48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tbC7TlLW5WPWysN3Xu4jxxiANUY/qxt7Y+MGf7QHdP/R84++6wTN6KEaRWa9VJXNyTrgxG4z9hhUip4O8wR6sUj9+Y7xfEHRQNyYcFrFmLOjtTXe34RiXZmljohjA+eiHoZmrk+Yriz2HGmgVeEQfVp64t/XK/esv2tgPQ4XDXc= 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=C9jnTNVe; arc=none smtp.client-ip=209.85.128.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="C9jnTNVe" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-48558d6ef83so40992275e9.3 for ; Mon, 30 Mar 2026 01:38:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859905; x=1775464705; 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=Bk1htAS4wrCqLvV0lbmjJX9VFRd6P5+nEK7bdtMsxTU=; b=C9jnTNVe+Lg+UKddtyIKxQuamj6gb1InuX2HHDWv/3auu5iEWXxqoAsCz0GwWG2Z2F WQmdxhRdOD1lj4IuHoz+5y0O4ZR/iG3S2NKq3vBSMFuZUcR50QLvpoEEGmdeamjK5E89 KsL69CDNl4lISxWNLDm3fRRh4He/QLJJs+XWnR5BaH8Sl07d8zhH/wEeQjCeekTjsI22 zhcU5kBt1g6bpoxCPz7rHqKuMZ7umg1adcDniBZa8iKPWp7HdtDTkg3zOyhmQUCn9uLS eRhxfwkO/O7sQyYyVvhq3sAYLdntTMGhHlt0vjgWY7JdXvWw2JVvjSCuvV4HkSETxA5L US7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859905; x=1775464705; 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=Bk1htAS4wrCqLvV0lbmjJX9VFRd6P5+nEK7bdtMsxTU=; b=G0J5lEHegB1exMvJS/RGPdCuSwjqQtHilwP4g/pMQPEE1kOO5jL0VvAV0DxELUT9ny w201n+tRF+OJiBqFSVdftEYm7sNEsU7v5MhN63R8MnQ6gR9Q7mI+rTQ4EMgdppRLGKu9 Dzkyrq/zWcV5R6+BuoXt/n+ygokiVdJPQULNSTq2xnyVH2VNjTU8oZotm1KckMiB1mE9 3NN/cuaKYFYCT42zN7aong0juAIANkTqsMxLXZrPlQHwqrsL1rL2JuEh/EBc2fbvkNdk 3ngydbxQ7/NYoKtOLNa4QoIk8q9zO4SdE1pvHc46Ctd+HC6FY7jXeX9B3pxgsEM1vKck jP2g== X-Forwarded-Encrypted: i=1; AJvYcCXv1t38VWiPyMvQ8PK5IMjYtk5iBJfLhJYuc7k8aK++ZZVnP2mZ0kB3BEveS5PZxynP+OXB3cJv7P2iGfo=@vger.kernel.org X-Gm-Message-State: AOJu0YzYJ54F0rogc6GNYHwRpIX2XJ1UKnIn//GRARKtzuQqTphEtfQR em8X6iAQHZnuTr2pBjZzA6u+7X5xBQlNqkEgG3xdF9FTsW06jLKG4TAN X-Gm-Gg: ATEYQzw+5V5kMzKhZaMfTHZ25A4sTGEP2VUCzJmnhdH739c64/Up2mZ957rewp7hkL8 cldROrc0iDO2JthhW4Kuz4QGx8FSrbxB5FK7FvYu7pwincpu2X0v8uccYiFeVNNBIa70wShzow+ PRJ+Vi+BWD2nQ2soP+0EymMqtLEuSh4RYgZhQYWQ3dTHgqmhNA8Jj1EfgVwN0MyWcdrMbTe5TqO SzFgodLYbiaRt2UOMRiAkUkkVwBkEqDStsBkz4uqzAUpRevpoEMQ0hvFQr7RptrL7+aSz2udLd1 /JAIdm7OSK3cy1ttGRk55x8z87qyb7tobE26Bqr9Tf9xVJsFszzbC8PGc2qbTBpGBa/tQDg9sWe 14Sj3nopLH4CKtELf48XC26gMjYz1BP/Juw6GWmulmnmhuMyZ8XMCv5uovynwbQztXHFcBw9DC1 3Sg8be4/VYrA+K3idRGPpRsepDqZwMiA+YhmMYPdI0Hvb11wcBOxqcbftEkTtdqgL1 X-Received: by 2002:a05:600c:46c5:b0:485:39d1:b4dd with SMTP id 5b1f17b1804b1-48727ef0bcemr204913105e9.10.1774859904599; Mon, 30 Mar 2026 01:38:24 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:24 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:02 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-1-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa 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 | 17 +++++++++++++= ++++ 1 file changed, 17 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml b/Do= cumentation/devicetree/bindings/mmc/spacemit,sdhci.yaml index 9a055d963a7f0cdba4741c1e3e7269688dcd5f45..201ab97f0e88376a4680dcca791= 7e8b3172bd84a 100644 --- a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml @@ -44,6 +44,20 @@ properties: - const: axi - const: sdh =20 + pinctrl-names: + minItems: 1 + maxItems: 2 + items: + enum: + - default + - state_uhs + + pinctrl-0: + description: Default pinctrl state for 3.3V operation + + pinctrl-1: + description: Optional pinctrl state for 1.8V UHS operation + required: - compatible - reg @@ -62,4 +76,7 @@ examples: interrupt-parent =3D <&plic>; clocks =3D <&clk_apmu 10>, <&clk_apmu 13>; clock-names =3D "core", "io"; + pinctrl-names =3D "default", "state_uhs"; + pinctrl-0 =3D <&sdhci_default_cfg>; + pinctrl-1 =3D <&sdhci_uhs_cfg>; }; --=20 2.53.0 From nobody Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 247943AE707 for ; Mon, 30 Mar 2026 08:38:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859909; cv=none; b=Kapaa6FEF3Kcj+sUwgF41EkEo5gFRilPMbp1Gpn1ne+YPOC9hIRftwmuTc51JXotakwhPaRtX0W3b5jPaZOaihLQVQNKFFcj83M4coQFJYBRK4qutEG+WXOJMwA1nk8FxiW6MVxA6wl5UVTu27mS4wZpTG6L/eOck4cPJbTqj6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859909; c=relaxed/simple; bh=qUA8SRWMHXak4DMGjiU5xSTobYDglxv6lNBrFgz1elQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MUMm6JpBgTVYKmGkbIUXcm6JyStlENbuYPxFjL0PUw+E5o4/jHO7R3ndJl39z5ImyGmn62r/A80cy+DRNGynUEvWSIIdVLr4rRg1saOAA21l1K5/lTEuuYQnRO0P7V29fHl0Dfu/FQ5Ho6GNkv34FNfIaHLqG9vb1PmKpU16hFM= 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=HNQ95Wne; arc=none smtp.client-ip=209.85.128.52 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="HNQ95Wne" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-486fd27754bso41457605e9.3 for ; Mon, 30 Mar 2026 01:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859906; x=1775464706; 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=AvVWaFSwZuIIuqOAIjURBh3MX19UZqagVH7905iJLbY=; b=HNQ95WnedpGSm0dsrYuIiHdmuQCNr8KQAZGjunr+GGeChI2Ptk5qCY59hZxDtJ6Qvu 6UqVmzXbTSQY7XRi0HABmYmWE79SL9/FzHk/zAk0xBiY1BnD5/6wI11TjqBtmY6xRBRB o8dtdPsdGaJ59A70DlVdTcUxEcliR/pmIQeSNaXK7Z7d/oWT5rwBoIvsnB61hpSx3HgJ 4vFfXNpGH5m/lH4f/ceT7tc12AdBlPlUC+I+nLLnyizh+ljNg6jpbvmobMcmFUw9mWuO D79dSgusqDBhaccKQagzRZBy0qoUdBlipFfd6712+ztQFGDmyPfHCJTqCu+9JMeNHpsL Z1NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859906; x=1775464706; 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=AvVWaFSwZuIIuqOAIjURBh3MX19UZqagVH7905iJLbY=; b=ZBCr1K99FAJxChoaoIIWHIuNQieuBmYeP/N4hG/gvQf5mpHlYnU4w4DrJ4NP7Z0+tM u9KtzGPrwPBbSmNjpnFUuj7BopYuHA1D1sCYN/I7ElIDhYzc18iVFeeUTFOeeuiAbo4h NzxjioRSH3gcqEtSmvNhTHbSQSH4TVIRmVsZDIsuKRJu8UYp3cj/3bjmoFjU7nFJCxbE 87Ai9RQyvFL02zqpDDPOijszYSqOL4Ck9dMhAB74qT2GnaTu7cql/SYBeP55pmzFynQn Y3cwnO8eqP2WgKMx+PkI10Ja4eFtaYiKtDWoKbzd53d2WAfVjvneFiZLUTYNStOc8NwW hPUQ== X-Forwarded-Encrypted: i=1; AJvYcCXvP4ulS/vU8kf3OlRO1oX7m2IedxT4mhyVqoxrZZLtelif9iIKffo8v6Uw7gisfrC+DzjeiMjTcC0jAfY=@vger.kernel.org X-Gm-Message-State: AOJu0YxiIKjXhrad4y0YfVGS1pHB6lMdsZGtAWa3qudqgR3I816G5XV7 dZRQpOY1wEeBZZb9gEro4N54P9srwKNr+cPavTM8t8ow3nqGAYJoW3V6 X-Gm-Gg: ATEYQzy/NWusecOnUyCw3p9dEmGIY2sfgyLnOoItVijJd1dv3qRJAosgOFs0nE8ajF+ cyBqDffAhPf1cEQF9qPv7naWnvnrWUGR4pOZnwprcTQrHS3fpp+c1nFHpJOOfeZAKgotLdjxLv4 5VymnB25wEnirx1eH111gLnRMfnhIZ5mrg6tgXg6fUQuSy8qNKqahweVmW5Au2K3YRtNn8mS5GO 99SUGc7YjLnoZ6S2J6p1Oo5WNpFscdFlUDscD5pHnckMgfLIAfSzx0BEPtvRqbKi9mGIVxG0jWQ 6ULUiJCGTiiBT7H4REjrVlN23RmeFKmX4pLUQ9ZqepS+Q8vOgqhAFr7U8hkmxMjPOgHEwISvjlx x9FetaFMKOF/YcJr7QTBDFYxy9u47LzA6DkXBnl34S5FraAGKlpQ+7ZQ90/ro7iQgAdFGmZT6XE zTfd20Gx2YdhybNm2ZXWB5es4OXUhG2MF7w6lwnp5OX2JhomorJemoJLCUJZiz254PEfDJUBY5c r0= X-Received: by 2002:a05:600c:1d0e:b0:485:a4de:f4f9 with SMTP id 5b1f17b1804b1-48727ee54bcmr204093705e9.27.1774859906374; Mon, 30 Mar 2026 01:38:26 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:25 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:03 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-2-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 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 Signed-off-by: Iker Pedrosa Reviewed-by: Troy Mitchell 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 Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E094C3AF64D for ; Mon, 30 Mar 2026 08:38:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859911; cv=none; b=oitnEjZEIK3+hOhzn3AoNhwo6AthQgR4YwPGim7Jr0HqwxQccIlML73i+V8ZhsnPb310Xg/JxpRqX6dSjzSKQPnSnTkHtmi8IIMRNELAafkW3gbJvSkwbLOPuSWYEuQiIh31ysDPo7fR1KAeDREoV6089mxepU3Ugluqsd74zrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859911; c=relaxed/simple; bh=IUPCWZ8hYMJ6U/wvZl7DQy7F8lp73m8qXu0Aa8Qt1UQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ofMqrWw7A8o9moO7Zjk9aDPJhQFKQG6bARCxs8N1YImoj2TNcMp3Jxj3ccxpDMghdTaxnPxyoM035zdOlsmfrb0fQhxMtuShvjf1Nx8zzInMgbGEx9NXTZ/YK5yp1sw0+bEkdNSWLRNJsbNp+LkYFduXL7E0uR+UTXfRzXR4BFc= 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=RVMesTol; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RVMesTol" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-486fd5360d4so55855395e9.1 for ; Mon, 30 Mar 2026 01:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859908; x=1775464708; 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=RM2PI1Utklboaim1+XGDH9DAYZ4UPq5dLeIx/PUc2kA=; b=RVMesTol//rdrSpr+AjTy6kZUmDwTV9QZEGyN3L+PTAKfTOfUEWq+vup4Sh9HO+plo EGBlIiVmCJsv7k3kFFryXSFJr7hxZEaxmmLObfglf5FZvyatJ279wMXozDWNfZUTo+vs caKfFjqsQF8W6H/WpmkpEw7Y2O4upGlH5jBpPXEtbqmUMExZxNbuRJP6Q0slHwEHNctm uRhqqVHkiEQiPuH1mwfGaUuv1iiAylPUEyavT8Zg7/Krz7bazJbVTTIjjYi1IsJUxbeb UKvAcmBxdHL94RFpy9QtDd8+oHcN2bFTR2ZvvmL3CMViY5tJM2LRjJ+WGgTNtLj/z/7H X4lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859908; x=1775464708; 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=RM2PI1Utklboaim1+XGDH9DAYZ4UPq5dLeIx/PUc2kA=; b=ZcrN7z1STQC9qaja72gURNc/Cq/IT1NHE4SaUQD3z2iofCXjtRYz0EB9MaZejU49MZ 7zDzP9m6psNJOWykeUh+yp5cbqsJQYNhLXDBLMI3DczLhsHR0XuKjvFTHzl69o6gx7lE r/3u0TtnMgJ9/3rYXyDiDNPppR02CJuiBb1GddkLl3GUiHQ6SSaJRFzicPNXiR6xZ45s eSEafqE/0pDFd+NVCOjR2Y1wM+xuHJsxvIl8ZoBcD41IJLVHIPfMZsSO5neliECrd+Hu I83jbS5FYjLf9uBo88aFvTGc3RSznvJqYWS7nIDsJuDJj6ILfLzSyAUOBKVvDD4ez5RB SDXw== X-Forwarded-Encrypted: i=1; AJvYcCUaZam2qcyjfIbmDqHprg6feDv0IVghd6rWenBCLEKTWJ2l1rd9wog5RRi1drwhs6NO/McCsAw3D5LPSQw=@vger.kernel.org X-Gm-Message-State: AOJu0Yzr4tQ9pJhsew+9plSVRZWl8uQ12M5hQUzJHHFSnDz30PqmJEF8 b6bkMamJWoetV9NhTDYEoOMOtrEviuB+LRXD/PPSfyktiXBl5pPCpffB X-Gm-Gg: ATEYQzxvaS6YYwzH7+djWK1uNvobSAjS4RzRnzKpZDTcsoItijFbc7rsKrQwTE8svZ7 XjvHGxvGj02CEp54u4tXeBeJwDRlcUv/R5k+6wmLFM3ffGUW9PA1c8jaL4YKUOtROkgZGWRQw3I o+VXcPPYkfQD06QTK0DWjZDbMWPVRiGsqxmAOWhdENuMuQ6tVBb9AGFYCZxMqP7ELYHWilXemp3 FJJ56q3GUBzpPxsGKJx8ogdyDuaJQ4Yzr8iCWogNmj4tokXffyoAoKA7VGYcYrdXHR7xlpjf3ek YiPhhUu0jtvdxSrC65Lpfq2+FZWeTO5NDIDFFhH9y0m4AF2itULRGrs0QcdKdqc85QtRkxrPi+M ep+x0MlNcg5U+mvG8QoVTab/3+Om94MTgp9D4DhIHxoZIa7JtymKPtJ2NaGYA1UrMi7E5T/6wDE hys+WTVJt4eNJZ0kbBsBnOadJzL7jmCqp46PlV1A3tnna4isC8pQOuLLg9Nj5EkcHd X-Received: by 2002:a05:600c:83c4:b0:485:46fd:7887 with SMTP id 5b1f17b1804b1-48727d8816amr191754305e9.13.1774859908252; Mon, 30 Mar 2026 01:38:28 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:27 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:04 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-3-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 Add 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 Signed-off-by: Iker Pedrosa Reviewed-by: Troy Mitchell 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..234e258af25996e7bbcd0b70366= c7480bf62bee7 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, "state_uhs"); + if (IS_ERR(sdhst->pinctrl_uhs)) + sdhst->pinctrl_uhs =3D NULL; + + dev_dbg(dev, "pinctrl setup: default=3D%p, uhs=3D%p\n", + sdhst->pinctrl_default, sdhst->pinctrl_uhs); +} + static const struct sdhci_ops spacemit_sdhci_ops =3D { .get_max_clock =3D spacemit_sdhci_clk_get_max_clock, .reset =3D spacemit_sdhci_reset, @@ -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 2 05:56:59 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.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 F08A73B19A5 for ; Mon, 30 Mar 2026 08:38:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859913; cv=none; b=tMYIpd4+/xHBgfzpImwiehYBr5YVOoPiFXAaZSDlDKF0RwJSAFIgz0yF0xTqAD4vDIXOKxYlSkpE0HAM+i3/V2Kc049V4mlS6DS2c9Hc9pex/8/d9s5SOpXv82+aXbcVNJ0vcK3vfAlzIMFLgtDu8zVYvFb2Sp/z5zKglPSgUrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859913; c=relaxed/simple; bh=aK3+MIpa+EjN7aKOUpZq14/pngTf/Eu88Vy8ym6Pbwg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RSV2ssm4mEZ4+q9mGKON96yz3Gko9iEFGELI6P1P9xm2WRVzQ4/1l9xUbXxjl3DyJ0/lxF+jtqoMwaBOdlFcrLmoZQd+ArCJO9GuPWsmIqvH8o+7pNugXc7wXOgEfugDI6YAVTpxE7r15hc65d+3ddPVhQpNmrz4KCTlADyGSaM= 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=tKzb3VMO; arc=none smtp.client-ip=209.85.128.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="tKzb3VMO" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4852c9b4158so33112815e9.0 for ; Mon, 30 Mar 2026 01:38:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859910; x=1775464710; 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=opfRsmR5hUpoxMpSFVbgDr9qfXlNMT0xXYhPYvmDbP0=; b=tKzb3VMO3EARdliWGmZJLq5pksbuvxXnWzEhLs1g1WSe15qc3G/N/uITk2NKah2jai Zgou1SCPsFbGjyd+90TQXmyTPN8stMEvfNLsNle9/aj1uSMMDVnGiOXZO3d3UPzovwWj QScUJSATBZ8JTOl0hSqOkU96CiAQy0biq/q4DDsMHKn7KXAYq+WgZvf0/PrsWnqEHJgb fgdAmjU29eayg7sw+8xMYmnjvMrffcoBPmd70RAGy3y/zTQpHQiPhOiquAeXCfYOzEVu Yguv3v27TSZ+XMo1++b8ey1gZBFMoYVY/rMAaZWY8DHw1oWKZxwACYAwjSMXUyFdgYj/ 991g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859910; x=1775464710; 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=opfRsmR5hUpoxMpSFVbgDr9qfXlNMT0xXYhPYvmDbP0=; b=Y7ZdqIlI3z0d+ENq9MUuksSRFBurA7R2Af/hNRNPbsIBB8M5XFDa3/fYFSY8qm0iee 3asoB2OPqDGU3SMh4dmltQh2UN1uPhfrehR/A63F7gi84OkYvgSigJs41qjxYi1JPFYM m3/oBXZ/nu7oCblSSyFX8NqxGiWvM9PvLYquhgn7hdDLZOkqD5fSJe/hjtDSiSwDkd6s C/CqcssnnzawG0J6uzkadSw0ZLo/jcBIIpiXKEkkZt+TvG4pOlBCAFVEFbUu7AW3faZz 7xDEr/qXS38h6wxgg/63/vYpJetL3618Zbd4O19Gk7E1X3eNQ6DzVDsrpSu9ELpiyNHc Pobg== X-Forwarded-Encrypted: i=1; AJvYcCWPjI4d76+KQv3gYx0z7JcbMjnqmo4yZnYRBZUvgHeZ9NSq9KUYbq9ky8pxgiTscY75M7e5s3TQV/SYXM8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0mPviy4MXxJj+Ku9OZ2iP9bhOhh//ty82OC/TGLNE7LMEVwII 1XMxgJWNG5zofhr+hPtu2K7ylMLJGQQC7gjP9vrOeSoCLnkutqdyz3nY X-Gm-Gg: ATEYQzyNjrVRA2BZccDAwei+BhC8a/EaO8AqDEkt5xtSp0pdgcAX3elt2waofPt8wF4 1BOEXjGHnySKIUBV9Cbjev1hScM+1YakhAhCsMXuTcW+jJ/JH/IL60hPlEABiEvdtvbulmXml7G 3PbBwVlLCccVUOllMiodBeSV/Fi1N7PTcu+/DFVCNdgM43QJBo0Tf5Kypjy41Fk4eeMreedoEN/ c23/VXvoOA0qIOTul517sBX5w01D/H7OVbmYtTCf92EmiLfcl1WHegnqioJi5w6xPOTxfjyS6AD v6XpcPWSkWk0Zo8ZgIG6uJmnjYIXedDiP2neKIL84OLRYNd07h7T6/SQWHgzEQHu0s2hz9LpooY o4PN4KdMqZGh3hhn0OMaR7h1JE3+l1jF+JFkB4s25VTvd8kKTW9Lp7fqBsH0yOuI4VNEAx9j+gF Sv8ibYA/UDEV763BfrNEcrl4WlZWAoPbqW2bNcXRlmNAC4wtLvIviL1p1y15OgLEwD X-Received: by 2002:a05:600c:8b2a:b0:485:2c61:9457 with SMTP id 5b1f17b1804b1-48727d62cedmr211002125e9.10.1774859910006; Mon, 30 Mar 2026 01:38:30 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:29 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:05 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-4-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 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 234e258af25996e7bbcd0b70366c7480bf62bee7..5432c94680d8c1c1555b5fb906a= dbc881953dd05 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 2 05:56:59 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 B5CEC3B27D1 for ; Mon, 30 Mar 2026 08:38:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859915; cv=none; b=CUV+2FYITM4NiUpSJpsfo5JUB/8nxr/MWlCwPLFnHr551QsdsUV+yJCMTxMf2bBjyt1xxtqRC7PyCmqXfpeay06kywg2gbE7+1qK/TzlIUMdk/wedtie/nIB2XnB05/y1WH3k1wGzpkwxXU5fiYu25WwkqDymKgNQ++gLErC3uU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859915; c=relaxed/simple; bh=NzCBjrcTHSjYT4vsIq6VhANz/XgUS+AnZRR6BOfp+KI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IXwUqAzY6cHo1BPXYFZ3yIXbX67p27qXx2tL4W+PBN86S7e92LULi8lfNU3/SbFILcQjBu3fUGAzjOTlzg0x0C+ltC9fPIxsZa7CkHx3YqJ2p1Bm1eBRVYH2Qy77paf37h4sBP9PBATy2OiY7htcPJFViFDVzWjl+Xjx1BqvY/Q= 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=muiEezhW; arc=none smtp.client-ip=209.85.128.46 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="muiEezhW" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-486fb439299so37891725e9.0 for ; Mon, 30 Mar 2026 01:38:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859912; x=1775464712; 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=LD8Z/sB/L94aUjRnY0i7hrh3m0eioschCBJ3Qi7mtuM=; b=muiEezhWhtuoeolJFeh0NqfoYy+cVptg4SmB6q2IPK/dS1iEdVPM5ugYNEssvrnjxS vTM9aIBTlGYPU3UCTtpwEM9gBO91fTXR2jzkOzzxVO1zPx9a8i2ctpu02cSdtxbfuaFV SN7BSzT0/5rrhE62/n7OfTH1FQuQPsjorX+q36PcIBQSVGLOOQI0AT+2rkywUV+41++2 eLEmfX12I5sefJaCMZ5BOoOpn/XPAo+mWMuk0ReTXAbNyixskhjEuI2HdKqADCTuFHgR ja2Nv3mN6u0FdFmF5TQ30eAzttmXjPpa+/zKg9Q5OAlRKoTZHIlQ+qe6WORQxkLHXC7l 3zyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859912; x=1775464712; 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=LD8Z/sB/L94aUjRnY0i7hrh3m0eioschCBJ3Qi7mtuM=; b=Dz9FosUmTvOkB5IlQohWoILP2pckGY8HcageIZDbZbd5BZ10jxSk7k3OcSzmJAoSjl jDtgd+0iNgvdrAxyygCgccDac4dRRbuofgRfj0crF23XpFnVMrl4JL9qYkKMRoDzPa/T WpG7WE+pNVfsnf6YB+chkwGzC1RWoToF/w/+pxfhCYBS0eZR3xd+009qoZNgI9N/xl1R aKiOE9VEBbcOVdtk2pEKwVGPNiPOMIod43lBVDmyaq+DV/WJeUjCbJi8/gKzkDhepBif k5O2sxxa2BEs+tPQeLjpnFrbmkcblReof9ItHJVLHCTyJHyIQJ9lQeOOeGLL5AcHWcqt NKIQ== X-Forwarded-Encrypted: i=1; AJvYcCV4SFSvCsTH+MmszzceONRHSj6VH34P/kEii5SIsgQyTID76NHMgCfaD4ZLgQQVG4LQAFFLwAqbwBGDwVA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5jdPkLvmMD6zDlXl9kAGJLx89SBvXLXAd3EOquyhZMHlvjb2y xkeaXWn4lLMvFU8yqals5GNEobrMdcl320mEpIX3vWou+Qjzbxz2ZwXu X-Gm-Gg: ATEYQzwJvuO+L3E3JbJXA/1ZpMvAJtaO207+I3EYD+CgTk89zp9ZQEDnxrkN4O9DAeG GSAFW5keVDvcsnarwY8RKNdqyfcdJ4Cs2VrJJwjUi21Dxntnv9wjfAfi/MV/qRlNrY1NOG4QJ3H yemc/QTlx+Tob3a2YjxJEmSHjsvX1zF4egYO1ViqVlYOIf3F/d2HFi7J8KJJ64q/adhgYqi7nVh p3IR41ovanV5L296ihO28L8nDYSWhTUWHHZ7ujL/SsIcZX/oNtZJmxEo9tM3Njz7OUnJasVssft FF3V7Mona2JfoN0GcW2r66kiIGNbLuGBNWOuhgU9ARmpbDugs4VglNUL2IX/GAjxslrbQRO8x7N Hq5uQ5KoWw1ev0gmA/+/Lpo+u7HRzHjVWB3bgeNAMzFKw0LD3g9tv7cvOCrtWnwUxY7gNrurNj6 ehNdVSHdSaCWt0eqF8ir/VVSyt+SG69QER9EHEf6eT5AiNgTrsRgZ0Y6KZt/gHc4vU X-Received: by 2002:a05:600c:1393:b0:485:3c8f:e4d9 with SMTP id 5b1f17b1804b1-487280a09a2mr194916195e9.26.1774859911875; Mon, 30 Mar 2026 01:38:31 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:31 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:06 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-5-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 Add 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..8d82011f1af666fb78c282a2abc= c0cb88f962053 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -570,4 +570,44 @@ pwm14-1-pins { drive-strength =3D <32>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index 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 Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 65A603AE70D for ; Mon, 30 Mar 2026 08:38:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859916; cv=none; b=QFS0LjtrGLB2DT1dk8qqg8U7e0lTiu0LODWaQ0S4wqZhS2Pc61opxmiDBmtvRT1honHQpeCCWCJy9FinaVrjMi/Zrp5TDad8DDyzmD73/fLWaY8QCv2Bp14l6oC3gT9Shfl9w3u5M9GycptIZkaSSAKmzyL39TwYQhYpeaWkInM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859916; c=relaxed/simple; bh=mH1spPeTCHz8roINYMnma7FI82vi0r8vKKTb06yrJYo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RKZVOtkIBEsZsU9i/LUlMYHiJZARplH8cpgNLE6FSOdfS6E9xK/Ru2/RG/fIdlfDzXE8FECiWLUQdMRhJA3UlFG+72U4WsbMb0ynd/prEY6QQDP/ksE8+LEnMyusH5yZymxrBLnUazBdnR/SCgnxLlOys4o9RgrRzSPNb2k5EM8= 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=BWp9y1gB; arc=none smtp.client-ip=209.85.128.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="BWp9y1gB" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-486b96760easo45977985e9.2 for ; Mon, 30 Mar 2026 01:38:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859914; x=1775464714; 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=BWp9y1gBR0vUXczfdwqM6oZYjFfqwFLDtgoPuWsm4cRtJShRNK5baZXU2azoGshp1O 4cQTJ+K/6VujOLCY99aKST9OcvutQqDn+qac+aKpFoMJO6kMFYwuiz+xVfkCpRptFC1D DWg72jgwEvwvaN7Hnih8366y4UpXLMkmSGOxhEMObN0ISv2I89g+sb+mMHASKvYuWDWe b0X4s+2MMIfcaSSHz5hqXfvrC1bw4AUv0BfuYN3gpzIy/3MOxuBip+8CJ1Nj3O8N65JJ +B71FtZ5TWnMa8aaAZIAJzRJE99mTmZGBdDP2XNnlpWfQLCeEhrsBNV66bk1Bzdw/fEX incQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859914; x=1775464714; 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=dyA+U9GZJXx3cXI1wwtVY20nLjvoeUxERm+xhJWtaYu+Cl5JyZIIAvBz/EOlZP7DnG XUpzWpFHD/CGbY7qtdUDFgb5gmUjcpwtms0f+6P0NGJnlh4vn7ZWOhgAE8gFJT1a0Cdz 5/oEBN1jGRsQ4U4U+zFmyrXKlTuzgZcu9xyv0pVpo9GbD6b6qQuJwWb50zoQpOQhUjEA k/IFmGSkH48VQb2VgSGlz+KIv2K/jXCurKHy+xftxci3L95NeOh+vfuZf1oNfwdo5zNd p7isn7Oa0Rzp2D58WF/b7mVDfrwPps/QotFrWrQBIpcd9nMMwTKUcJ0RX0Krxmzby8Em S6hA== X-Forwarded-Encrypted: i=1; AJvYcCVPa7E7tCb0Jct1rBqFGoFLEhrWhBiKApBdFa4yXgfd72OWUUFtn8igs4J4//54xgW1tZa5sekm2ON1YVI=@vger.kernel.org X-Gm-Message-State: AOJu0YwhivaCHWrtk7KgOqh11d2+a68AVMq4qLlpaWAFT+C8CoO/rVzE RvvttHeVYtdNeiBE93mKsnZfIr79Fh1gGZbnmfv6wlXQk7VVAC5qvVdx X-Gm-Gg: ATEYQzwA65y6GVuBY+sMXdr5jRxsJSLrSad5ZMq11zbvgjL7Mfuxq2b74FVtSw+KQj9 FSa8o1r7oczYnBR8lx4Cu4BBU3d+7cJADR8X1lvMb2eXzxC8iu2Y1KOcZ95qSO+Jv0PgGX/EcJN vGxfnBBib5iPvH4DFL2Ge36QktiAPYJN0TrBVDuISdmbNpUtDA9fsIuEmWGRdduFbywOTxIMHMw 9nQ14RXCKhGNjD6jYyXC30tX5F6LpEzHWrm1o2WRfn5LAPkoNERoANe9Jj7IOHzgQ13dpBs2VxP m3N82J7btIQvC4SdQa+iAHy3rBKO53F1V75MqxDr6YqB1bcHmZiVSqqRMRZhUJhv5O+g1X9sddu jGtyjlNCjBFt1DEGaDb6uwd3cpl+Pttsrnkra8S6U3FKGXC5f5pcJwZchZbeBG6BEZakCsB2MZK ElYmdP/hSY0VHsFlLXe362Fn1N8rKgFG+04Lfj3AzBVUMb+KtvDT27cWDx4pE4TjHK X-Received: by 2002:a05:600c:c109:b0:486:f9d0:aac8 with SMTP id 5b1f17b1804b1-48727ec776bmr146972035e9.18.1774859913716; Mon, 30 Mar 2026 01:38:33 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:33 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:07 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-6-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 Add 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 Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.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 387763B3C00 for ; Mon, 30 Mar 2026 08:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859919; cv=none; b=IN+UywnzMH9cadMfF7OP5Vc8EEeK+dYz00odjvARGfo3c5qb0ufWZfr+xlqJ/fse/qKvcuxVcsBDs64pJmeEl8UKoRyXOj/BVBP806g6QDLOFpBAORfRA9OLdnzHX1ZvmlDzTX1q0Nw8WMfgxUclxtZiWYi3uwpGOCMoYdQNbp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859919; c=relaxed/simple; bh=0EFZ53q2XAEQCbsr9UzobauZinI9NCe/+PQ0fxu05PM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NYXQZNsDVwDJCDLVP9TT/Sl99FPZ4WqC8DOYKrx4Uon49fsLfctRCXaL5gQsMyGxYfxKCODRxnMDNngbsMphmT5EtJx+/qx/30bRXgSZDZgYxvVw9wNZVNtz3SmyKFbsZS2J+xi1AwCatC7Km+3oCMFq8TIyqDzUVge5pe8LSiA= 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=dnMcNEiF; arc=none smtp.client-ip=209.85.128.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="dnMcNEiF" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48700b1ba53so36936455e9.1 for ; Mon, 30 Mar 2026 01:38:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859916; x=1775464716; 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=1LbwR62Ox4pP35TzcC1/kMlb8rYdhZytDukagY2Rkq4=; b=dnMcNEiFeYrIQil/90dVJ2OKaDAY5lqJiAhtTrAjNq4i5SkOn8H+Izj7JNnTJl6nRA NE7ludU0HQyEr/Djbzrp60tfXFJR5v6Z87WwmUOooftBHt97U38w9bk1l4I9cB7MQcug G+UDGzsHzyUAp/rb6rvzn2ON9z4To7kjfidEIP8cBOe7kwO/A24syOHPoCLVLmerohJo IiV6zZkBOd+pQ114/ECIgXSl4n5LwBZxJJ7RAotTGuT43hhX7Vox3J81DpysEaJoTNaF vPvH3b53Z7kliIhtoFnpfs/7g8w7yPE3orx6KnKCOinPywzHPIo/JHihGeyho0YGwgHF GKCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859916; x=1775464716; 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=1LbwR62Ox4pP35TzcC1/kMlb8rYdhZytDukagY2Rkq4=; b=OxdnkWWXQgYBG+3GwLSqnz+bla3d4srfvYN0c7U3SblcFPgcVKozZ9Bu+QVVWKpCRu vw72x8DokpYmO+vPOG4CtiAJDa5KifilZUteuEmkWbyYv6k9VOWGdwjVQAsEFxAlFWnT kHZ7+jrkM1zpjk9C1A1DeqitfXXaVpUTKSLsTRLJadfpxCs8EoS6kv3xuVclAs3Sy5OC uIwAXzTYOtXcOMtghxYalcab/1I2bKoMitH8VP12l3QTyxtVCL9rGDak4YRCZwPvylhj 8vGx0PpkcR8Zll4faFlvTxeMcdWm+DaNgv0wLCQeAQxEAmWRx5HtwSxFQUtIyrpdzj4s AaWA== X-Forwarded-Encrypted: i=1; AJvYcCULYZ94DL5uYP7eVDwtrP2qbyqGR1WW5nizxxYiE0IgsBFgxMrY1AD2qoVUnY+hv8BC8GTCUyuKc0nqmWM=@vger.kernel.org X-Gm-Message-State: AOJu0YyK+WpvK+FgbDi19YhJ8m8Mq/0D8F0ObSqYrIgGhjtPY+Bl8QOo 8mj4iifvVgSiBtyJ6oKQ4fqEN+iG8PbByjZvqmz5jJ0W43OTRDEkjEiE X-Gm-Gg: ATEYQzwKAv0qkcS3K4UlUKN+p/r96azSnUiD9Omp5K1NifrtfasjcGbvxiwQ+l8Bkko ZYPt94uH0IVYjQU7v+1rp+2K3L7qtw+yoegHKDmwQNb+xCyZ33MCJJONORCbE+l7d3b940PYuJo NeR6BI/Un93yRFZIT6lot8VkcYPr5qRLt8IosWyo/9Ydtbt0DKys7vBm5wmElUbUBmzahS+JGfl fIYbJiyctM9tseDTN7usaDMqrhOKM8CIxGHn6x2inq9/Mmn5gJFqgoZwF2HDUXKAR5IBuhVqR1p W2zo6MQt9xQhLiPfIzHDIQQCX0eekntcwE2rv2FD7oFe1ocA8UhVTPBp0T11dMT6EikFa4jgNLz sHUJxH7TYtFCqdIzTJvRfqBualHPsNz8LHBifwYZaMHqbOag3WLCd3zvYJ143fnV0XpcauKdpGT S6Sq62L3lTW5MoPnAMOiEu/BjSqUEuWWP3sWQjmeqhRjz3j4hwM6gd2RonCh7izwEE X-Received: by 2002:a05:600c:5249:b0:487:386:3714 with SMTP id 5b1f17b1804b1-48727f7bb08mr213736895e9.17.1774859915529; Mon, 30 Mar 2026 01:38:35 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:35 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:08 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-7-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin X-Mailer: b4 0.14.2 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Tested-by: Anand Moon Tested-by: Trevor Gamblin 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..5f823611c969eb0e15546862228= ae4f65375675a 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -140,3 +140,22 @@ aldo1: aldo1 { }; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.53.0 From nobody Thu Apr 2 05:56:59 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.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 305643B47DC for ; Mon, 30 Mar 2026 08:38:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859921; cv=none; b=VEe/wZKAcdnElOtX2DLGK2d+gJDartaSSCVYA4vmuMsfIey1Rq/oSPEqSKtlv6lJfbEUsZIGjaOoqtiQHIhkYNWxl2UisDlKkngsH5nVHiyX4bYx8S9D18Nv20ElCwWYMW3SjNIx7k1YtUjPcqjwSrC2NdNihad3IFIFgRdQBeE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859921; c=relaxed/simple; bh=k3WQFpTj3xaaEoiZ9UoAc/GeyanLbBgvNpL3Q2ubkLg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gz+rEDiLCkXTm5Oaeazdy6ZpnpseNl7tJx18bUKYg+QH4/mx8jURpVitWI7e/rWC9d0obrQ9Gm8lCbFNncQKdKC2Xzg03c9dsFPWjeoWZeSqjXUElJR4snYCN8oFQWUPHx4O/VfXo4pX8Jnv/3kFrKTJUw/6HyV1ZUMUNjlh80U= 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=WRnhZNls; arc=none smtp.client-ip=209.85.128.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="WRnhZNls" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-486fba7ce4cso41842245e9.3 for ; Mon, 30 Mar 2026 01:38:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859917; x=1775464717; 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=YWssdxlHALW3Qgq+7Nkzy7T5aM2eq9AsrkcjeZdUOek=; b=WRnhZNlsBSkGPpxha/y3jm9bE81rhB/Wl/trapAR9Eiz0VHkrWF//OIG2pRohn9IzY OJn1A43SbAJrhBrllPLnft/qHeSq19OR5/Bcmp9KCCH6w0sC5c+r0FWK0Vhj/6Qj/TgH PyZXQLjfYlJ+Vj/gqJhVpSJGJTsVWD8jeV7arxi1IMvmwkYbt6rlDYRIV72pvJ0TL27U 84Nlg90ZVv6sgwJhnx2siKLYt/DZF7nrknjlmXYeuTnl9quwBlZj5lvXqpcnVGxzonLr gn+dHXkfvzr7xmlPFTAZlOMwcq52m2Ph80Jml4YXqV8lH2am+tfhZ8mCTDy+tEojow7/ gt0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859917; x=1775464717; 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=YWssdxlHALW3Qgq+7Nkzy7T5aM2eq9AsrkcjeZdUOek=; b=CCUOYp8thS9m/DNRHT3w++62esVSPdYI8DSRgjXseYI3komz/9hZDW33/Td3laUM4l YptQpczYfCZTqUq+SqSMu7yak+ZrsuNVkTX5UAIaLk72fOl/YqVgfr//QSzcUECrfGqz dBGqxqGaJ3+hnL/jcl2aQf/u+SHoZ1g9a4AGHSYN34aVWJdSXUWECn6QzUzcZNd3Aby9 tbLv6ZjxhDkmpEOEQ+AijMNNl7AzhBtWOt9JuaH3mHUK1zhTY23tGCV0Fi2VgNsb6Bpx 4vWFFUwCPzzIkWb9fo2auetfSRmmfJfxhqgM+rDkh6PNuyrdfZEsdXy0z/aLJ6Y1VKIN IbbQ== X-Forwarded-Encrypted: i=1; AJvYcCVoYsYMQoxaBOwPb6apQZaDSAr+j4TlworAAYQToye+Qc9Hl6EOXCZIf+IhRKxaSLDefOL35dHO/u6he2w=@vger.kernel.org X-Gm-Message-State: AOJu0YzW+YX3nFuWNyH3i8qhDrCzMwzD8YXFNMzHFywSL4QZGM7chjXP y7dvD5rLRz7ekKLn/QkEcH0oSPX8uzaGOkvx3Sja4Shpv6DkGVf9Va3w X-Gm-Gg: ATEYQzw3TWn9DSipUvD1CoRo07Q+ex/PqUDpYlpvI6wRelLabW4GuQk5oMikCjs2RVB 5x7gMe3it9F1RTlFcqvlPmPsiNAzqwwbRgR0SpIsnggV1S7xpKt2Rf/7YbVD3uLwqQfvnk7y8i8 +0qpVZ6ymlrsI1N9PO+u1t5rqp+cxCjaomIdhTSgF2STC0mR98tftNxqGPymfdnhx0nsN5IpCGM PV+CB7UNd5jimvHRuNllFsSkeZbL+O5IlyeLCZp0JE0ABAouD0cavKPkT15KU5I4xkPuy2RzAfm FksgCvsoAKQYapblov9exd9xpDrTp8x8t4BJHWB0pYuonF9Qxcrp7Tv1V9W9qZQLASWvNOqOk/W AzHVgV1LyUksbqW7xzgVqplK0yE37FJt9kDhJp4EMp0U2efSAtVVyNdnsRg0u9m0MQrTy7ngBsR 12uhtqECWf7fJhWg0NGLYpeIgTaf6LGm8W940tH/HtLmvOwmBOuwEx4JmGL5SnjxvqYFuD795uI ik= X-Received: by 2002:a05:600c:4f91:b0:486:f634:ef1 with SMTP id 5b1f17b1804b1-48727eda549mr197940965e9.17.1774859917344; Mon, 30 Mar 2026 01:38:37 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:36 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:09 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-8-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon X-Mailer: b4 0.14.2 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Suggested-by: Anand Moon 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..a5bd63976a4ff772ae9a9f98304= 2e9b032ecff95 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", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + 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 2 05:56:59 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 EFF103B4E8E for ; Mon, 30 Mar 2026 08:38:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859922; cv=none; b=up6stMsDQBBjGdOUDdSupkMg9PR+oKQ8kmPSOYrufHv3HQ8iegGfIeHghyitFbOWMXaYi1P3Ww8KcNy+i/Z+aOlYBKK5v+xoHftd1PAqb8y1N05LmI26teEIY2fiq4yNeNTCEtu4FHinSQTHdHfUjwVc6ZmEcCFlA87yZNCimjY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774859922; c=relaxed/simple; bh=/XgektwUTyrRiqcljig24LQcihgwiimxLKBfjjRqYQ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vg7r4Md2Z/Ge32u/0pmVOnuLP8wTH86j6GMpe8TJ3DFuV1pRV28oULPEU7FTWuj1/SOOoVW7PiSVVa4T70i7ppBJqU3PoOCNtK+zL1Vw7w8NnCtI1TtaXfQNh4+67Tjrx5LfiZyDeSz0pQkR2+xFNR3uyOzj69jRNabPtnCJQ7Y= 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=B3bpww4r; arc=none smtp.client-ip=209.85.128.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="B3bpww4r" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-48541edecf9so52652895e9.1 for ; Mon, 30 Mar 2026 01:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774859919; x=1775464719; 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=s2b3A5VlJa4lpM7E2GeEDRbbHgTsaHKFUASwgrv7Rf4=; b=B3bpww4r+iAIW1DBwAxleDS1NAuCP7HdAVba/MMR1FshWcx8oyZLiJ65T6KUb9btem CSBPzYlvn5cOqpU4ptzWJunTgPY8f1ZR/oFHe8aRBuH4Gimr6Ah9zANQ2Fntvx9nxCLM x1cJGfx3ko3Bw48f7UTsxutW5F8MGDxbP4c2KREHXZH4XovAeY/SLhP8kyNiBFDqR+y7 M9sCGi7HYhUSx75mXOVHxYZitnRznSer/71t5nwnJKXB3ZAjh4dVQYiPlZ21BeyW8ngk whqnF3Yc2F/07o7vBvXx7G4Pbp0tWYbFDAmZNS0hVCMUCcUhtO/YjjYWgZys+L4cJJ8F ohVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774859919; x=1775464719; 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=s2b3A5VlJa4lpM7E2GeEDRbbHgTsaHKFUASwgrv7Rf4=; b=I4EnSyfpUY7phbCUiF8FZM2ARQSzeT68+sw9tiaIQXaN4P84PVy4+87rlcLNY2mgyc YuH8xx2VaOrn5M9hkJq1//L+NWKi8/QdmSOGTGuFZbOu4VMZa8iG/by89U4cqolEeSHX reOgMKzEEUbREUMrE23jRXhmQ60d2hOb4fAqKREfArwHJ9zXgsPlDGpb7VfK1nc55zt9 pXpVEYc1MfXhpmoImWBTv+QktNWYa7Kwpnrd3FMdm4JcaOsQGCanFT9fEIkkYKZ6O/xG knKYkC56B0UhJ1L9TcnYz4MQckMeW8ancJfMNfxAD/HnlAT8+e+o6sRoYYOyIF7QWiQj sAVA== X-Forwarded-Encrypted: i=1; AJvYcCXBDx8IrX61VSi4PySfj2wveeJZSkjslgwWuBteMXNVMQivENU5lkyDNV7adXD+YCSEwUwOXDrhRZFcsCw=@vger.kernel.org X-Gm-Message-State: AOJu0YxvOcxfbLv7dn7pwsZP4zMkYCnHltiQzVlOeELcWFIegjbRCui3 QNMnoCwYJt3EhrLjY6K77K5y2G/7+Zpe8PiIhsRmomyBHiBzxP94XKrM X-Gm-Gg: ATEYQzx30WHo27SBifFK7TfmJY3AwYLv7qC+YxpjOWLw+QCAkCGo3iIBS9aIw7eNJIc 86QoIHuCFYYhcyG7c/vLuj/M2qlNsqAj6GUfiZb9b57AVsyRJ+PUZUTsE1tIpAxFmovw0fRKUCE 85sVmHdnu/IiTA/f0H31ruM0t2KavZ72ATQIKqqkQtRs8P73paAYh8XGufBkXLMB6Zn/pqXdI44 Rp3nnwd8tNZvQRuQy9tGiD7ffOCnVtX8bJ1ey0FCx6gblfaCl1HOcDDZbd1CI+Uv2KCpp3wopql 3BxdYwUFWrt9hpbT2u8prACnOhu1wZcDdwS8eCrVETSitpAS/pXKAPH1son8+YNQYPiBZf+WM1h YEjPNz6kn/phECndggV4N4mRqOE0KyZF5WJxHwkXp/H0nysJm1QkJsFUUIOV9X6A9vqtA9MyMsb 26ExzLNHEqm9+YlvZa8MFus2Ikx9SguRsEsoDjMIatwgZpcbtPXvMWHfBME66BX+vH X-Received: by 2002:a05:600c:4e08:b0:485:363b:fafe with SMTP id 5b1f17b1804b1-48727d5e971mr206919765e9.1.1774859919161; Mon, 30 Mar 2026 01:38:39 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4872712c236sm74063315e9.14.2026.03.30.01.38.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:38:38 -0700 (PDT) From: Iker Pedrosa Date: Mon, 30 Mar 2026 10:38:10 +0200 Subject: [PATCH v5 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: <20260330-orangepi-sd-card-uhs-v5-9-bd853604322d@gmail.com> References: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> In-Reply-To: <20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Yixun Lan Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , 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..b63723978a4b5317c506c6df6ad= 410d23b0f0ea0 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", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.53.0