From nobody Thu Apr 9 11:16:51 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 262E63A4F35 for ; Mon, 9 Mar 2026 11:40:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056433; cv=none; b=i6jOa9Qdqhb/DEpULmZ6ekwMW/DnbG2nVAmqI/If7QCCINlAl7jmPsc+1xjEG7m4atRV2t4pzhaFZN+QW0NmSGnKRhQuKygIrAx0tfqnaWzutHFB2LGxecXfhYDX2T9HZ1VihefFyS61u+Ig/md4fEng9/XerUqDZZ+TewrglRk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056433; c=relaxed/simple; bh=ZjPfOEay4iJtYw/Yc+++kB4+JFWKKrhSslqGPOY6h3k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EM22Yjy/V5BmRvD5gXASpzzxNR45PbBEwJeti36M4jB4huftvcvMr7+u3Uhf0guDL4/YyF6siQIu/ecPkQR97CMTNXsYfYptF6JzWo42rkNZSP+04hB2+Gigft0h0XSlFDqc13HBnQ8NNbQFMI9GnVHAxkEHxoEp0S5jsnJ3048= 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=aZX1mTv4; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aZX1mTv4" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-439c9bdc1eeso2118571f8f.3 for ; Mon, 09 Mar 2026 04:40:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056429; x=1773661229; 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=ENoXAlYlr/CKB5p2K9cJMvCPGqe7WoN4P4jGKMHaZJw=; b=aZX1mTv4BcFETrP8V766dzYE1sW5H2vUQLZmfEuPz8pOpv9l+YItQQI0oZiuSiTPYO FEHXb/fiw+5BPgkmgDcq5mPKz2iSQGhQ21wIuB6MDl7n6FdyNF5zE1tL7ZEv4HjKo8jZ vKRrr8iCvqVkmFEB3E7/Ptthmo+KenDqqos+HeMveUn65rpWgceCcdDrZL4y+qdjxhsQ +R6IzucsSplUPWoFjlRh6F4QNk1cufh+/be/sCAtoYLVO/eRTX1I/NtVp9E/901fa7G2 hX5MHt2ujtSaN4xgT9pN8+gXQUzxUZQat+QiNWd4wctgOFBMRpFMx+itJ+1gpCn0hToz 2bOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056429; x=1773661229; 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=ENoXAlYlr/CKB5p2K9cJMvCPGqe7WoN4P4jGKMHaZJw=; b=Lc6xI2d9bwAbj3xdkACN8QnvW8moLvqzj7+bCLVXj5Qx887xabctEbTj908EuXzn3i B1r/sfK0/0SX+RXmog8fEZC5XLhZX97sBRmwiI456i6oh01mlPIoRl4QSxaqp8An8AzL 2K+WNBQEDkeh19spOujbh1UdwKN4NuEiXsaBGTfgEuAJphjHq4D2YUVU0ppDKKsgo/Qc 11f3eeHrdkxCWuZVIvvnmBle7ma5BbhG28wErOqJ2FipY2y9Gnqgt/PEbnKyLAqtNgkN VWXhWKrv6gNY8K/1KEzTEoIQE4+VSNvWdEdQBe0E5aklqm129TVBR5O0OuZek5tJAta4 hhMQ== X-Forwarded-Encrypted: i=1; AJvYcCXcoK0NJgX6AoM8SMeSs6j5Tpq2fRtUGBwGP4V009Jm2HxoVKQ3JW00A5bSJ27GLKlvie54GWIz7e0gz4c=@vger.kernel.org X-Gm-Message-State: AOJu0YxZU2K3lZJ3ukueNeheAryfTy95a0VFFCEnA0fmHpHX8b06s2gm q9ON+EK+jFZY8C3ppGVw4ygil9se5DYNzeJdHrsJmild192RkTkkgC/u X-Gm-Gg: ATEYQzz9SpWjOgM5H2ce3apYtCV8Md7oropWz0ceosaNX8TdGh/EF/dyGeh+5zFwLK2 KGRyW0yb6AVSJZ+ov3xs7/TcYKogPuc7gcZ45Id7KLHZ9v0embvjifYKHKlbD6SbWXBBDr4q23O GbnA1Vi/v8Pgt9fU0iywm6QZ1E3KjdDbcKDf7dOaHEoT3pJy8HlbLQVaDdA7nPtcf9coTMNekYr TKPGeXxNFUitLDRPlKDdaf4R6jMkNR0q5+mxJzSXetL0FWIO35qpX1rvrpEVYEjUCxz+IKRBIut mQm2xUC50CIrasYH6J5HCHUMOtTQsc7gUZJZGgSRBmOQZj1mZNWjX1MGMoQxx4wFx53RH4LB7jc rhArj5PFL6HBH3c9vrPpfyggdI3+8toj9PGQ+Jyz6mjwgCMmBAhUNd2viOpLbo+0y/uHfsgwzS3 nIm7fWt6dgK/Vzi4KjZFTKpUaO9aKacGMnAVlZA1ir/eJT+hwj3lJ+uxySnChINwd7 X-Received: by 2002:a05:6000:49:b0:439:be67:a02d with SMTP id ffacd0b85a97d-439da67c0c9mr15289084f8f.31.1773056429202; Mon, 09 Mar 2026 04:40:29 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:28 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:11 +0100 Subject: [PATCH v2 1/7] mmc: sdhci-of-k1: enable essential clock infrastructure for SD operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-1-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 Ensure SD card pins receive clock signals by enabling pad clock generation and overriding automatic clock gating. Required for all SD operation modes. Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- 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 0cc97e23a2f9c7b2f9376318a8a7ebb860571504..585c7eca6ebf253aac466dd37ce= f029deb63f692 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -20,6 +20,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) @@ -100,6 +107,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 9 11:16:51 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A2D73A4F5A for ; Mon, 9 Mar 2026 11:40:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056434; cv=none; b=U+VlJat5Xue/s62f2LITzdwqutdMdEudndMpb/ApSAemz1tXSD0nhsnHORfkDrfOQi61M1YB/YPdhtCYoXhLEoKV9kA4tCZtEQBURaJCrhO4+p0cuLYhsTepP3D0+jYXm3xMfXv3G9BCf+TyxlWXMpxOxGzAcw6oyNOTC8eiGmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056434; c=relaxed/simple; bh=GhO1Ie4U3ZfzS4l/Ko0p5yu5WuTegwhHbdrsMIKUNZ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K8YgIguvo4wMG/TsUXJ0katoj7WZNz7P3qolWW/FhU7FIO0saEHlCg50eSQqWOOEVtAVUH75X+KD0s86rII+v3/ln2CLXIJ3l2UUC+LDcLj2i61n4vgV22GnnoPlpiSYWTgzKGfd6aSfMTjbdZw1WrL5cwxOWLbsRODQYHEJyhk= 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=DmxpFcAa; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DmxpFcAa" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-439a89b6fd0so8222247f8f.2 for ; Mon, 09 Mar 2026 04:40:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056431; x=1773661231; 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=QJ9vHPA28uIZwZHl6zG8+rB5ttucBEvrM8sqwTl5hfg=; b=DmxpFcAaG7alNzILosNXpfsl2/EqpimYl7Jm0nr7qPYgj06q7uowCLzc/S7u0IVWrf h5oW/AEo1dyK8TrrPLCXkX8XSXoHsNBlReinzSCWbReLuqWJoHVuNy1IrLAtna3MuS8i 6ZOXkCH0pbrisHZ6exDNEP3t7Q/rYm68kGB4hWRSCyRTfuqYee3dnA0BSq3rwYZhKpIz fEuD4BurQg6H61K2PYY9jxv/W4Uw1Ljy2/rKV7C/19LboIo5ctO0yR+1SEMKxcTppRYl RPH2Kc6W5Tn6oCpm1LYvzabn8jsPJP6xZddX9kgmxhdS9lYNgf5+g822G4h9s+XRcpZ4 Hl9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056431; x=1773661231; 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=QJ9vHPA28uIZwZHl6zG8+rB5ttucBEvrM8sqwTl5hfg=; b=Ra+SmmIzESrB53avxeuamj3dizGZKMAyZ0CdM5475C1+0aQ7dIrd64fcxSWXkL9gyb cQtpzdOPbcl5laNNW9ghpSzDXpg8Va0/qT2DMiGxEradgSNT0noOs9a+fjk8zrlrRc4U D0K/JAVW6YseiP2g9d6QZByq/SvPOmyhqiI49WyOE/G9RghmAEbaJXeuuNKi9gU87rM2 1F/sHxQzbD7y0sNjS3pwBCq/KwhOsAkHoHt9h82jvA093RDpDpmSGMIp+XSOOlN8GfsX HQIsPSSb4WBYb6oJvL/w3166BbXVlF8q2sLx+pfObR2z0qTJ5ViQeHnscx+2bpOiuVXh 4WUg== X-Forwarded-Encrypted: i=1; AJvYcCU0ecSkeaZ4+/ZOs2uq24tT6BvRe1nFTwEfL/pT8VLpCHS6+JyToMyrHpkNF8OkzGHHpMJTfpEnJZr06pg=@vger.kernel.org X-Gm-Message-State: AOJu0Yxk2Z4r/RbXg42yuGuXzixmlxH0XXWT+IhCOAyYkLh6wRaFdrGF n95gBGTZ667vo+RARMCQ7gGHL1ret5JsPHkP7eNX2W18HJHmdHkTZX4q X-Gm-Gg: ATEYQzwEtUoLdlbCUlp6hPKXMn5eldic8lxZXy4lO+8gJgfI8/KgJeZ8+jmLot9M5FT ZqpZgMFwB23Ag8e3igmjAgjgiUgLlIplsQX7il/PI54+oWSip5JkcSeQVvtuSUg4LXFeQIm3TJu l44q4iQGr0hG3+SC0tGbhta1HjxTXrZb5P/iAb1SY2OT17lEZ0V3J5+iYsqAq2e8jZLomfKjAgI gQG/qf/ph1z4zZozPle05k2YLlIHlfwKZseNQIzuBvG+BL7ciN1o3tIW/ycHOEm8qSpifUEm34j BmxaQWMkw9BXu7KeA8hvzqj6MePGZ4c3iROEoNqkKTToSjATNhI/PWPQZAIdDxU4BlTjWIpeE1G MRFiXQcMr8mjRrqIWwBIbmfpdtyF2CQr7RKBdUNuJhGdB5WEuPAmVYa/QINat50RBJOLXEJKRTu 0Dl7OJ9gLE2mcV8JQZ4MFukUGF4frgfGo4k3lQwJEY9CIWJ/gFOHTcvfB1SaIW1kRW X-Received: by 2002:a05:6000:24c9:b0:439:cc06:e134 with SMTP id ffacd0b85a97d-439da6632bcmr19064373f8f.24.1773056431160; Mon, 09 Mar 2026 04:40:31 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:30 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:12 +0100 Subject: [PATCH v2 2/7] mmc: sdhci-of-k1: add regulator and pinctrl voltage switching support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-2-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 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. Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- drivers/mmc/host/sdhci-of-k1.c | 59 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 59 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 585c7eca6ebf253aac466dd37cef029deb63f692..8af117a8e271c04a80d8dc7bb5c= e12075652dd7a 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -15,6 +15,7 @@ #include #include #include +#include #include =20 #include "sdhci.h" @@ -70,6 +71,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 */ @@ -218,6 +222,42 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) SPACEMIT_SDHC_PHY_CTRL_REG); } =20 +static void spacemit_sdhci_voltage_switch(struct sdhci_host *host) +{ + struct sdhci_pltfm_host *pltfm_host =3D sdhci_priv(host); + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + struct mmc_ios *ios =3D &host->mmc->ios; + struct pinctrl_state *state; + int ret; + + /* Select appropriate pinctrl state based on signal voltage */ + if (sdhst->pinctrl) { + 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(host->mmc), "unsupported voltage %d\n", + ios->signal_voltage); + return; + } + + if (state) { + ret =3D pinctrl_select_state(sdhst->pinctrl, state); + if (ret) { + dev_warn(mmc_dev(host->mmc), + "failed to select pinctrl state: %d\n", ret); + return; + } + dev_dbg(mmc_dev(host->mmc), "switched to %s pinctrl state\n", + ios->signal_voltage =3D=3D MMC_SIGNAL_VOLTAGE_180 ? "UHS" : "default"); + } + } +} + static inline int spacemit_sdhci_get_clocks(struct device *dev, struct sdhci_pltfm_host *pltfm_host) { @@ -242,6 +282,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, + .voltage_switch =3D spacemit_sdhci_voltage_switch, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { @@ -293,6 +334,24 @@ static int spacemit_sdhci_probe(struct platform_device= *pdev) =20 host->mmc->caps |=3D MMC_CAP_NEED_RSP_BUSY; =20 + sdhst =3D sdhci_pltfm_priv(pltfm_host); + sdhst->pinctrl =3D devm_pinctrl_get(dev); + if (!IS_ERR(sdhst->pinctrl)) { + 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); + } else { + sdhst->pinctrl =3D NULL; + dev_dbg(dev, "pinctrl not available, voltage switching will work without= it\n"); + } + ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); if (ret) goto err_pltfm; --=20 2.53.0 From nobody Thu Apr 9 11:16:51 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.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 E1FD93A6419 for ; Mon, 9 Mar 2026 11:40:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056436; cv=none; b=dmIVErpoGAXwrLGau1KQWvXRAzU2AJwPLkVY0lXj50wAWlc5EdyJcYLphGbCQBm2iOtIJe4woyTqUEXnQENTDZZw420AtWuxcNm5nsomkNX1K9PPjjLMbZTsjWPRix77B9zr47JYyr3vwEWR44NkdPQ5a34sh/RwnT1Y7Fvoy48= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056436; c=relaxed/simple; bh=zh+ggJ1R5qBO3E8+3w58NjmsHpAAdOtGm81LBUggVYg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OVn/NWWV3fOc3vP318M8jU1LjxAR2ma4JU7wKrbI6/BYt30cf2yJtlrrvuMd3cBDGlc4F4dfK7mPuU9O6mPbCCkGQM2Gv+Q++RjPJsQ19JKK4sDh8lXE6mdMjnfPtqQnrJmwmjR86EDfAzudITrqAbVPe8KdbNwlTS3d/3YFp2U= 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=YbOxcgVe; arc=none smtp.client-ip=209.85.221.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="YbOxcgVe" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-439c5b40f60so4566178f8f.0 for ; Mon, 09 Mar 2026 04:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056433; x=1773661233; 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=0YpjhzcIYcSxtAdjQVzNzPM/tyjIJ5Q1jULtAL2eLJs=; b=YbOxcgVeSdqmBtTnmfzA1Er0rtb81Hq1MfmkM043cXL7+VlrsAYETbSRb4lOvMtGKO 5c8Ct6CgijeT0qDpn9alCgz/wq+esAO0W0vNFV+MRwHyIcmDxT4SB3Z1861/WMHbkz7I PlZ2AnM/u48FVaWV3x8OjDtwbrqgb+dv9VUsHBPeVuLI7e/Bo7c5wz7XJGtsqfPtqnGF sEzWMfiWsxgm2oo0J5nl/lNIKaCsr8/FaTN5BGIG+hd0NmBHsE/GZ9guNM12nkY0T2x9 U496Bw9iMHhl7YBc4WSa9pPRUgS6ZjvOar9oayFDadCm0fFMQWqrySsBla9sI57RrsNY TZIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056433; x=1773661233; 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=0YpjhzcIYcSxtAdjQVzNzPM/tyjIJ5Q1jULtAL2eLJs=; b=q/Mlyjycl71xlmtfUYjjPKGZwP4CL5TMcJNnQti4xPnLFLQb3yuxNqAPFmNO20ZtDw DgfXfoCF/kTALpzkxNNyGJjcJKtrrS9gCWh2gRqvO5slRwGK508G3DeHuSoHSj8qoOtQ zY/FCpNL6xChYYDooegQmhy+3ReTBoB5rkUMv0OBjcNkQhOZkzCRLrhoZk1zw2CrSGo+ M/nbs0mkIWbcJBy74L07m5YRollXPthqYnfugwzvO8XNz2VFagDb7980c6KxusQ7Bhyz oiLkP6fy8ekoZGSzMwCAuCqH8uG2bhe6D084s02nTqifugBzGUrx76fQ+vaUAxXb7GeV HFlg== X-Forwarded-Encrypted: i=1; AJvYcCVGM2XUYrHk5zizs9TUSpCFVFYxRgNdfkTsqIv6EXDVKsrGpdFSfs7mEhHLGMsl4zBofMjLpDilrBGuV2Y=@vger.kernel.org X-Gm-Message-State: AOJu0YziWZVK/zJMZZormEsYwenUgjBE3WUwxJorXGdsJNmg/7Y2CoOY g0ogBMJiGvo9pTPA3//57EOC04RtrkltNM2dnqkESWNNedng/ZIauT3R X-Gm-Gg: ATEYQzwrVLwuVX1Lhm7k466nKyIyjqPg44IUOhtJ3b1KRbVh5f0Wx5EgedaFe5ZhJtu NTtmAc/GS2zQ8tYo9uXGIZM3vAo5uU4hT6DmPROR134lJnKT+ExJTOx2ULWsKgWFrjceXZJb3mt eyEFBPFIY96NOAD10ObxKzj3fgrBLQOdSV6/C0/1xCYPRAO8K1KgiNvJQl1sIrKe5XIDnmwmTyc THz6V/sS7+e1WPCyinEMCfZQ3/zHgvtq6iAvRJT6qlbDI57IXRZdapmilW//DCX6I+dAnsIY67r yLvLTgcyDntWechWoBdKBSfRM5cMgWTnMaHkHiEbHOvcsKOLc/b44AUyvRlRBDMRtZPt18EgIsC YxqMqjTUFUIaq6F644gSvsTJWqDOQ30UomDf/oBmjWES7aRhK1/D2akHfJ+dDlYvDeBB2PIpQDg +KcFOI5WSVEG/8a6UIwvuBRoUynyfUVfRwMJyppO/+dA38x9whHW/5+6zJYK4EzpUj X-Received: by 2002:a05:6000:3112:b0:439:d242:e8fe with SMTP id ffacd0b85a97d-439da348327mr18838818f8f.11.1773056433101; Mon, 09 Mar 2026 04:40:33 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:32 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:13 +0100 Subject: [PATCH v2 3/7] mmc: sdhci-of-k1: add SDR tuning 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: <20260309-orangepi-sd-card-uhs-v2-3-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 Add register definitions and delay line control functions to prepare for SDR50/SDR104 tuning support: - Add tuning register definitions (RX_CFG, DLINE_CTRL, DLINE_CFG) - Add delay line control helper functions - Add tuning preparation function This infrastructure prepares for implementing the SDR tuning algorithm while maintaining all existing functionality. Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- drivers/mmc/host/sdhci-of-k1.c | 61 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 61 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 8af117a8e271c04a80d8dc7bb5ce12075652dd7a..79cb7c8d0b6d9c4206bf0172165= 1c8efe8a173c9 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -68,6 +68,23 @@ #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 + struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; @@ -95,6 +112,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); --=20 2.53.0 From nobody Thu Apr 9 11:16:51 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 F11C13A784F for ; Mon, 9 Mar 2026 11:40:36 +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=1773056438; cv=none; b=GEqVu4SZwl1ETjsLp0dqF9oaSuMjY2pHsEA0ZlHQWfdNdDq4EeEsizKmbdAeld5GFPJHbKw2vWwJq23nXMaBNjfiXf2+6ZHRJlE1AIq1M/5emmC5CZE5v+BPebjnwkgTZDtLWR1DnYfALHPDqaHU5QIFKdp4KNiZqvDDmoVKZEE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056438; c=relaxed/simple; bh=iawZxXCHV/teSW9TbByTZ0aCl2jCak1q3AZVPQS3+5c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AV3utJPWjKpsMx5UrWvA+7h5bYLvl0yqxqArXJBjXz1pvEUvXNfBQEUutVif1VxWkMZ0UjP/rPtLiqRPcXkrdjfKnq/DjvILJJwY5FcBQdTc3iSa3D5ElRNBUsjv6Vhpk3ARQaJ5dHG7jtd8UFy56ZLo2TxO9abi4A040CWLhjI= 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=KrgWMTOn; 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="KrgWMTOn" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-439d8df7620so1943818f8f.0 for ; Mon, 09 Mar 2026 04:40:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056435; x=1773661235; 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=SQ9F92hXIJmt/OqV8+0Y8qWB6C+g5fuewMC6KiuhW88=; b=KrgWMTOnsO8lwwizqhdDWJnLDXQpcAOenotW3cn2jOgnEozvbH9RJXGfwfAqWa3QTb pn5rxFO8y9KZwweEVkn9gdpfImgL2j01bwpsiggntdHMHXSs+RRorjigdz5N4XB/pZSz kjfWD4Zy1W6ovBcUW0eviSDjUO5xTIM+09HYdZtcTuN+OtHXXc+s+nJVNTXFymrekFhh 6RnRTQowA4YFgkb1nGtyD4iFukeYZysYlAwR24OIkSt4i2NTeCutHnfTW/UvEM1StOwg fC1XAUG40qTDWdaVt5DqzqvVlVD98jQ9bu46SeMIXBsygfInwkm1EiKApe0LdCtHs+Y/ tILw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056435; x=1773661235; 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=SQ9F92hXIJmt/OqV8+0Y8qWB6C+g5fuewMC6KiuhW88=; b=OZ+u6evOpGE7j048SPUh+9S0KfB74Q2bdA8VnHx/nSH2ydzX+fIq3oZ9BRSIXvO71q 9v3w/sbW58mJI+6S5SpgFd0bGnccyhH5bQJfPKUgXpKu0PZ5DY5SGoYLN6hI1MZFFIdd 0TjzveWCIdIjgUGiZ9kvqOssMUjPXti4841YCkmaMn1NJ3+6uF1W5q7bbnkeAB0Q7H7W GpjloJK/iWDZATFiP3ricEwtbD/n5V9ad43eLy6BhdMzwJ5G36kF3llJ5jFTOqhQOgKt F+dgJYmGlJ+ilng5qv2YXJEe+wFYkDwqMH5Xp8A5qzMk8+lfJKSnPX9hcOSx7Rr15qOP KRCg== X-Forwarded-Encrypted: i=1; AJvYcCVizF9wdNin6HFJXiMH35lFAkQqT+gZw7WuUN5PI0iQTc+ssLtzr6YjEgx0UI53YHsB8+Ej7zG3+G8iyBM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7IWTO4YmUhYGQ/PT/XY/yE6SgMOfDi0KjWd+y+b8CyOaPvYpJ XxPrerlMfQ/LMg1IA64zVjoJIeQpg9Q3VYEW1W60Sd+f6ZgUSxWQId26 X-Gm-Gg: ATEYQzyBU6eeFdowNof0aNGAPz+b4QcL/5VQd4oYZvz0HMOHCYxqtr3HuihWYhlCUHk xJvEMT0I6uhbFWXDj90BAIQyQJq1zIDCtaiUGO2P+0XB3rm862xSNvlVYm51rWkiJQ41mnvHNpu CrXuWXd9J6JDBkI1xoHK6a2EpIHLgEs7evTVeL9s9pSM+Jg3CM6Xn8Tar/vpdrdmYkHObfaFIQS mLBtvAAk1Pnrhwv4fCEatwN1TbegBhh08QrF0LaQ5rd83JgvfTqdIOStMXEJEohSJBnFliVXOcE tfNacp0zB1WUgaPE2jB+0QhHWDPfNKkR7Gd8q+an2+0n8tde+HcdxlApwEO1i3H52kFrAB6R+S4 pOA+vhMVmqNPYNDTvChKusq3ujBAOuJTpp27DAsu062I1rKrqHq41Hik4Wvt/zrjQYWZQ5hJfae pZ7hcQBZQQuirkTs85X688eis7L8caUHyWnjXgzOWMKXZYrOFEdlYieUhGi4SaXgLg X-Received: by 2002:a05:6000:1886:b0:439:b541:a091 with SMTP id ffacd0b85a97d-439da8a2cd8mr18675754f8f.56.1773056435052; Mon, 09 Mar 2026 04:40:35 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:34 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:14 +0100 Subject: [PATCH v2 4/7] mmc: sdhci-of-k1: add comprehensive SDR tuning support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-4-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 Implement software tuning algorithm to enable UHS-I SDR modes for SD card operation. This adds both TX and RX delay line tuning based on the SpacemiT K1 controller capabilities. Key features: - Conditional tuning: only tune when SD card is present and for high-speed modes (=E2=89=A5100MHz) - TX tuning: configure transmit delay line with default values (dline_reg=3D0, delaycode=3D127) to ensure optimal signal output timing - RX tuning: test full delay range (0-255) with window detection algorithm to find optimal receive timing - Retry mechanism: multiple fallback delays within optimal window for improved reliability - Complete register support: add delay line control and configuration register definitions for fine-grained timing control Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- drivers/mmc/host/sdhci-of-k1.c | 119 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 119 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 79cb7c8d0b6d9c4206bf01721651c8efe8a173c9..d903851b9be0e1d21a2b30636f5= e63a52cad0dc2 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -84,6 +84,12 @@ #define SDHC_TX_DLINE_REG_MASK GENMASK(23, 16) =20 #define SPACEMIT_RX_DLINE_REG 9 +#define SPACEMIT_RX_TUNE_DELAY_MIN 0x0 +#define SPACEMIT_RX_TUNE_DELAY_MAX 0xFF +#define SPACEMIT_RX_TUNE_DELAY_STEP 0x1 + +#define SPACEMIT_TX_TUNING_DLINE_REG 0x00 +#define SPACEMIT_TX_TUNING_DELAYCODE 127 =20 struct spacemit_sdhci_host { struct clk *clk_core; @@ -251,6 +257,118 @@ 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 ret =3D 0; + int i; + bool pass_window[SPACEMIT_RX_TUNE_DELAY_MAX + 1] =3D {false}; + int pass_len =3D 0, pass_start =3D 0, max_pass_len =3D 0, max_pass_start = =3D 0; + u8 final_delay; + struct mmc_host *mmc =3D host->mmc; + struct mmc_ios ios =3D mmc->ios; + + /* + * 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_SD) && !mmc->ops->get_cd(mmc)) + 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 +=3D SPACEMIT_RX_TUNE_DELAY_STEP) { + spacemit_sdhci_set_rx_delay(host, i); + + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + pass_window[i] =3D (ret =3D=3D 0); + + dev_dbg(mmc_dev(host->mmc), "RX delay %d: %s\n", + i, pass_window[i] ? "pass" : "fail"); + } + + for (i =3D SPACEMIT_RX_TUNE_DELAY_MIN; i <=3D SPACEMIT_RX_TUNE_DELAY_MAX; + i +=3D SPACEMIT_RX_TUNE_DELAY_STEP) { + if (pass_window[i]) { + if (pass_len =3D=3D 0) + pass_start =3D i; + pass_len++; + } else { + if (pass_len > max_pass_len) { + max_pass_len =3D pass_len; + max_pass_start =3D pass_start; + } + pass_len =3D 0; + } + } + + if (pass_len > max_pass_len) { + max_pass_len =3D pass_len; + max_pass_start =3D pass_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); @@ -344,6 +462,7 @@ static const struct sdhci_ops spacemit_sdhci_ops =3D { .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, .voltage_switch =3D spacemit_sdhci_voltage_switch, + .platform_execute_tuning =3D spacemit_sdhci_execute_tuning, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { --=20 2.53.0 From nobody Thu Apr 9 11:16:51 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 014843A7F59 for ; Mon, 9 Mar 2026 11:40:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056440; cv=none; b=JsbDm2AKxefHZUKeG1mAA8tAnbBmCTI/VIcVeIoQNTnwkf1mVcddcL6ntyeVmH9G4OIPC/UoSK1zmMEK+in2edjBizRPMt1ckxSBj4WFvpue3WbztAjkYZF666sgHGHuTzSQXrpFlAsv7/vEeOwLnBqJJFgUknI2DtxSrDFOxiM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056440; c=relaxed/simple; bh=dcEFhqPvKdwQuanA4mTY4Hc01u8XbBg6NksC+/+CuBo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hU1Lxi7LOmCQ9M9uTtLvBHHYadBLz5lTjHKdpniE5qX41gFfLT1oNONNqK6HNshRA+sGKEMko2x1LRaRGHx6egy9T9qVVHhyhZ+Qaw8ebJFDGI0coY8lIuG13uKd7vKIUPvAHEXYO5WYtC0xeg7ZEP9lauYpZk9esbFgxN6KLV8= 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=W9J5RCd4; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="W9J5RCd4" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-4327790c4e9so8911832f8f.2 for ; Mon, 09 Mar 2026 04:40:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056437; x=1773661237; 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=Dz1rwkI02gKLCCAejR8NRcSe9CYDdLI50V/yGcp3k+8=; b=W9J5RCd4/AJuQMbvaD3+AxuLgU0BVfBWhuiMEw/DNQiV1xBSBSXmpNjoZDLvKhe1n0 7cavoBXHtCmLmRaFEZl10JarFpK5JUuqoE4+MK5PzMHWIvCtRpb20rXQS0j+DbQIC7hD 9bt151fTEr0kvRU3E1vQVLtXuJmPbIAYQ6uojEiPhbFrZwPP6hHe6IWp5/lT0PubirH9 fdwBJisxg+NH3ufrpbOMZwSBAcg9ern/sqXp4n6OPAI5kzZp/4CSSw6s183gKW+mSsSy 3cSovexHi+6nqxQ4EEQxxvkCSTfQG00QERGuvai3wPvfiVwXFhZ7bBf+MN42qkutdopF x1yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056437; x=1773661237; 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=Dz1rwkI02gKLCCAejR8NRcSe9CYDdLI50V/yGcp3k+8=; b=IAxROKyaaXJlDIUJj+MDtK2LQ37YCWEt6wJeCN1OhHVxV6izQpLGoWpHBfb7nlWVnB Qi0LXW5Qs7iP7j+ROECoSLaLNSVeXsIK1NCGR+cNl+9Hmcfs1XyedHgMHjqYPSJ+5OeS Qw9caBL725mpkNnrgAsbevXT6HXdRPi0Gp3wt9RVfuITN+wT/AyPG6V0qO4gIipngJSP wEAdufWQz+CDkQE63XPlB9GlltLGmOiOg2hPlpvDIO/8rBTuf7onjFxOC/vLYPYMherS LluXXuBLQmqYeQ5+uZJu3EcBpbr2UNzzW2JaW8pRWGhG8CFxzg+EQxbW4RKaWQynsnLE 5Amw== X-Forwarded-Encrypted: i=1; AJvYcCWCmiIlhT9m1+QDg4w1wVAbVdCp0gstP5awE/o2hbclHIht6D1JlwdEBgc+H4ffxaQs3jQeU/7NL6/bZd8=@vger.kernel.org X-Gm-Message-State: AOJu0YxhEdyiTfv+3Xt2nN6ybxMR0EQW8YhZ5Tu8+JiCVugU5jU4Ta6A byENpshaXk0tYhCl3moLigGASqiFpyL7WDtY4rzHqVkOcKQYv3/TQXpR X-Gm-Gg: ATEYQzxCIJFdFFFPqk78hz1Dn2hgFV17bXLoEayH1Y1F1Y8oVqptjazN8uDN8nW01XM 7F16cfGTFAW/HnEiUlEacVyt9ior8TDVanaYX0azmc3lSgdBoG6s2epVBAlPxCm0t81Ht2IKjMg tTYam2V9pKPot54dhPQX8LETfyswyL3A14AEUeq12NXrjLQDkGDOuXzguYkjJDs4xu2IIYkMjoA c9g8vEeA02AJcALoKu7eEOGr1p5manW5bkXN0jfk0WFj1qT94Etk2S96g4VrSCg1yhKvfa7FxEt e0QUQH8CAbyRRjakDFhhiY04zhhueAPKlVTFHzxi9gwp75Oc3W870SdOPrZ/nlyQADDYYXqPeNG l0N8LQU9+atIxCjs6B7eTScvDC+SEZNHvtdcw+gF1nm6WUH6Hd1R3+IfsU4C6DcupiBj8veQX2b qyldp9kenzy41WmCGdYT1sCks9xlRApbzQLqOwgLSWTu4W4UkCtlPeA11YyXNtDik0dhXCMtjAp 4o= X-Received: by 2002:a5d:5d06:0:b0:439:bb14:23ed with SMTP id ffacd0b85a97d-439da6694afmr18775197f8f.24.1773056437144; Mon, 09 Mar 2026 04:40:37 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:36 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:15 +0100 Subject: [PATCH v2 5/7] riscv: dts: spacemit: k1: add SD card controller and pinctrl support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-5-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 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. Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- 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 529ec68e9c23eb2a93c04e9ccd3f22a01c4cc4ff..1e9e4f4f41c196326f20c0e5ae6= 721ea85ea5091 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -1207,6 +1207,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 9 11:16:51 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4BE63A7F79 for ; Mon, 9 Mar 2026 11:40:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056442; cv=none; b=uVGJGgShhvb+b1Vmi17ILAefC3js3a8HxvZSCaUphWIzhvMn/rruw0VZfThJ1OhFjtGglAaBqXigHkYDXDWPMQ4huhU7fdnQuSRyWbkWNFBC6uY+6bNKihlOyYuNviKj8uvG7WyNhBYg6PO1B3+qPgNk7LJ9KgS5xNe7aaDXZME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056442; c=relaxed/simple; bh=70rfTlR2IAWuKF6gWYOHTAy0yzzcBoXO6BwKFGm1+do=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o8vejVF16i6DQOWCTYJ4AUpDTXcteVG5uwPLqlb9ceM5udHupLILn26KwNRXiMgS7RnPtG+mt6JbiysOvIK0CG2n9Vu3Z6d1BGOGQVX9J1Ah0XNLVBRnVLrOxhNdP2JMcADWb6sJZRBZaeiEOj5b281fY2nEJdZ4pa5qwH++0js= 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=AAVWuHyL; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AAVWuHyL" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-439ac15f35fso8135700f8f.0 for ; Mon, 09 Mar 2026 04:40:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056439; x=1773661239; 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=fiI3b1wOWntFX27ERmDlj5qmTKTz44jgUTrCNSLGaQE=; b=AAVWuHyLLmfrtEVjOCtkclg1QcokC9MoiaMcoW1ZxweqX3Q1pxgdc6H4dTVS39yj07 TBuv+0an4vN1oYej1j6ofNlG8HeAzzGJ2PIp3kRkTBQZ0bdtMaJ1mzHZOGV442KjvKZ7 cORcOI9W5Chpj3undbDQwNmpNkhWEfRplJ3a2O2GG+iEKFhgrvv7GE+IQlz6qWVDZGH3 WybKzXzL/NMcoemX9zWD8QYgHCg8wGM6H5BJKCd1q/b7YIAQDTxlP2iw9A6lk9A2ur5q 5WcI9iyt2Cyt7jXwM5+t+mPQWOURxHY24bWb3oCif3M/wr2Qz6YLGopAnmTWnTZVrqkJ jTAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056439; x=1773661239; 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=fiI3b1wOWntFX27ERmDlj5qmTKTz44jgUTrCNSLGaQE=; b=T3trd1o1BqTHmhLN6+ImVHg7eUohFJ13D6q0hfnAYLpFYi7Sv9wffLaDMwDbzT8rZv sG7n4orMTeeS7n4F4P4z5OR1PNaxl5z7prXA/soJsiimRF3djuTWZfg1qJn2BBkPGgfy em5JqunJRUT5r9RvsIdD3ALW3s71aC6XulvtlFqaaUHQRELwj5H5IbVc29PDZDeZTPky WdQae/2QOgLIRdQeKiLAKgFokk6ET87jsdNnLYOYSbPWb0Q1ikTBKl9KTmvH9EykMIM7 Fw0zW6e7OlCV9CnALA3NiVsVAjsngtU3cTmjSQ8gRXwucWrTWZeD+SOj0U6YfGCcbpu8 6F4w== X-Forwarded-Encrypted: i=1; AJvYcCU38AUjJyzf0YtWPOEdag/NFEkmBbRV4wjmtN0ScH/jbD/1SKp+VE9o3nXaXNGVJFJ3KCR15sgUXhsOEuA=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2H+q9Y/yEN12m08IrZvJwOGpN3KNkmHSV+LvRoIn2tUZNZhEj E5RjoKCfCzIVrMMAmf/mPe8WGVz9naKVqz1oLBtPC4SbL/A1YV991F0F X-Gm-Gg: ATEYQzz4t5oW4GrJSG9vsNUhhi0WrqxtVDkoOgKckc23lFridBV23JOUFlyXoe7sTn2 E6dma9p6FIjL5AsT7nmuCWH1e28nJGDvM4Orq0ySr6He5C1LzZN330Oh+paMn+9IctoPN9S4hdB 6gpn6LwKZwxbILl34sPkqZ3x8yk46wMYGlEGearZwDa3HWnvvHEQUBgT85wkL5ostmjpp/2DfkB h5qTwoekmjKjxOGlVUhmeH6K40o6L61RjCjxwHt1WchocleuqnI82/ggc+jfzC0TzDBGIVvJ9rw 2ZxNvLRUWnmNCXLoR+bP62FrHo+tKvr6fwRbFnb539Ks1MDfch31eZ8eyRf+AHbD6Y9gId0XbkN s/b2K7bNtSHDxN/fUmgCj99yn/7xrsqtN0LfiaTr9cmlSCf+phfb09BuUzY7IIX1YaYohM7x5UN JX31igpG0HWIwQg0ZiSC2Ub3QvfHO9/y7hI7zx81if40bRxJMtuYsXsSzjSbtQzjhy X-Received: by 2002:a5d:5d84:0:b0:439:bc0a:4164 with SMTP id ffacd0b85a97d-439da330b92mr19644526f8f.19.1773056439050; Mon, 09 Mar 2026 04:40:39 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:38 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:16 +0100 Subject: [PATCH v2 6/7] riscv: dts: spacemit: k1-orangepi-rv2: add PMIC and power infrastructure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-6-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 Add Spacemit P1 PMIC configuration and board power infrastructure for voltage regulation support. - Add board power regulators (12V input, 4V rail) - Enable I2C8 for PMIC communication - Configure PMIC with buck4 (vmmc) and aldo1 (vqmmc) regulators - Set up regulator constraints for SD card operation Signed-off-by: Iker Pedrosa Tested-by: Anand Moon --- 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..414b03f5e6480f05f5d7eeaaa0a= fb4e86425ae36 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -19,6 +19,25 @@ aliases { ethernet1 =3D ð1; }; =20 + reg_dc_in: dc-in-12v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_12v"; + regulator-min-microvolt =3D <12000000>; + regulator-max-microvolt =3D <12000000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_vcc_4v: vcc-4v { + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc_4v"; + regulator-min-microvolt =3D <4000000>; + regulator-max-microvolt =3D <4000000>; + regulator-boot-on; + regulator-always-on; + vin-supply =3D <®_dc_in>; + }; + chosen { stdout-path =3D "serial0"; }; @@ -92,3 +111,32 @@ &uart0 { pinctrl-0 =3D <&uart0_2_cfg>; status =3D "okay"; }; + +&i2c8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&i2c8_cfg>; + status =3D "okay"; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + vin-supply =3D <®_vcc_4v>; + + regulators { + sd_vmmc: buck4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3300000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + sd_vqmmc: 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 9 11:16:51 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 AED4D3A9635 for ; Mon, 9 Mar 2026 11:40:42 +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=1773056444; cv=none; b=f0m5Qk4ZxwHlf55tgvDf4G7MjFvyrSFLaKKpE1nWAcnUOg1cwkLLurpaKhwcxOhxyK3QkVeSENqIC+U+FoY3gjzcxMoXSsMp/9Hg1SddA3rwNv+xPsDsaHrwjlzIGzXeI/BURhTvtZGtLUIZW9ceAGram70XttHTA24JSk8ugIk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773056444; c=relaxed/simple; bh=JfN8DfHHQxhwjIM1D93NxIpzHPkcFqd9tyZUtqUCLT8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=metfAzJGmjXgpZfYfXPXaSC+Py7/45Xge+cia8Bo0DBcBeoxLMgBT1vVQxMCIwk8nEaj55V66+PUATtS9zkhX+ITJYpUdCT8oJs76xA5XV7JVVxyjKxbLJrlHR+o8KS8joKOJAuacwLvhSwBeb5U4BLcA/f+ypjmc6rlV9JlFoQ= 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=FcnV2Fva; 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="FcnV2Fva" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-439af7d77f0so7361568f8f.0 for ; Mon, 09 Mar 2026 04:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773056441; x=1773661241; 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=njsRP4EImn90P32g9UPmNNWBlL1/zM1gb0xUIcz/r+Q=; b=FcnV2FvarKhQyFysWmhzj4pSQNkaUgVhuh0J9NmTYb98sNIfQFwL7vdvrF2ouSs+dv j6FPhXyruE+TE3nOneEWUPgRKqwx5eIdJI0NmnHb2bq/mSuznMzbuFQtt8bceRI4s0yr 6rXR9yTrMqFglK1o9IM8JISZxXguY+jVU8Q8SQnOTsjxyftkCXXj9DWYOW+bsNyQOXUD CX6iqIdsWMj3um8IYyYVxusluzpZlZt8dkEItAxHytuM2jJ5WZ6ZNMcdoAMV8CECQPfv ft93pZJczpHJoc1fraJl/C1RW/WDavEeqWyASnbXKiwRhZICBOoN8K7NSZRtBrVAQ0lH zqVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773056441; x=1773661241; 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=njsRP4EImn90P32g9UPmNNWBlL1/zM1gb0xUIcz/r+Q=; b=nV3dbyVQ/Atr2l/8EiAoBst0FvsECaVG0OFlHbkasceYUXwGADk1+lC3K1eaKl3m98 6qtIVNbSwWISIn4va71Fj2Dejd+f7rqPtbhpIeoskZR5E2fg+Ibqr06bdXUwPcjGfjDV lD8bSeuw4nSK4t1jxG1ZWJV5T1+HY3zDbDxawMiolhKSmMNw54C0Dzh5khV0ZojQAGir bfKwYlicDUkwx6wFElt2zlM4erTyYztCbuTBP86nnIvFuCv9KUEvD9Dd+g+QtUY1u0nx Ao1kHVcxv7vgkklY8inRwvQjNogm8ElKuVrRVsIEb8AMxNvhfXXu4AVVsUegDntvFNzx xKUQ== X-Forwarded-Encrypted: i=1; AJvYcCUz5PLj8CkR0dxDOvy4cSB5ZPpydyz+6sHCtZpQbI2+hMkNzfOTkkjycisapRIA1/T4nh8EzkPJ9hMjOqU=@vger.kernel.org X-Gm-Message-State: AOJu0YyzC8/co99PBhmWw4xU7ACD/RiqlpbIFawH1mSkmMPRaXsPPgqA dXehpde8nyGP+9aIdehlrMKbMoP4A+hRP3B8CpzxOoPNhAn67D4dIxCR X-Gm-Gg: ATEYQzzdIv5x7BJ+4jSRGXruGaWurqgzMS5Rnc+zvocmbGfCAZeKpqzxwIQ9d7mahSz iWlk2/xgyYx5Fxi9G6ZEh8FC9ZjPG+IXIZGNfhKNCMk5HxVed0LDevm38YstYBTpKF7KAcxqzC2 Go9iE5tHy49BtT7AsLJYKr3VFo5QLH3nnL4qbOUeOUIUQVbkCjAJFXxC8NzwihCA+gxkOTKs1Uu epOSVKbhEWZnOPr9cAX/5vXnhL/lsdOjdKe4fBAtFxY5WaXYzf9f1uXP8hGGZqJPg7gazeqIMis k40wpg6HCJsTSWCN0KkE9ncrCdh98LSioq2/AKw+kocj9M19YO4BXDig1bz6YTtJ7aUYMYk6lVr jPb/ciTEW7Cg08jGVeRBY3TmvKRJ5caj7nTM5kjx9RxuxpDrHyqfyrfe/ZL3tqVWbZsbVwe2cqf osMpQ756+zMFwJNrOwKim8HItmoyH9dDH+emH42QJV98Qyxg2XrcOJVGFVQlM7bFRE X-Received: by 2002:a05:6000:61e:b0:439:c18f:5aaf with SMTP id ffacd0b85a97d-439da67bf28mr20283499f8f.34.1773056441001; Mon, 09 Mar 2026 04:40:41 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.236.52]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dad8ec97sm28471699f8f.5.2026.03.09.04.40.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:40:40 -0700 (PDT) From: Iker Pedrosa Date: Mon, 09 Mar 2026 12:40:17 +0100 Subject: [PATCH v2 7/7] riscv: dts: spacemit: k1-orangepi-rv2: add SD card support with UHS modes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-orangepi-sd-card-uhs-v2-7-5bb2b574df5d@gmail.com> References: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com> In-Reply-To: <20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@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 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. Signed-off-by: Iker Pedrosa Tested-by: Anand Moon Tested-by: Trevor Gamblin --- 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 414b03f5e6480f05f5d7eeaaa0afb4e86425ae36..361135269801f436703b6f1d768= c91325a52f07f 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 @@ sd_vqmmc: 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 <&sd_vmmc>; + vqmmc-supply =3D <&sd_vqmmc>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.53.0