From nobody Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B73438B148 for ; Mon, 23 Mar 2026 10:19:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261173; cv=none; b=JsKKvN5WF8gtDqmCRvwzdbIVsa04TAIowlca2XFvBXW3zlOKDqmsGzrqzDLlUG7umIZ1qLK+c6Uya+COcCwL9FD4PugSFKN+ERBFy88hFdz/WlP+leMhxbsU7RAasofkRPyyIYPMntNBGlbY44pzN16+NmL7L2z0vtGmNr4TqNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261173; c=relaxed/simple; bh=qUA8SRWMHXak4DMGjiU5xSTobYDglxv6lNBrFgz1elQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GB9V2db+iLBFxBXxhJfBtZBQphSTadvmGoo8K7gYxTIOpteXuG4D99z14Zm3+1RJIw6IUFfibSBNC4p6GkQ8JPCatDuCRZ+1/rsnZt8Xq603vaTqvwSXkQ7QlOijorNGtX+FtZk9CvdWZ9gMG95w42VGtzf0Al+nufmvFuAedow= 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=Ga6pgZT7; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ga6pgZT7" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4852afd42ceso32018625e9.2 for ; Mon, 23 Mar 2026 03:19:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261171; x=1774865971; 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=Ga6pgZT7b6ytinMbdIhxT7vM3/QrBQvXuef/X5KCzK6RVQt4HJVfTdjvxl1udNN5a9 1Eo8Mi0SKCYZeZpDQhTNNJggRvm8QwIBoPvfJ4MGrJRnFTVJfAj/MlN5wH97geU6bnk2 0rgHwl9bGK+wCW9sVkJWsIQKq3AKXoSu6g+E+7OqPuR/yecINcLhgTdEMviI+bk/pt+J SCpdRkItAxkCulKYi8QUmIyJojM2f5vkeTPHrpUNScKO94LIhHunDWNZMplw1UtXyi/v H4LmlDv1m8v1P8VlNhYQWvqsn+lx2os6Kdl8Wxjjrr0PLo6bXgMoIk46pn9QXW/z/GlP kTHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261171; x=1774865971; 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=ct6txWPddFddXAO/4uZRIjJcC3WO3tNtSk37+yMXn5lm00GgVXNHlKD///O+VK3HOa GQEATAd5fE2jvDBJW2p2u+BYtJ6WYbUUQN8BegCL27aRpfmXXLDfU913Um7p6AcaAjHH WcAXdxKOhQS7zW+z5wNYTzIXrFApubYyzVahqiUNnMzfNdasUoCkwMPewe7hXSc36A1+ eDzyMcDlPbbJ+wvtQMrneTuydXzmyayoTolS3j5x625bx9wAe0Xfn3sFPcWTtRNQSyZO RqRANxwws6WTGL379JQOTV7WYMj7bfP4Ry+neZzXOQertfm9QxvQG8JsyPveUJS0bSz5 HJgg== X-Forwarded-Encrypted: i=1; AJvYcCXNu9SpliaHy3c0uLHj/E8pmsUIphZKi727TGgZN0yH1kT4y0zz1OZV/DwJIUWKHo/mav4p0nNFzBzEdRY=@vger.kernel.org X-Gm-Message-State: AOJu0YxNSk83R3CMMPsLsnfCVjmBFmvsTjEZHOfpHsG6HsmJCw+OyRm1 oL93bw4BqnCO93SzOz/21dk4WSF4sJiAZnBQIDyKAyRQ85UIPXDG2mum X-Gm-Gg: ATEYQzwEJILPCWWiQkjswoPGtkCCThXhpqN10xpPdxbSRjDw8L8QddMZdJcVAbrBH6v sfKd3TAmceK0r//m5Nw8nnIHB38RjJX4HRKOvIvH05ZOjvXgCqzBMvwGVzR/6NxIPPVOb9kNC2f i3QUii3CoYyg0yc8WNPgiMHPZyzQ129lkLiudhIx3lWfgwlKt2GDoCKdnKS7tXoWOnMBlaJWNlb xeo6QTDzh4ibCzvxFYHsWysKa1t4LcfEb3asC38btH+z6jN6o8sCzj7Y1/yJWK6hOexP6JExDlp xN6hX65iw1Zt9Kg/70Bw4Z5mSZIiemvlYJaam8ZMQf3Kv1KxK3H1NRL9bJPoMVe9/amkT32ap2w oU+vkLSORdOP1krmawQWacd7imf6T1plLwCXtu/9SC6f+9CPDWzwI4Hq+MZMGbVWus2mXV6X1bB nhreQwfUFEMYzJFILbAX2io4cUyasCGBdQUye8HM49w24y0ZRafvfd8JU9XSHNTsy9 X-Received: by 2002:a05:600c:474f:b0:485:3b34:2f62 with SMTP id 5b1f17b1804b1-486feddb659mr165327915e9.14.1774261170709; Mon, 23 Mar 2026 03:19:30 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:30 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:04 +0100 Subject: [PATCH v4 1/8] 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: <20260323-orangepi-sd-card-uhs-v4-1-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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 Tested-by: Vincent Legoll # OrangePi-RV2 --- 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 Fri Apr 3 20:53:41 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 242E638BF81 for ; Mon, 23 Mar 2026 10:19:34 +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=1774261175; cv=none; b=kNcRPXSozljuMMoGxvsqycB8PLDm+J5Z0+PiYjCW0TceL7RpzP+GX4lMv6xKHmOn5fM71SkuDwrdnR04JDoxembgO6Cvov84XlYG7hZJjPD1W8Vj6VZ+TVUn/Y8dmoGCramN/oPD/PHgyxz2H9FJNZa+jkKShDxAVcthEVaSHLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261175; c=relaxed/simple; bh=r8frD7Ih7/6TDrK7WkKP2nnBDnfc3SHl7IYdzA+pE1w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bCR8f8Ud8ohu74SoK9L0hIS187ojenD0fHS2hmXq6nuz1aG2EBTNoQTk292nAUpp+fqsR/utJOSOyDCi69r7NgLrDybhUqYgRfu/MDCB8n0Xv0UnB20c2CTIzo7czacHvmIIoRrrrT1zAnl/NwePWoUKhnfvNt/MZ/nfw26WIEw= 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=b8xkB6y9; 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="b8xkB6y9" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-486fe2024a9so19250675e9.0 for ; Mon, 23 Mar 2026 03:19:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261173; x=1774865973; 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=2BsT6JJye2hc6dEStRqlQwTUPLoIQwEfV/djOfhm19A=; b=b8xkB6y9xKEIgmZumX7oJkEl0zq1joKr7ab0pGkita9+K8T0T9oRBiAP16GjU1uCKK 4EzyoBMKY8PC950CsjqMuK3qSsnufayVqQtgmuRNNIEe2vsr24ZTqnIF0xShj5xqkv1w jmfXhfXVGAOQmmLRs37cq1K6dcPO533v7t14yiAN1Z2vARXbKup8/pIT5ggYSTgJM4RW ExpvtNkEMNwBzDhpZCD3D5Q4CtMUWInjdN2mjH730dYix2EWgCSMcN/8Riaz8JcYvQFB iZBxQEuRo/QABInucrmbitu7DvtRWLM4Wdr9NEKjs1F33fD7nwPiltV/Zsqkp1JlDXIs w8aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261173; x=1774865973; 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=2BsT6JJye2hc6dEStRqlQwTUPLoIQwEfV/djOfhm19A=; b=THwL58IOgMJetM5F7Ln4j87EjmQDEr3ScASY98I4mD+FJGtykL7IezBB8N1hV9Rht/ 2P/ObPJYvw6V++rTqzilxlEZpVbd3/1dMIBe6DabcycudJfVy3nFOfhMawFoM1ui3neS iiXqS/Z36beqPCV2j5FJCIBrBvKP1vcF5f0DgL45dCEyIRcxlMvhgtZCGXJIDW2MC4DT hrhHwHPy9HXkUkF6Wzv/jnwpIX1Ku88+4Uppy2lUOaa84lD61KNG7Kj4yZBmnjfq+QKp u2Kq26hlVG+WPcNjlQQGlO6L7138jpHj9qLo7CuPZZK545Lthi9pCLhl/exw9ZxrPT/G STPQ== X-Forwarded-Encrypted: i=1; AJvYcCWsziB9auMWCo9o+WNIxXT6ply1BlAQedJFQoAPk6zA0ZDhf+ueKYC2VZb6an0igf6Z09bAkxov4RWShTM=@vger.kernel.org X-Gm-Message-State: AOJu0YybaUTBrvw5Bm1Mf9QiZ+wdm8B0WQkwYKjqxcQK9UH0C7w9cMci NT7fG7s3G1IDJYJVsu8+I26Zc4I00aLOI5z1Sd/pmZLNWj+60p8RH4Rr X-Gm-Gg: ATEYQzy6KcVftjOyEkpqYSJ2hK/aqE7f0CSMYYdWapTzW/x26X6dsp/7d1C952opm2m vmh5SuOeDj4wv2BHjXb+G0cd9mS5iHFkvHjjlbkgZuWYwvw7z5WofMXo17nHPpsrmEOZCo5tl96 tO1ZsH8V6vj+d/pzNTnjCSXbpvfuHDXSk2MkMgOngDiXv48ze99SjokBchwyJ+gHHaSsEzkpYQ4 xu/+rBGOP59MkPfGfYjuIedSMpbOopUYNr4veHDj+8JgNBt6PYqAX5m0wQ07JUruZE05h41Uqhs 2bfwsr2qUwd290EICFCD7yRTfDcpiH0TyT1Yjit3BMHwdtlG5Q4xWB59SjeVcAUgm3TXAGkEN1c F2vTVsbJblxnxwrmUav09RceOL+x9nkR4R5IVDGysx64G9C+n7vlNlY/Lziiswaqtw0jjgYJ96w MKO8/gauz/Ro1pWtSadIAE6DZUXl67sb8N0+LGXlWxeoOFpcUD6Sy4tZGuHhb2Xutt X-Received: by 2002:a05:600c:45c5:b0:485:3b34:2f51 with SMTP id 5b1f17b1804b1-486febbc66bmr166065695e9.4.1774261172487; Mon, 23 Mar 2026 03:19:32 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:32 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:05 +0100 Subject: [PATCH v4 2/8] 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: <20260323-orangepi-sd-card-uhs-v4-2-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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 Signed-off-by: Iker Pedrosa Acked-by: Adrian Hunter Tested-by: Vincent Legoll # OrangePi-RV2 --- 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 Fri Apr 3 20:53:41 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 EF66038C2C2 for ; Mon, 23 Mar 2026 10:19:35 +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=1774261177; cv=none; b=L7n6B781R4DOy7RmF8GRYwAkKzRKAS3YEUGI0qdOujitZ1Aa84o9fp32Ras9fuKAPMpGMbE+//DNcZYsUiHJHfKWGcQhYF/Uztssu8AgfHgMQ0h1Z9Cltglr3ZMxUTkpS2jLS4CwI+SFw1I5Qbbl1NAFbWwhi++6VHIlB43ccvU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261177; 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=fud7Zth2zPGTpnMarjpYj7KmuRQPpngkbY4DTTSGok9OKypabj7iGnuLboWwowlX0E6FSisoF6bTeF99Bdd7D23+626AsNluwfL8/PQSoL2sptpetdJ2QNLoPe4Kvnz1ZOHia0JdVysTloE3fIce8VPcKfQVhgYfdvQsjUAcWUU= 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=I7nb/Zmk; 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="I7nb/Zmk" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-483487335c2so31100595e9.2 for ; Mon, 23 Mar 2026 03:19:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261174; x=1774865974; 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=I7nb/ZmkT2c6qIIYoH20RHv8WZNfIPlirkIj/SQfpaeBgUFXFRArHtHRsDVmighIZK ja6PVUnQX+IShdl49VbZVTLfsji63xNEaJvuL+TfbxF4M4hPD0ab8VmmJvD2gaJYfvWn 38jtdva9YZ0bKyk3wbzMmwnyU9HNULCDg8UkZFYDz8CezX3YpB5HXFw23Ztb3jqb8RAI z91K2nbH2khGkAdVt+8RKyrgHf3cFvEosMBBSJRQb6bZjm5BVc1oe/WiWxvZwgPNCixs 7b0Nu5jQo7j5wfMmbjYvEogkzKJTtTPp7k6vJSjmDV0ODtYBmcYJJCCM/9UEB20VGW09 SG6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261174; x=1774865974; 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=qLNNKr5J5K9Ad3tS0jK7u6wMm1sy/FSZ2lYAw8D7LVOh81iR9pWjIQ0zlRDtvZLMMu 9Zv8UpPrsxdqQh6qaO9qJZ86uCirrYFNBThVqyYutg6m1aRjA8MEpJrOLPHIiePimzxI rkYtgpRLcLm7Yoja8BbLxVxZjg0cuhxo0BKwdktGk36vAvixKgEP2kiIlvGDMA+81OI6 DAoMsr5zLiZn5zvQmZTDD5FZcNdrISMA79ERH/J1Zj+291YUtbi/xvYrgc8ZYRVuz8Dz ebQtdzR2IBnbI89qd5HxIRVkDkOJ/utg+cy78N248vZG3od1hR6+D7yMXRa6wJjGdS7W DePA== X-Forwarded-Encrypted: i=1; AJvYcCUGDlMYJdogrkZqYAOdGpMunIwDzjgla9iaPhJxfoHSj0eEcYY4F5dhsYhOit/UEqd9HaFSKipn9pTyZCQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/jCfv801oqscKuxAdVffypTB4OkRC2ektlr7nP/cKl0MMfkBU arp/SN0Cx46PF96xmiAiO0ijQ3Ztih/ltH9At86pqIOxdOoOFeGi0KlW X-Gm-Gg: ATEYQzznVJwL+6pj4pfIPOQ4Ah3Sm21qQ1Fjv6LHikt8QU0eGoQ3E2YKcVUeidU2B76 /ugJQo39knBDUv/wVStucxHStCocTjDGo9tM0XpBMtwmr8Z2v5+iYF3tIoV8EO+kSESXD51B1aS 1RuwBNFxrRbRH3JxGta6qS6gEQ9mqLjFMKf3MuWVT+MOwhwG1chQpmF4otvbU8OcA8CbHKE/DZZ LwBU3CA6t96cccuFuLI/+crnXcJcRHVAYWv6iN1MoAbOJTyuWv7Zhf0D0SwSvJ27L2HgMHcCsPD EqdSpCTKT6DDxbxomnwgNWYFtEItah4hKLPESJwxBCvhyLdOM2iS/xg501axUdRIeTz/WkqBbQv qBEXAKQBf12/7PHnXRd80/jBF2pefuKIpbjzMF+gulF+xQsAoLgzNLO7XDzegx7X1c7P6q9hnlw XbYSD42yl0sevPoNBeO10vDl5AjPvjv3PtVVH2yrvHImDTFesFZMmxNvhX7MfJnPV1 X-Received: by 2002:a05:600c:1d15:b0:485:3eba:ab96 with SMTP id 5b1f17b1804b1-486febb7648mr163311955e9.3.1774261174224; Mon, 23 Mar 2026 03:19:34 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:33 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:06 +0100 Subject: [PATCH v4 3/8] 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: <20260323-orangepi-sd-card-uhs-v4-3-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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: Vincent Legoll # OrangePi-RV2 --- 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 Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B91C038C401 for ; Mon, 23 Mar 2026 10:19:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261180; cv=none; b=m7mwxyD4gFkc4fHOFSdSQpX7BF1vuSsmMC0WNitUjN3OuSCsM0w6ussh3H4qRtLy5Bk4avWrkx5TfYG2Tl+lYNo5vsPX/tNxf9hFSLBq3yJfbNjv8BXw9nCMDTZrbHTguo7AFb7LWLSpLd94R8dmP77Pjusd+qeAbcNsT3anjkY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261180; c=relaxed/simple; bh=/gTW2KIO8YWPZZvIgANhTUBFOJqFsbasdAHU7V4LVpc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OzYKu+zzpnJo/p1auVx1bgstkG+V+ZjMQ1ucS+xoeD47zoBs48PP4TQeQwW99uvQNW21yPkMaHHAqncdVWQPf+3Ke9uj0h8mOSocmoyiIuulKGIkNDgt1zmt4tdJ1tOPa3tLCg7z34FeA/IeC+51NsMGIlAdYIu6OojOl2q2bxc= 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=Ij9/0Tra; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ij9/0Tra" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-486fd5360d4so40959335e9.1 for ; Mon, 23 Mar 2026 03:19:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261176; x=1774865976; 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=Qk6FKFUlfen7jg7q4m1JiKEm7wDVFQJ1+nZHyEziSco=; b=Ij9/0TraLyxmhOJPEk+ySNdPybaNFhfLdsqtYYnC8pWkjTTszOvoqYFUGNcPmcZQRC LZMp38NIwphmOgv4HlMNolGgy0FTseuftS1Bx/AP4el+kSop17ByMw9H1KXSZuz/fZCc qzkgJSZlHSemCGCb3lWocd6LjKAR/bkiRnPvRio519a506ov8rt84/McxcdSNfQjQtHX szT+EelOPqixmb7nSLxkWXKLGOGDU0IB1L3UFDmc/v3ZNFtx9tAMq+8OJG5IWQXxZcYg Om9eg8UgWTEBa2rAA2SeyMV7XLAZJqPWRCMYsnFbxJYGjDPVj7Elv3O9/Hskj7ZMWOyS FiTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261176; x=1774865976; 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=Qk6FKFUlfen7jg7q4m1JiKEm7wDVFQJ1+nZHyEziSco=; b=ptRQAqCNnyVsRi0qxDHjm0nK1acqZ4nmD1eo47JKIFlY2b4id3BScWhD/S8+JUSFij +5FZ9F7cGDXG2TKCtZqPEzgXl9Al8xwB1mpS/GW9r/cUlEdpLphxsE6Pw04zqYvWM/kz wXhtOgGsPWf4JrSPE/C3IUxTXXPxgMzy79rl2RVNt6uDpx6kUwcQe10S1UQL1sPhTeqa 0VYewgge+yssMXIOEc8IlfAyDwQhR8RuiTfHtaA2HuLgJ8EuP+Sdt+1c1V8BP4Bb5gIo yGPxYJu54ACNuTHneV6PNtncMtj6HOmXS3O6hasavTc3mlSygoSG3XIo4tKXn+3P5Ipr pRsQ== X-Forwarded-Encrypted: i=1; AJvYcCWFmQ8yVmyRi2vM5jX2VbnnZ6tSHppzioh782NWX0LpN4TbT3qIqoIpViKYvPx7VhSmE1ToZQZZGaxU+GI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzp+0dJwWyZDN2YeOcrUzYLye2OSg5lK2j5uW8SNa14WB5+ZqMC TNgFzBAN2Lu62iGgrqEo3iNP6zFqTnvh9J9khV6twZe8k6zo0+t4K9bz X-Gm-Gg: ATEYQzwDwrHQRhqz+o+1uFZ9nNhEDhSancdSuYgqwV0MFZsQPf9Sv1oKMHc+T6jIuVl 8CNgzWv47JxkSpiJ5bN3iF8obIDPktB7atS/N9viXLQHU6at/glwZVy5Yer0vUA+OSZQH5Lzd4E qiZKKlC0sTNEJsNjVM7M/sSQZFhFas7aHnQMVhBkaBj97Vz27e21bZyi4BmpOg3c/Nr0mfrAFNk /75qe3FdJsChaxpPtoGrtdYxivve2R+QH8+luIsQu1LTAY3hk/BpaLQIfmjsuQa5fVpp0DcOoEx qRpcJuJoA1pho0qgva43y7o2nGNWigwoEkYklT/Ikbdz+HhMyqrEEHv//PHzYQ8Or3uJ3OAvlyJ ryL+zTj5PdWd3pckf0qVR7J4OuyI3SyzzLo+3stgOsPPV5iFF7zDa/oMSrMbZaCMD+Y6MfUkg/r F2ux5p0BCnOu8X4CW6gBbQylZ/vOkwDgh7xyrzidAu7cXpGxbwVtKiKma4HczxLHhy X-Received: by 2002:a05:600c:c167:b0:483:9139:4c1d with SMTP id 5b1f17b1804b1-486fedd4143mr159160715e9.14.1774261176024; Mon, 23 Mar 2026 03:19:36 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:35 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:07 +0100 Subject: [PATCH v4 4/8] 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: <20260323-orangepi-sd-card-uhs-v4-4-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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: Vincent Legoll # OrangePi-RV2 --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++++++++++++++++++++++= ++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++ 2 files changed, 53 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot= /dts/spacemit/k1-pinctrl.dtsi index b13dcb10f4d66022d27307de73a6ea3287e97441..8d82011f1af666fb78c282a2abc= c0cb88f962053 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -570,4 +570,44 @@ pwm14-1-pins { drive-strength =3D <32>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index d2015201f8e5adff8bda75712036b8dc2b79bcb5..3952c4d0ecfb26e9d215955ca87= 91243bbd1dab7 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -1211,6 +1211,19 @@ emmc: mmc@d4281000 { interrupts =3D <101>; status =3D "disabled"; }; + + sdhci0: mmc@d4280000 { + compatible =3D "spacemit,k1-sdhci"; + reg =3D <0x0 0xd4280000 0x0 0x200>; + clocks =3D <&syscon_apmu CLK_SDH_AXI>, + <&syscon_apmu CLK_SDH0>; + clock-names =3D "core", "io"; + resets =3D <&syscon_apmu RESET_SDH_AXI>, + <&syscon_apmu RESET_SDH0>; + reset-names =3D "axi", "sdh"; + interrupts =3D <99>; + status =3D "disabled"; + }; }; }; }; --=20 2.53.0 From nobody Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6495C38C2DD for ; Mon, 23 Mar 2026 10:19:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261180; cv=none; b=g+0/tRpef+zu8WvI1ySn3WTPaAkpF/aE4TNwTR9EK8daqUO/d21zTF/h9IyWIKHObyJym69yu8B90icSuUCO1fhIg3vtAzm3NvGOnFUJagVPR5gjKGpU5W+3ZOuO7BTHdCrhV0KxkFDisRWy/7DR8vQsH0tvuKiDTH6WdKitbr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261180; c=relaxed/simple; bh=UQ7f01+3cOZP1rigv0i6MWf6GRkDoBBSKgBLPigIAzc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SrCGhgj0hGMoDCarTOgW6LmozV6LMYtuDM5rv33JoRRNMrBBVvSOMm3WpgEkIwExFXb6uNxRKaHf969wRsUKtjT9EfDzHiAZwEVKw4MewGb2wZ6WXJhVitPmk9LqNdQFmQqXceOrayS960UNfLY1RxhRJEQa2UvG2zwAyr8axo4= 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=c2AappYE; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c2AappYE" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-482f454be5bso46402695e9.0 for ; Mon, 23 Mar 2026 03:19:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261178; x=1774865978; 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=LzM6tXzzJeFaZBA5QZ0/60M4eJdHh0h1cI1z3A71Evc=; b=c2AappYERkdb0kOFozvjaut8/5qe5/o8cvfVHy5powY3vPBgKxyRqO6tlFoJRnSo8R jDROj1TIJFbBHbifMLKSE1SOqry87FwUUIvClq9cO90QDvJEr9+3fn4Be5p12S7mSFlG ZYEFDCwKIokCA+UBWu2LZd2NOv+HMEYewbBcpCdR0UsC6h3mB7lea9r5qi3s5ebDX2QE NtsxFr/f65IqM4iBvXG5E+pWlVrqdaI3tNzbok2VJ/e99bdynCHTy7VNQvrgPRpzfJG5 /PEfR4BgQ7fFepIQe7pmOrKy4dLsfXGE2LqCGEO3s6TMhTbZbDc+7oS3gogu1WtfUCl1 Z9yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261178; x=1774865978; 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=LzM6tXzzJeFaZBA5QZ0/60M4eJdHh0h1cI1z3A71Evc=; b=XrCDxO1P5vg3nUXZ2og9n0M5uIJGDgz8adkSKSynA1JRWCF0Y+CIuaCsr2BmBWNea3 SeYMmKUzjOv6LcFCPx+nCxl/8FbRD6eQ6JU1jVE2JzBciBUxtFKcQC6VVIloUfyuZvlB gfHcavoJ7pI6B17pkXLbzQLyrTf0oeVDyBdh+LZt0AB30gKy1fKywu5bxDqY4WA8kgh2 mU0HHYegEROvMRTK/flSp6F3IBwtzc2l/6x7whPLecGQzVxEDEJHdVVF1Kvkuezak5/E YNPMj79av+ZdO+VRDEurKq0TpNIktBGFa9XG/iltl+nEm3sIDYXvekMun5nSxU402DrJ w3RA== X-Forwarded-Encrypted: i=1; AJvYcCWqRV7RFyd0ifdBcGnnrrkix0l1Ppciz1qb5FczPFlefPiRNgxSedsRCsvLoQMP6OF+z8o+TPR3YrR58RY=@vger.kernel.org X-Gm-Message-State: AOJu0YyM5WoU1rFgKs1fQfidSV28VR1pEHCQEbO4rdtVhsCGwpps3ouq 3U4vw9YEZlCN3tCUnOdheqHmua0FnKtRlh9MYGfNZCtS5KiAINRBX8Ul X-Gm-Gg: ATEYQzzRBQY50Z6nOuUyA49FxZLlCr3dfB9Sefx2sPZ5GuPm/zxHMoAev4cIf1RhUla gj6FrftIP4hVlpWrfRBA85Yrf/agETJAKjgTGq9Zmv5LZ/PYfTfk/xUfuivksWWCA5WUmOb2Y5g GlKP1oyRwwr+AQHU020Trrmsoe6LuetiX5TDwZ9hS0TLplNqlLSLsv4KgSvP0r6kpWoG/5IZHoY KAO9kmm/DMootA9q7kKLjxlbPajHEorXmJqjlPvyIVr7vF9weH4fHHTmv0vE/aIWfNtFhXvuii+ Z9O5OM9M/hp+JrAHgA/ktKPmmfmqBKxnb682sadwwy0MPnnF0ATfrh/csfUFv6IXiOqcFOXwfxd CO0z94qNlQzXr5pdoV9g0afaS0cbzPKG1I6LV3+h5hNhNAk1kQ4zckUG9Eu+ni+F+TxUdkKwxWK 1Kp4rfKOpxZahZGVFEI1eTKHoK33zYR76J/vZFaCJ5I/cPTVBHmwGeLjpp48/MpOaes8PwoeHSy sw= X-Received: by 2002:a05:600c:1e0d:b0:485:3cef:d6ea with SMTP id 5b1f17b1804b1-486fe8efb0amr191701715e9.13.1774261177699; Mon, 23 Mar 2026 03:19:37 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:37 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:08 +0100 Subject: [PATCH v4 5/8] 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: <20260323-orangepi-sd-card-uhs-v4-5-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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 (12V input, 4V rail) - Enable I2C8 for PMIC communication - Configure PMIC with buck4 (vmmc) and aldo1 (vqmmc) regulators - Set up regulator constraints for SD card operation Tested-by: Anand Moon Tested-by: Trevor Gamblin Signed-off-by: Iker Pedrosa Tested-by: Vincent Legoll # OrangePi-RV2 --- 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 Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2BE0C38C42D for ; Mon, 23 Mar 2026 10:19:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261182; cv=none; b=rD9eLKBjfenWatglpPZcboePLdImkfcnSjKNJ29hXi/nhrxhm3GExCDrXr4Q8tSlbpfQOzjF2jyZwK8yd15Xh70D07Mx/Za8O1cwTXObXmzWES0c79ZvZY/DZTsWPupAgn5ydofABk6iehWc3zvga+HwSVScoQrf32LiYSmPNkY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261182; c=relaxed/simple; bh=0EFZ53q2XAEQCbsr9UzobauZinI9NCe/+PQ0fxu05PM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h0syEO2c6dcoPNsRolyOnpwLc/g+AfZqlN4sn3jz8WjOIxRFWwoBOSfD87vyjxXPnr5WlcXq11N3meEtViZ8T2vBlubv/jQqVZZklWBzcDD4O5A89MMzp+6RsjRhxEmI3kq3pN3QYIBKhKm7i2USiv2vY+eMUoyRBK0FLwjDBrM= 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=Nwu0s2ZY; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nwu0s2ZY" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-48700b1ba53so23568765e9.1 for ; Mon, 23 Mar 2026 03:19:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261179; x=1774865979; 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=Nwu0s2ZY/knPKoV2DbY2Ix0Z2HfVDabyX1TIpnJM9RHD1pztUSRKMtgHj2GMO/yqQy OrKzUbvxfk8RuFv91Loth6yTguuPNpADyxzOtocdIkOgU3WFKRHlfbm483GBJyY7Zvg8 mUOaALGPj+4aeFyBSyD0A3c76+UDEGQFe4dIMfN4CM7JxKDvXS1bZVsvbRbWkdxVma2h 8rvd2zGuylzT2OHBQ/GxBVacr++346pUCFTrusbxPDXIuvGPR9dOddY0Ik2GNqtHzYiB XqOZlZmoPdBuTzfemz7EbBnakbLIUXQwcRYxgRGw1lYBuMBIOhS3oHlDzLZ6wle9NGM6 ieJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261179; x=1774865979; 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=oQ1qapNKHLxR/l63TwCK8UxGji2ojPqEPfGrF8ZnHB5f0mH9K3iOv6rzzPMDbjY0me rOlLpOXtB1cn03R3LTDnCtFzTNMc2UdbduIscfAvFfICiM5b5XwKNo3LVQ77/7A/fMDG RRHNTCTYtGMEKQTdEvqwvv9BD7c4P2nG3mmIktwCnTPnLjdcqLMOvNqS6zY66Y6bXz+N gf/K5q0sJkgtvPOUluef22EyRDwDZUikmM3KKpYsFciCZhxSO4uzcqZdQlBSb/bPWupH dDCUSOU9Er5Hkf12h25OIOyG4PeveGVFPFTodHjDOs15JGETa48uplqO4fZ1/dAWmVEU SKcw== X-Forwarded-Encrypted: i=1; AJvYcCVkU4OHr6s64lB0Ic8scfVlOWDeTGFtL168U31OGDWkVzHetYpqoPpgf9jamujmr7Ulrli6YUfslOf6Tm0=@vger.kernel.org X-Gm-Message-State: AOJu0YwtwErdxsu9rhNbvpteL0xakQrgyZBFjAz0vBG9ZO3kh4ZKf9bo biNnk0+YTMoUkbPjly3+77bWbGGUjx8DoCLAzlh+62isCsHKyZt/pbOV X-Gm-Gg: ATEYQzxXJVpAkwO2sCykZFHCNI1kQXfEU59UYE51n/d2wqx7zegdPSK3vvof08mq2/Q 6rfRFQekeat8c+enWVQJsTsOUn7NPudktIysltsCI2/T22iKej1TW4/5IO1S3QleuFWSZS3ed5I 2kWtQJ5RA0uuT5T4IcPqmd0vY0kbzp3y8mzsLeg1FKIi23POIvzQqyT+wwv8salkHB8owd1EShC 6Rav92A5mA3e8VK1RDw60dI6a8SvXG6GtncEvGNqsLKopC2f5qTqS/yNbjdaiQaMOdXDXU72COb 9QbEWwkfIhiM6E0WmUTIs+AMaF0EJh2Ksf94xa54/oor6rM0diVXSgRqDQnAa63EwRtQiF9C9+5 uD0IxPeu7g5gdGYPb+jepEKl23R98XxqiVtEf1hnag47bCbNBgYMLdBWCoEzpUkmZ3P0QWz6Siu 9mThzbHeoFbzKdyRTuJusunwAa6YMt72KPk8brOWTrywznaC3w5x8oecJaPxxWfsJnkkoAMNc44 Kw= X-Received: by 2002:a05:600c:3b07:b0:47e:e2eb:bc22 with SMTP id 5b1f17b1804b1-486febb59acmr153371395e9.5.1774261179356; Mon, 23 Mar 2026 03:19:39 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:39 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:09 +0100 Subject: [PATCH v4 6/8] 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: <20260323-orangepi-sd-card-uhs-v4-6-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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 Tested-by: Vincent Legoll # OrangePi-RV2 --- 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 Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 328EC38CFEF for ; Mon, 23 Mar 2026 10:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261185; cv=none; b=cUW2uhgDVRARaO+k8f5kto0VnFIQzn+jejADthJTYL1nlJawCpqq3+TQUk1d9uqbpmuxYMZ9Oq4+egs2nSChSRsRCatx7c+0eV85hlkKk3ashj3Hn0D06YzH+WgUCnaQu/4cVcYaw0qLcHpO+mp+VBAioARVMB5VCDjlgJhmjBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261185; c=relaxed/simple; bh=9/EPlwM6vznVUXBNNDHgVNiJdTMefP764Y35mcPkq4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oPOG2rauj+mIfsBTj/NdNubXTSsKZ08a1w6viTTQ97PP0h+Mamdr4tOOlhWR29fALcePwJWV/FFiXzDyMNXeftF/oXChCqkomcyw0D2i/q/DFUEV/7nnju5S1ZzNYF5os7UhgU1MmWbqJqyldOz2jCFy7nvqGpbvJ4PHx6bpG9M= 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=S0gkhf4X; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S0gkhf4X" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-486fda2a389so21390275e9.1 for ; Mon, 23 Mar 2026 03:19:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261183; x=1774865983; 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=9Zbg7NdVFVfV/LiASAwN6OwVtEgN5JVFcgTwCKtL1AE=; b=S0gkhf4Xl0vbIDjVI6H3W4Df+X0NEwD7U5XNgwReSB0xdV0CxlYab7SgeflPWou1Nd HoQWL9YGuknK92aIwbc28ujIIz0G6t/pfGLo4fwSsq5dyx+WkbcMrVkYTqN64Uq7PIA0 I1Z9oYD/WoOil9mWZwNUI6Mvi8TWfKOqwNf0VBxgmo4OUDzfTMCFRV3ZOb+ZGXuJ1Aqh AnqC/txJxfn/Ys04zJUMXa0SbVcPWxoyhP6SqfqGQIfDB2jd+OtdSZUGNn0W8CSJH0wk BKmrZB+zTfHaAkOGMNiYuYuigCQI4FQIeIxbPz4xD4g2hEfgR9L8qEJHAytiLDd4iLC/ LhaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261183; x=1774865983; 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=9Zbg7NdVFVfV/LiASAwN6OwVtEgN5JVFcgTwCKtL1AE=; b=I14t3xRbZ3+vXG8+3ACQct3hreu5znHEz08wsnGhRcbLDQMsqzaiZyjlc/V7O5DE3R rjf0BLIJhmwwERURc1YRWW0/MYCsk40ITmLlu1iPY+IH457lqrw/1ETb8XAAtkQ5+Kxh BviZQKYJBa7MVYIU3SY74Z2/SJ2vyJc11vhHqeMPydq9KfJCherPHy0o+5nEm20u4WyV 55ESO2C6Ab4v7jh0rJ1RVpt5eH2lDlackDxIgdAaBvc/vayxNj3f0B/aPavbulfjrWmr tSWXtukdwv7ge+y/xOpwvtIRMPUezKXvlcIH5TatZX8918ULFgLcMfH2+Y3AChkMWy66 tVjQ== X-Forwarded-Encrypted: i=1; AJvYcCVTVuIv4Y8EZKNHB76p7zGpVP/3+FWAhXELRnjrylGTW3hLk/GwEh7MqSVQKcdQsPtctVQ8cGJEyqIqoRo=@vger.kernel.org X-Gm-Message-State: AOJu0YzT9EzrnPqRnTMM/Y/7OC43QVkrHekmJxFZ5Fp7tvKXF1wMne37 R+5J8VBsSue0aSOsDFJfzFqtXAAa98EWrqQ92l/MtrxZar6WwQg/WbMh X-Gm-Gg: ATEYQzxAIyv3RMOqcHxqBbQLtd6OGMYaAzIiE/M9oQQ1XLFx+crgjh4qYJmTBW4dFeK mYR8XPhadSAVjCz9M/FF1qZsiue4Me8I+IyBG7Sb+cMGD9KsQ79dv08wupxGZewZmoAoTvI6ypH wHGd0G+t4ffgbQXIk+xVnA2DUCGaPBkkH15sOlkhe+/VAdN5MgqDOiX82cpMexEylg28IcwzZan o9JKKz9ubtuCIHEJaiUHFXstjsXKJrCD8J8mxEVoa2/Ckgtgze8gHYcQdCBByFu4tKGXYIlFxbP lCBnKFR+HFHkyjmG5vyQON2v9Z2HtetMva0kpdSTgSUJzkWJ6dEXn7MAEemaUZB+zcJa15UsVGY erebFLMxcUaSr7zgbdiz0VjOW4b3Lwed6QpmgOX/kH50aYUwdiJg+CItuGY2V1EY/kyn/oCJUhS uvGAyYgyF2aI/QLgsHZTDRP0gLMWmCVgxuoLHtA+RnH5t78bG9gH0dogN1EP9fzELS X-Received: by 2002:a05:600c:45c7:b0:485:3fd1:9936 with SMTP id 5b1f17b1804b1-486fede721amr149755185e9.5.1774261182461; Mon, 23 Mar 2026 03:19:42 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:41 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:10 +0100 Subject: [PATCH v4 7/8] 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: <20260323-orangepi-sd-card-uhs-v4-7-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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: Vincent Legoll # OrangePi-RV2 --- 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 404b69c47b91f8c37d74a3031dbad0d94a28d1b4..6d042f905d233bde2e29d1366bd= 177b41915ce4b 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -222,7 +222,7 @@ buck3_1v8: buck3 { regulator-always-on; }; =20 - buck4 { + buck4: buck4 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3300000>; regulator-ramp-delay =3D <5000>; @@ -243,7 +243,7 @@ buck6 { regulator-always-on; }; =20 - aldo1 { + aldo1: aldo1 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3400000>; regulator-boot-on; @@ -369,3 +369,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 Fri Apr 3 20:53:41 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 959CF38F646 for ; Mon, 23 Mar 2026 10:19:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261189; cv=none; b=ZmGBTL9/iyb6tQG9fAVS7lJR2lA2pG+2zty6gGW7faeQySBgjhUx41keWkhlt4qYAQjCo+Df8n8vXpsg3jc5RfPqhmFcM5NKVU1u8PY+6HZTVE7KYLLPWAlium1NROq6eV3D7mzsiB3cq7AbjzQibDgy9C/JiN4RW+5rLBPswcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774261189; c=relaxed/simple; bh=/XgektwUTyrRiqcljig24LQcihgwiimxLKBfjjRqYQ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=enV7qiXYu/Cefvf6USAyvUgsMezl4SddZ+rat0cEcVxp6hGXr58T0EVoA4y1EW1cc7fYek13u2rc/EwIyK7CngNJDMbPEb5PaQoyRKz6u4KZbqCMoLBkEDxF0H604Wzw9E5v+4Bzkvle8/PFgd7j3SxsmhjgD4Lpgz3Uz/QDQ2M= 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=OjyfM1n3; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OjyfM1n3" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-48374014a77so39004955e9.3 for ; Mon, 23 Mar 2026 03:19:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774261186; x=1774865986; 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=OjyfM1n381+bRIfGnSEEbH15/JpjKQ4GDiXPlPCDKuRy+9m88P2+7EsfWG+7YHFpgB Js6UgJ63gf8LvWaPEcniqIEupqSulDILCz6SFnxuknswhXpIoFFeDrjeTJ8WQVGaxWkz 99gqM5NcUX/yCOS5J2xMivHTHVC0tny+Hd9gk593QHu4A2gRHol4a3OjOjKsw7dSS18v F3LQLq7guNABhlxNmUhNvL1cjBlRwEGCqwt8fkfqprHWwJNNi3QhMY2LzI0DSUA7s/ZK 76eH7SP6Eua9gk1KJlkS2LVJ5wbAFXLLjZCBTpIqiS6Cv7eikZLlgXxPnxEOkjSst/kj nxYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774261186; x=1774865986; 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=chTstoudrsvNApzKVnNv8PleG26Kb+FWjXFKGowStlRVbwIgxuKmq7c8DHUw6nx6rY 6NxsGbK0TnEFHoHLYk4KB65ifiPhS9zMY8h3yYyp5uWscyQ8vGNsylrfmnaSfO85XSyn Y1mBqtt99tg8fL09P1FYwcG0Epk/dqUi8m7L0eBq/pBMk6quTOkJfggXm6zunfPtMHs3 7lxQNca3OxkHeSmauCNM7RcX6OxvDvQ14X+z0zDJWJkU++QUhAuwUXKogeicoI3Mh0mz Zeh7FLx4wAv68TYQUBq+U0JYXkiGDtV9STEsB5Zj1Dy24PMD3b7YlUHy26l58MLiQs2u gXQg== X-Forwarded-Encrypted: i=1; AJvYcCUF2SJ98hD56y+UlR7m+qB7pc8C5xX6BQsmUsSOdJqqkZql/cOI3QVv9P1gfF01sq23x4xcbF+Q5jlzoHk=@vger.kernel.org X-Gm-Message-State: AOJu0YykR1MEiMaK+JtzijogAutEwJaPVp3UcJFnvBJCAFMDVasb2Cyd +OFEeJzDnv8leAR8xmvFhUPtnXU9L3NuVJIIGXry6Z1kStAFCNNQd8RF X-Gm-Gg: ATEYQzwlsCE8t17awCEvXyQX4uSZDSCPWH98G3igOxdgV2JgJdW75yACrttiC2DiAAr RM4qp8tirBbwJAZ91M4KW3n5jFOTInuTmcnWGH+z+ulfEvUk75V0zftFUavxQ50J8BycxzR69TN Wwd5I/MQKpIUK6wkCgkH83dFVxN4+UvvWFOwqMtZ54dqIOVeb96hXPiDw3nGuQNac1GROVkThQH ugNSLXtLkHRNA6BdeS9k9ex57Gt7jLocogNruO+OqM41E9Hal1McKOJKkp+BjGJidscMkeTMZi7 C6ebsOat6r/Z/gIJ3NViY8Y5bLC04dBF2rCUFyG8mDuzUwyW8ay/SGMLKHVp0i0RWM+USVhcMgy G0Ktwnb8ODQYToRkLm0D7CGdQo0ROJSjMFtv7kAxGjrioF4RoUR9g7i2BDBnEIICewQyp2IYYAr QGCyMZw6Z1m0OH7fYgbhv6lRIKrbhUAWFfkcHh0gcRjyjpEXk1VjpI1HHQHnGULvRX X-Received: by 2002:a05:600c:530f:b0:485:2ce2:4c87 with SMTP id 5b1f17b1804b1-486febb455dmr171394665e9.4.1774261185644; Mon, 23 Mar 2026 03:19:45 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.232.54]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486fe86acb0sm78755445e9.6.2026.03.23.03.19.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 03:19:44 -0700 (PDT) From: Iker Pedrosa Date: Mon, 23 Mar 2026 11:19:11 +0100 Subject: [PATCH v4 8/8] 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: <20260323-orangepi-sd-card-uhs-v4-8-567c9775fd0e@gmail.com> References: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com> In-Reply-To: <20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@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: Vincent Legoll # OrangePi-RV2 --- 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