From nobody Sat Jun 13 03:30:33 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E7953BF684 for ; Mon, 11 May 2026 08:54:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489671; cv=none; b=TVYeMur+9ue+TOsp0YllRBOSi/4ryzXxMlUwYj2SBe8emouk1nRtr8JmDVfTXTMT3PCSkp5HM5FJ7/I5p/u6zIq7OqszMcF8wXU6ztxssXkm74m6GwlIYHQFqZDDL4GKdR0GyYM0phFoFB56BGn/uIsLhEaxKxYzrERJXMuw0aE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489671; c=relaxed/simple; bh=Zbia6kwCaTPqaM7mSuVvAG80BXlogFVq9JLCXZ979Zg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dA4StB+M8gxE7NXs6dXmBxOj25vjw5DgLm6xFcW844b8DG4ee1jugVKv+zH9WSohh/PnjUMJsdC77mBkteySC0VTxYsZPQCLxOg/WhZkmzw542l5joriALAxE1g2augVS3ufRwC59xfBWmF5LldTkon7OuCuaNXly7tP9JqdOHU= 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=a8rx/U7K; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="a8rx/U7K" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43d75312379so3195153f8f.1 for ; Mon, 11 May 2026 01:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489669; x=1779094469; 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=mNCRp7u8GA5aDjDB3Y0lI0oGuBZ5cilcPaEkSfJ5vdc=; b=a8rx/U7Koo69H+aJgvDCiOozJc/hPFYFj/hZhVXH4C3W+Ss/mEGFB/xotp78+F9RLd QNJzKq0oAQTbujzHx+PioNC2CLgyBgOtaE6uj//MpVGlHk8Moj8ar52em3zkTpQyS88P 1jMVquLEa4kgR7ccHtrKi3pstzGc3GJH3jaXjru0lFxjD78mxUCTHLyWJ9tFxOk943YD FLUxaKfM0ZBp231YkgOUSkFZ4aTgQCrgPLlm6fb4f1u3eDFIaXAad/brRUncLZnyvdgU GRP1fOr7GjfeER+MLD+hE6MoH5p3gnjpbrNd+IOPN3Sn9Oua1ewewiEzCyv0RxoWJ4o4 LavA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489669; x=1779094469; 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=mNCRp7u8GA5aDjDB3Y0lI0oGuBZ5cilcPaEkSfJ5vdc=; b=C02lPe2E/HPYP9qMgtQUiWj37HfK3eZVjCWFd2xcIKyAzkQkgk+T2mrIrCYID/KNG9 27hB4SZQagy+bUa63S6u8SVaqiGhJfcv2HY6cF/LrUfXWOCHfy7y+1lRaMRlsuG+ny5M iSZLMp/T5oUQm8YZMEaIRq3GnntRb6wCbu2iLCAMC+JAyxzcDKuIshhOP31wJV3riKQ2 oMkefi4YlqVnb5MadRTgGQFop/N6Nd5bKiauHBGDRkoLHQhcoaaoEuab6whFDz/L4kjy +c45KTWg6F5jNmREpMo22pHEH/IQba1r72iDfTA9j8Or78tQvgme77yYnMp2y/yvjREW Djrg== X-Forwarded-Encrypted: i=1; AFNElJ/p2fJbysCILZtgsU6i+xaUgGXGtj8M/qdh5PxMrXmryTaXvPIORown1YkQfZhJU936m6lN455GUZ2TTis=@vger.kernel.org X-Gm-Message-State: AOJu0YzjSmnmNlGi4C1ensk2tTlPD+ylaFyfMJC2XRIdt+A6g11cXCMy w9FFh5/4rNr/1zi3IRSXDJy7VOP3UFG0sXnAK+X5PX9n4SaDXn3lTSyU31l3Sg== X-Gm-Gg: Acq92OHOsePeSgBfm/mdbpBt6St1d7xRlgVoDZjO6nzC9CttVzMwuKAZSsooqfpnL1a 8h+3kaXsBi7t3a0GIdREXCgZ+ar17MP/v+N9tkqLHMB8WhBjAY9+Iyqc6dySI6MKPQOTBEvQO0k Ox6ZEZZyiIbMYEH8b26WY/prPieVuyS1ulYdBglrEaxFMI+NariBWzfzhjoZbSKDJZzC6A0FUiQ 8bEiLrzDkafkLGAQiwm3yKUnPk7Cgg0uE/0PCZ1J7yag2w7+hmU8EnqIsDaOer9ghZUGyyoSKRE LHOWHUTpCJK9sFhUD8Ff/593zSz5DGuFRnWfai+lKxrCXM9FStlBkJb8eP4ik12WfEbmvEw9V3P XBDDlgsDnDXvmZOZRWmOMSRE13EX4JIWO0kMuhOmleZmRlvvqc/qsUAzy5/8qeJ1inrDgw3jv7/ AO/+itp6/PUwHSCilElVzHOwctqx1+2X5jv2imNBicQhPRhctDh7PAoiQbH7DuRoj1Qw== X-Received: by 2002:a05:6000:2181:b0:44f:b82f:2d18 with SMTP id ffacd0b85a97d-452e81764a0mr19569331f8f.11.1778489668568; Mon, 11 May 2026 01:54:28 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:28 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:53:56 +0200 Subject: [PATCH v9 1/8] dt-bindings: mmc: spacemit,sdhci: add pinctrl support for voltage switching Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-orangepi-sd-card-uhs-v9-1-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Conor Dooley X-Mailer: b4 0.14.3 Document pinctrl properties to support voltage-dependent pin configuration switching for UHS-I SD card modes. Add optional pinctrl-names property with two states: - "default": For 3.3V operation with standard drive strength - "state_uhs": For 1.8V operation with optimized drive strength These pinctrl states allow the SDHCI driver to coordinate voltage switching with pin configuration changes, ensuring proper signal integrity during UHS-I mode transitions. Acked-by: Conor Dooley Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml | 15 +++++++++++= ++++ 1 file changed, 15 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml b/Do= cumentation/devicetree/bindings/mmc/spacemit,sdhci.yaml index 9a055d963a7f..34d202af909f 100644 --- a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml @@ -44,6 +44,18 @@ properties: - const: axi - const: sdh =20 + pinctrl-names: + minItems: 1 + items: + - const: default + - const: uhs + + pinctrl-0: + description: Default pinctrl state for 3.3V operation + + pinctrl-1: + description: Optional pinctrl state for 1.8V UHS operation with "uhs" = name + required: - compatible - reg @@ -62,4 +74,7 @@ examples: interrupt-parent =3D <&plic>; clocks =3D <&clk_apmu 10>, <&clk_apmu 13>; clock-names =3D "core", "io"; + pinctrl-names =3D "default", "uhs"; + pinctrl-0 =3D <&sdhci_default_cfg>; + pinctrl-1 =3D <&sdhci_uhs_cfg>; }; --=20 2.54.0 From nobody Sat Jun 13 03:30:33 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 1C7373C5DBA for ; Mon, 11 May 2026 08:54:31 +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=1778489673; cv=none; b=ZmNGpwe+IFT/rnryKQXHgLOoIG+rVH7RC0kLZK9cllCjf5adPEjkKB70YUCIA1JNSmfHupr7s2/B641aZ8YkNVaoFFRfSzMy+ceMu6P2zgzZ/oYg+DwOJ9ELFnbSN6I39Ab2pMuFktnU+Prx3F4oLM0evSeJNiTCg0Nwwgcd6wQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489673; c=relaxed/simple; bh=FZsgT/q6hf1B/ykkCHeWphCL5sPAC4d/euFpIhy8yzs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ny3o1XiCcxpZ8aXb6jQjCj4h6gK47kFcaW4Ijpu415YFj+cO6wz5tZ9g4EJ19kGyS0vycyZsXgcPCXF5Z5hD7eTqgZs7rwyxT3XDWVJY4pKtKg/I0y18DZsbU95hE03422YRVjni84LiTbHJOqLfP7aDWGK4U5qiFfa62UiJwsY= 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=IFbLwjKJ; 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="IFbLwjKJ" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-441209fb77eso2377169f8f.1 for ; Mon, 11 May 2026 01:54:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489670; x=1779094470; 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=rGycZZ0oxVCkeN0xv1IJG1TkG4N0VwOrQ4cI2sdWgss=; b=IFbLwjKJB4PhJw9I/TruffBy/Zo6zVDcjJyM2LigSV/d1Zv5Y1pJugUFAYYXn9ADQT VXw4jw7N682Cfssoxtep9ZTaqevG3S4OxNy6oI/UkMO+1CdrhsoXDpptfWZlTdlwHOkk 702v/jPezez7rnDc07Hi6BLvOI26uRYU1Jw4ZKiays0zFzlMeS1MNMewbp9EWlexUkEw TQM4WT5phjpC7ifjT2DP2KQVhClaQhUyR0wTIHlLUTghBOjj2CFKaaeCuPJxB/DvTwlR l1+G/495FbB2FX/4YfyXtfFGv456XbO/3OwufuI8HWZNqj3M/4bXET0yYyMhozeokEF2 6O0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489670; x=1779094470; 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=rGycZZ0oxVCkeN0xv1IJG1TkG4N0VwOrQ4cI2sdWgss=; b=OvqD7trVV5pcTyYwmeNM1EMnbRmL1AZLN79z2m6af98JRX+Sb5XLqFX9413j4t0eQq YU1RKsKc+sh1WJqYtP7L4WWzBS9eLjSboTkSuwXMZ1eLwBTIYP3fr+QMmRc5tkeJHoE2 QFysnu9BAIoO/LTiO4wrhoTp5XJTVOU3axH0vB7jTplXQbgsKZlu81twMlrk8N3WxWaS GVIbDQhkG9gmhUH7B6wB+s2FtbCjxSWeqN8Aa2XXtCdrJsMo+YDlN6gbM4MatKQofVwQ j9fanhH2lhNifnAJ78SPGyY/ezQNfzTiaOg1PU8whEm4cSySq/7YBcc71/sgEOdkN80S fyCA== X-Forwarded-Encrypted: i=1; AFNElJ/4RDisGHldmXGDfCBxhLHt20BZfjXzJhb+/cb9FskGNPE+BhykGeET8CtINLS3St0tBb3WUNri730n3o4=@vger.kernel.org X-Gm-Message-State: AOJu0YzPXwHIHS7+IdNDmJYK4bV7RDMyW/jEQunaqHst8y11IciHsv8c rOwyA0Q4B5H0EwTJYuk3LaxM8f4mR2gJhZn+O/xcD/3br11fyS3B9Z/h X-Gm-Gg: Acq92OHa7LjmjErOoKwjROAlvR4PZE6qoIJTPWVpv6PMTNGMN5V2wUhnD+7vhNk71Y4 L8G/7ingWXjHLInYvuGBsPgBVRhVagjCx+Ao6q415jrzRPk3DVJD+tZjqkp4JLEP2VNAjybCLbP Tla+BFrCLAUhDaHbeS7dm0jcTmUe4IuOW/aUK8W73i6j1Mgs6tKS8I0JJaCNZG2ECB1gWM4/6iE Ne3uoCTLHLLpDU5E/Lp56rLNYBmU9iuH5/Z06PyZhbTNMGlsSd96wUvbGquU1r+C+VI7tx6pi0h riF1/OdglCy2NOJncDwm67FSuLnLaZDFEKiZeNFLAG6lbCdrvu0VsOBU1Yvd6QD1VwoitqB3phj VJPc0ichHtomjFGfOBBfOsZ2YIh/0LJgEuvamlZUIlRP09Vmi07/cNxTbkvZy+Tr+wWJUBFp+61 TAojNybHy4HqEcuvllcAWmi3/Go1FpZwSSD9w5d+9VJN/JaOZiE3ABClhlA0ly4I10WT6pSHG7p /KJ X-Received: by 2002:adf:fa45:0:b0:441:29cd:a18e with SMTP id ffacd0b85a97d-452ea07e223mr20899118f8f.23.1778489670340; Mon, 11 May 2026 01:54:30 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:29 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:53:57 +0200 Subject: [PATCH v9 2/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: <20260511-orangepi-sd-card-uhs-v9-2-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin , Vincent Legoll X-Mailer: b4 0.14.3 Ensure SD card pins receive clock signals by enabling pad clock generation and overriding automatic clock gating. Required for all SD operation modes. The SDHC_GEN_PAD_CLK_ON setting in LEGACY_CTRL_REG is safe for both SD and eMMC operation as both protocols use the same physical MMC interface pins and require proper clock signal generation at the hardware level for signal integrity and timing. Additional SD-specific clock overrides (SDHC_OVRRD_CLK_OEN and SDHC_FORCE_CLK_ON) are conditionally applied only for SD-only controllers to handle removable card scenarios. Tested-by: Anand Moon Acked-by: Adrian Hunter Tested-by: Trevor Gamblin Reviewed-by: Troy Mitchell Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- drivers/mmc/host/sdhci-of-k1.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 455656f9842d..0dd06fc19b85 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -21,6 +21,13 @@ #include "sdhci.h" #include "sdhci-pltfm.h" =20 +#define SPACEMIT_SDHC_OP_EXT_REG 0x108 +#define SDHC_OVRRD_CLK_OEN BIT(11) +#define SDHC_FORCE_CLK_ON BIT(12) + +#define SPACEMIT_SDHC_LEGACY_CTRL_REG 0x10C +#define SDHC_GEN_PAD_CLK_ON BIT(6) + #define SPACEMIT_SDHC_MMC_CTRL_REG 0x114 #define SDHC_MISC_INT_EN BIT(1) #define SDHC_MISC_INT BIT(2) @@ -101,6 +108,12 @@ static void spacemit_sdhci_reset(struct sdhci_host *ho= st, u8 mask) =20 if (!(host->mmc->caps2 & MMC_CAP2_NO_MMC)) spacemit_sdhci_setbits(host, SDHC_MMC_CARD_MODE, SPACEMIT_SDHC_MMC_CTRL_= REG); + + spacemit_sdhci_setbits(host, SDHC_GEN_PAD_CLK_ON, SPACEMIT_SDHC_LEGACY_CT= RL_REG); + + if (host->mmc->caps2 & MMC_CAP2_NO_MMC) + spacemit_sdhci_setbits(host, SDHC_OVRRD_CLK_OEN | SDHC_FORCE_CLK_ON, + SPACEMIT_SDHC_OP_EXT_REG); } =20 static void spacemit_sdhci_set_uhs_signaling(struct sdhci_host *host, unsi= gned int timing) --=20 2.54.0 From nobody Sat Jun 13 03:30:33 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6F7E3CE4A5 for ; Mon, 11 May 2026 08:54:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489675; cv=none; b=LgCcP3BtznC4tfySFua5RZCaphhHCJ3EQbINZBGXvBvA5vjyU/p7Fxl2qc4AaCB2QL9mgoaRNe57fePCCVsmlIfCVmFLOgfgZhhlginXwZlmlrcwwr2u86+saZ4huphJQyeiakMilweN47avNZJeWfgc2n+7Up1jngF5PbJaxZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489675; c=relaxed/simple; bh=9RGpIlc1D936kgYlYrsQ9ImDNx3EFBBX3C/qUpnsSvY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tY3lP9Mx7ijUFyi+3Wgz6cU18rIYK6vW4mWU3AjH27Tfn1LGXnEEFI1/12AH+Ow4bAqxQi2qcIOthCVqwTCFB+qcvnstm7WeATTurJTfHyxUuQLPc2f+Vzv4E3LYISaxjlG/uqUZ6sZLgWrCUiJPF/i08NJozM37Glx1BQTYp3I= 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=P6pDWb/0; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="P6pDWb/0" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-43d734223e4so2490872f8f.0 for ; Mon, 11 May 2026 01:54:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489672; x=1779094472; 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=qQW1TmR9evC/67fcZb5WXGa69DfOLAbqQ0G8sRDSbLM=; b=P6pDWb/0o3qGAmC529N9Lurkt7JG5HaYxM3cX7oNnulTlw/nqVRb/qc1E8QgfCW/hi 3O2clTxF9kd6yQw5UZcO6d3R8QYCjmb4D9Z3vEwEFcptBRDZpBDsIjX4fd7NIThQWPZ9 xVb5mZvnKKM/oAATz5pN9RH1sjhIHiLv3JUuzqtA+Z/wc8jw6cYlhIaRIP2idqbPNHkg 650Y2gXwoUA+EUGf32TulX2LtU1XQaJ2VWVJbhsODN+Rs5Dn9NG0OwSdL6E1JtlA8Xvl qLNnsmg/YG3LlvjWOYYopduY7C9KLT61iKU8Fg7tMhrQH+JKSasRe1cUracPvsTA37ox N01w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489672; x=1779094472; 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=qQW1TmR9evC/67fcZb5WXGa69DfOLAbqQ0G8sRDSbLM=; b=ZO39pYdaD2zpUBtwqrJZRLpfAvjEXizXga7aJDLQ+8eR90HvG5yfsCNpcflCn9Twdz 88sw4YcYCVB3VjrlUL1WMQb+SY940s5ilh64I50/whwmOVDXFr05qG7hVxjTROm/Nom3 27mt7057QACl+DtnDSQa3dv3ACfTi01K2HM8rjRUfcDulZTTKaJ25zOTgov09yfZ52vV 3C5zHgbKsqQTzBHMUkWJy1sSyKJ1P3fcO4/BNf62FEgr65yvnajkynbgz2CY1wGsJX5Z 8xIabuu28r1RJzbfz660YVJAy1bX+zBzrv1oor1ebiUDprApCoQFnXkeLeKuHdNE+fK2 TH/A== X-Forwarded-Encrypted: i=1; AFNElJ+JgGFad62sANKxl7ofaRQaA4+4Y9tsoZ0ZYVVr3CLsRJjcKK0k5q4qDn+ENlQPF+odcHQpfjfYj6wnhqw=@vger.kernel.org X-Gm-Message-State: AOJu0YxPGLh6uAIskzvmKIiFFUXPZkRQDK06D6ZQurTjC185EFVGFDo8 lVj/4NacF7CjFWLHulfIxTduoTexl1245asIrvYMq4eLQR+wPPmRwBIQ X-Gm-Gg: Acq92OEZ085gR9rP0wwO/z/8RAfsGkC2LxF+f+V/tr7JVAc+ZPvG08HB087O3XrT8QY mFMy9SiQ+oZVbsqbkmConpZitRxWziwTmqfuh2/Mh3X2RY9voKMYIfTZ/iv5xSCfXKFp9nXEWtc DLEbOpouNNOiQ/lJ/Sz0i3fiWzkk6YVvcpyoWZEArMlL/W+eWAw+5uCqteWj2k6bcf3M1Ie2LEP 6DQm2Y66hUI4cNviRmAaJYddhOnjlhQuNE1ICfEe6gbaU+CYsKKdyGcuhoTAy3wo0F7mrpbACCj FbgPFA3d4wnSH4B/D8PFS06voDNVe33AY82jfujSi9A5miWKX6b7cWQVvLEVKzSPa3Q/b5ru2KM EgazzluzEoTWKTRLR09viYoJ0LN2k1pDoR16KJxPJaOL8NSgYX5195kmBaim6scMqhIj0Qf+QyV dYolTY1CgRp7EYwoZTug7GbbbwlugMdzXcNOCzQ4JRjklOqFNHIt17+WP3G1X1AI5E5w== X-Received: by 2002:a05:6000:609:b0:452:bc74:b129 with SMTP id ffacd0b85a97d-452e9ca06b1mr28253152f8f.16.1778489672083; Mon, 11 May 2026 01:54:32 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:31 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:53:58 +0200 Subject: [PATCH v9 3/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: <20260511-orangepi-sd-card-uhs-v9-3-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin , Vincent Legoll X-Mailer: b4 0.14.3 Add voltage switching infrastructure for UHS-I modes by integrating both regulator framework (for supply voltage control) and pinctrl state switching (for pin drive strength optimization). - Add regulator supply parsing and voltage switching callback - Add optional pinctrl state switching between "default" (3.3V) and "state_uhs" (1.8V) configurations - Enable coordinated voltage and pin configuration changes for UHS modes This provides complete voltage switching support while maintaining backward compatibility when pinctrl states are not defined. Tested-by: Anand Moon Tested-by: Trevor Gamblin Acked-by: Adrian Hunter Reviewed-by: Troy Mitchell Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- drivers/mmc/host/sdhci-of-k1.c | 72 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 72 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 0dd06fc19b85..d9144537032a 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -16,6 +16,7 @@ #include #include #include +#include #include =20 #include "sdhci.h" @@ -71,6 +72,9 @@ struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; + struct pinctrl *pinctrl; + struct pinctrl_state *pinctrl_default; + struct pinctrl_state *pinctrl_uhs; }; =20 /* All helper functions will update clr/set while preserve rest bits */ @@ -219,6 +223,46 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) SPACEMIT_SDHC_PHY_CTRL_REG); } =20 +static int spacemit_sdhci_start_signal_voltage_switch(struct mmc_host *mmc, + struct mmc_ios *ios) +{ + struct sdhci_host *host =3D mmc_priv(mmc); + struct sdhci_pltfm_host *pltfm_host =3D sdhci_priv(host); + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + struct pinctrl_state *state; + int ret; + + ret =3D sdhci_start_signal_voltage_switch(mmc, ios); + if (ret) + return ret; + + if (!sdhst->pinctrl) + return 0; + + /* Select appropriate pinctrl state based on signal voltage */ + switch (ios->signal_voltage) { + case MMC_SIGNAL_VOLTAGE_330: + state =3D sdhst->pinctrl_default; + break; + case MMC_SIGNAL_VOLTAGE_180: + state =3D sdhst->pinctrl_uhs; + break; + default: + dev_warn(mmc_dev(mmc), "unsupported voltage %d\n", ios->signal_voltage); + return 0; + } + + ret =3D pinctrl_select_state(sdhst->pinctrl, state); + if (ret) { + dev_warn(mmc_dev(mmc), "failed to select pinctrl state: %d\n", ret); + return 0; + } + dev_dbg(mmc_dev(mmc), "switched to %s pinctrl state\n", + ios->signal_voltage =3D=3D MMC_SIGNAL_VOLTAGE_180 ? "UHS" : "default"); + + return 0; +} + static inline int spacemit_sdhci_get_clocks(struct device *dev, struct sdhci_pltfm_host *pltfm_host) { @@ -252,6 +296,30 @@ static inline int spacemit_sdhci_get_resets(struct dev= ice *dev) return 0; } =20 +static inline void spacemit_sdhci_get_pins(struct device *dev, + struct sdhci_pltfm_host *pltfm_host) +{ + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + + sdhst->pinctrl =3D devm_pinctrl_get(dev); + if (IS_ERR(sdhst->pinctrl)) { + sdhst->pinctrl =3D NULL; + dev_dbg(dev, "pinctrl not available, voltage switching will work without= it\n"); + return; + } + + sdhst->pinctrl_default =3D pinctrl_lookup_state(sdhst->pinctrl, "default"= ); + if (IS_ERR(sdhst->pinctrl_default)) + sdhst->pinctrl_default =3D NULL; + + sdhst->pinctrl_uhs =3D pinctrl_lookup_state(sdhst->pinctrl, "uhs"); + if (IS_ERR(sdhst->pinctrl_uhs)) + sdhst->pinctrl_uhs =3D NULL; + + dev_dbg(dev, "pinctrl setup: default=3D%p, uhs=3D%p\n", + sdhst->pinctrl_default, sdhst->pinctrl_uhs); +} + static const struct sdhci_ops spacemit_sdhci_ops =3D { .get_max_clock =3D spacemit_sdhci_clk_get_max_clock, .reset =3D spacemit_sdhci_reset, @@ -324,6 +392,10 @@ static int spacemit_sdhci_probe(struct platform_device= *pdev) =20 host->mmc->caps |=3D MMC_CAP_NEED_RSP_BUSY; =20 + spacemit_sdhci_get_pins(dev, pltfm_host); + + host->mmc_host_ops.start_signal_voltage_switch =3D spacemit_sdhci_start_s= ignal_voltage_switch; + ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); if (ret) goto err_pltfm; --=20 2.54.0 From nobody Sat Jun 13 03:30:33 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E07A83CF67D for ; Mon, 11 May 2026 08:54:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489677; cv=none; b=JyEQeA3KlG0FOFm+HCL/tA7OC7fpuEle2ZfRAt+ZcgUl3ooRrTiwoou5BbrTa/76m/7bbXnG0Nuas6NgB7D9i8AiBbCTTFD81OKyfBQI56G4Q59ZDZi7iLxH1+nwbnjVbkwDTmaGyCSsj+Pyh2LSrxTKEbxff/AlvLOM5qL+BbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489677; c=relaxed/simple; bh=MaSkTwGeIcAGUWEBUulzRPPGHdMFVMg1hGKl0uw9Nj0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=slGLW/kfAvivRj1ek7ruS5m43jy6aadF/Bi1DKbPeJo6j/twQEfoo5VIw6uQiRortaLFocvalK0EsF1NO7HVTYyL4X9I8vHvZbLDb6MRE8ignW2D+PV1n0jere4x9MMB2Ck2t1Cav9/BI18bxqMPqixt6x4LEOKXquixMvHXZpo= 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=JRb7kDA7; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JRb7kDA7" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-441209fb77eso2377229f8f.1 for ; Mon, 11 May 2026 01:54:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489674; x=1779094474; 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=PrT6T1KKKnFZD6/P3ZQJzWeeVTNkaXamLW3J81zrE/0=; b=JRb7kDA7el2QmFN7dgchmDdV3DjzvRKL4JpCa9RyesAIhtxQXdzLneBEbvL8l/YqSR wngkAt4pI8SdjoZbfpoxJqm+kt/ST7JWyr0FBa8pEIeiiP6iUr0cHTEZz0J3TN7mdNLm tqwfJmnlcSUct9OYrYDWqgsy0bGiK/FOCGaOiKwsEkgsFAG3B4M5Odwd9Qn8v9irLhnK 4q4nU6bKbFOQssmzTNUWf3/jfD6M9PbsM+2dvG6XQ2ysvH+rowVBcYr9EyZFaG8tVpeG JyI3IuWtzw49YyWVYq8LE5vneLsNg+Zb2+I8OHXQeNZa+9OsDqgzhdBZX7lH6fL8Y8aH SYQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489674; x=1779094474; 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=PrT6T1KKKnFZD6/P3ZQJzWeeVTNkaXamLW3J81zrE/0=; b=cfdDDvuxQVIKejDfsDdy9kIvURIfeTs4JLLnvfYOa/4JxXzzrTLRbRfCoGuRLUkykc SZsmdycrzuOCZ+uAfnTHm1GhqtZNAqMrvbqydexVscJ5tZ/2pHcLnI8GCp+uiXb7533I sRqGZs5/cV1sZQlVxOaM2yKhRkfH8j8I/cP5hmUTNaZ4QaXj42PhHXsDiyZ62wEKrGdP XQ9vRgCQoifFiCIH4j+7tELeG1RgL5spf7t1KQtisxkQ9nufXBFLNykjilNNSGQ31l2i 7Nq24OnuDpwX0tHw0I5WTUT9fkE0jhto5T3pF+vndrxNf0KawnXmdXOpISeR4efxtZL/ 7lrg== X-Forwarded-Encrypted: i=1; AFNElJ9lxVWiKRwJE4HlDt0PpTu7Q04zuXQIBCzDfOB2bC5tQdShC/hq+0YKeLUeN9h+3Cfk15rpmkijPcIFhss=@vger.kernel.org X-Gm-Message-State: AOJu0YxDWU7QOLOFAgF8XahlN3QcKdRmA47wn/gFve6bDIQFokvixm4E eI+1Rc0dX2BNNe+18jn0PICbO/tYvl6RlVWXhqVu6lvAOLCeJx8voDMQ X-Gm-Gg: Acq92OGgq9969qzgSkUhoGoOM2boesbBeuz0wce43nPRxxwR/6Ou6EhCiAjRpWNckCC wM07UpX9CYqkv2W2KnJ6QDZSo4+m4XA28uXefYeWFKQ9q8V3UkWOoLlrhe/HLDA6WAF2P18uo2A x+pNcRXw8VKg/6vXs7hUkPvZrzbCVRii+CWCWgL7qhPG1gX2zHSex6JYkQgK0LT2vIAgtmCjtrk tjFpAs7bTjvGPjVvigL8Q8Yzb+qYvW35mbjLDppFHWxEKMb0FUchERJ3/gw0LTQlIJ/sWsPZ+PJ 0i2Z7NdmyIXk8arcJSAQoG9xoU+3fYXH9wHutLNl3h2h64L6RVTJkPWLWpG3Wy/1Nv9vGjtFO5/ rnxPwvO9pYkFgUHHB+7Wy5wwFTWLd+RY+U8mh9yInYP2mxsXdckmq6QlHEwT8DeB1jryj2QfKZy egO55V1K+5UL8ztHv+MpLnRixwSBVh4ns7Q9lQcPlothoLCxC9mzrxnTwASPatj6urKT/uIcpon tL9 X-Received: by 2002:a05:6000:400a:b0:449:d1f5:7101 with SMTP id ffacd0b85a97d-452e96d51c6mr25836382f8f.12.1778489673851; Mon, 11 May 2026 01:54:33 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:33 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:53:59 +0200 Subject: [PATCH v9 4/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: <20260511-orangepi-sd-card-uhs-v9-4-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin , Vincent Legoll X-Mailer: b4 0.14.3 Implement software tuning algorithm to enable UHS-I SDR modes for SD card operation and HS200 mode for eMMC. This adds both TX and RX delay line tuning based on the SpacemiT K1 controller capabilities. Algorithm features: - Add tuning register definitions (RX_CFG, DLINE_CTRL, DLINE_CFG) - Conditional tuning: only for high-speed modes (=E2=89=A5100MHz) - TX tuning: configure transmit delay line with optimal values (dline_reg=3D0, delaycode=3D127) to ensure optimal signal output timing - RX tuning: single-pass window detection algorithm testing full delay range (0-255) to find optimal receive timing window - Retry mechanism: multiple fallback delays within optimal window for improved reliability Tested-by: Anand Moon Acked-by: Adrian Hunter Tested-by: Trevor Gamblin Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- drivers/mmc/host/sdhci-of-k1.c | 172 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 172 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index d9144537032a..37b0911e7cf2 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -69,6 +69,28 @@ #define SDHC_PHY_DRIVE_SEL GENMASK(2, 0) #define SDHC_RX_BIAS_CTRL BIT(5) =20 +#define SPACEMIT_SDHC_RX_CFG_REG 0x118 +#define SDHC_RX_SDCLK_SEL0_MASK GENMASK(1, 0) +#define SDHC_RX_SDCLK_SEL1_MASK GENMASK(3, 2) +#define SDHC_RX_SDCLK_SEL1 FIELD_PREP(SDHC_RX_SDCLK_SEL1_MASK= , 1) + +#define SPACEMIT_SDHC_DLINE_CTRL_REG 0x130 +#define SDHC_DLINE_PU BIT(0) +#define SDHC_RX_DLINE_CODE_MASK GENMASK(23, 16) +#define SDHC_TX_DLINE_CODE_MASK GENMASK(31, 24) + +#define SPACEMIT_SDHC_DLINE_CFG_REG 0x134 +#define SDHC_RX_DLINE_REG_MASK GENMASK(7, 0) +#define SDHC_RX_DLINE_GAIN BIT(8) +#define SDHC_TX_DLINE_REG_MASK GENMASK(23, 16) + +#define SPACEMIT_RX_DLINE_REG 9 +#define SPACEMIT_RX_TUNE_DELAY_MIN 0x0 +#define SPACEMIT_RX_TUNE_DELAY_MAX 0xFF + +#define SPACEMIT_TX_TUNING_DLINE_REG 0x00 +#define SPACEMIT_TX_TUNING_DELAYCODE 127 + struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; @@ -96,6 +118,50 @@ static inline void spacemit_sdhci_clrsetbits(struct sdh= ci_host *host, u32 clr, u sdhci_writel(host, val, reg); } =20 +static void spacemit_sdhci_set_rx_delay(struct sdhci_host *host, u8 delay) +{ + spacemit_sdhci_clrsetbits(host, SDHC_RX_DLINE_CODE_MASK, + FIELD_PREP(SDHC_RX_DLINE_CODE_MASK, delay), + SPACEMIT_SDHC_DLINE_CTRL_REG); +} + +static void spacemit_sdhci_set_tx_delay(struct sdhci_host *host, u8 delay) +{ + spacemit_sdhci_clrsetbits(host, SDHC_TX_DLINE_CODE_MASK, + FIELD_PREP(SDHC_TX_DLINE_CODE_MASK, delay), + SPACEMIT_SDHC_DLINE_CTRL_REG); +} + +static void spacemit_sdhci_set_tx_dline_reg(struct sdhci_host *host, u8 dl= ine_reg) +{ + spacemit_sdhci_clrsetbits(host, SDHC_TX_DLINE_REG_MASK, + FIELD_PREP(SDHC_TX_DLINE_REG_MASK, dline_reg), + SPACEMIT_SDHC_DLINE_CFG_REG); +} + +static void spacemit_sdhci_tx_tuning_prepare(struct sdhci_host *host) +{ + spacemit_sdhci_setbits(host, SDHC_TX_MUX_SEL, SPACEMIT_SDHC_TX_CFG_REG); + spacemit_sdhci_setbits(host, SDHC_DLINE_PU, SPACEMIT_SDHC_DLINE_CTRL_REG); + udelay(5); +} + +static void spacemit_sdhci_prepare_tuning(struct sdhci_host *host) +{ + spacemit_sdhci_clrsetbits(host, SDHC_RX_DLINE_REG_MASK, + FIELD_PREP(SDHC_RX_DLINE_REG_MASK, SPACEMIT_RX_DLINE_REG), + SPACEMIT_SDHC_DLINE_CFG_REG); + + spacemit_sdhci_setbits(host, SDHC_DLINE_PU, SPACEMIT_SDHC_DLINE_CTRL_REG); + udelay(5); + + spacemit_sdhci_clrsetbits(host, SDHC_RX_SDCLK_SEL1_MASK, SDHC_RX_SDCLK_SE= L1, + SPACEMIT_SDHC_RX_CFG_REG); + + if (host->mmc->ios.timing =3D=3D MMC_TIMING_MMC_HS200) + spacemit_sdhci_setbits(host, SDHC_HS200_USE_RFIFO, SPACEMIT_SDHC_PHY_FUN= C_REG); +} + static void spacemit_sdhci_reset(struct sdhci_host *host, u8 mask) { sdhci_reset(host, mask); @@ -191,6 +257,111 @@ static unsigned int spacemit_sdhci_clk_get_max_clock(= struct sdhci_host *host) return clk_get_rate(pltfm_host->clk); } =20 +static int spacemit_sdhci_execute_tuning(struct sdhci_host *host, u32 opco= de) +{ + int current_len =3D 0, current_start =3D 0; + int max_pass_len =3D 0, max_pass_start =3D 0; + struct mmc_host *mmc =3D host->mmc; + struct mmc_ios ios =3D mmc->ios; + u8 final_delay; + int ret =3D 0; + int i; + + /* + * Tuning is required for SDR50/SDR104, HS200/HS400 cards and + * if clock frequency is greater than 100MHz in these modes. + */ + if (host->clock < 100 * 1000 * 1000 || + !(ios.timing =3D=3D MMC_TIMING_MMC_HS200 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR50 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR104)) + return 0; + + if (mmc->caps2 & MMC_CAP2_NO_MMC) { + spacemit_sdhci_set_tx_dline_reg(host, SPACEMIT_TX_TUNING_DLINE_REG); + spacemit_sdhci_set_tx_delay(host, SPACEMIT_TX_TUNING_DELAYCODE); + spacemit_sdhci_tx_tuning_prepare(host); + + dev_dbg(mmc_dev(host->mmc), "TX tuning: dline_reg=3D%d, delaycode=3D%d\n= ", + SPACEMIT_TX_TUNING_DLINE_REG, SPACEMIT_TX_TUNING_DELAYCODE); + } + + spacemit_sdhci_prepare_tuning(host); + + for (i =3D SPACEMIT_RX_TUNE_DELAY_MIN; i <=3D SPACEMIT_RX_TUNE_DELAY_MAX;= i++) { + spacemit_sdhci_set_rx_delay(host, i); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + + dev_dbg(mmc_dev(host->mmc), "RX delay %d: %s\n", + i, ret =3D=3D 0 ? "pass" : "fail"); + + if (ret =3D=3D 0) { + /* Test passed - extend current window */ + if (current_len =3D=3D 0) + current_start =3D i; + current_len++; + } else { + /* Test failed - check if current window is best so far */ + if (current_len > max_pass_len) { + max_pass_len =3D current_len; + max_pass_start =3D current_start; + } + current_len =3D 0; + } + } + + if (current_len > max_pass_len) { + max_pass_len =3D current_len; + max_pass_start =3D current_start; + } + + if (max_pass_len < 3) { + dev_err(mmc_dev(host->mmc), "Tuning failed: no stable window found\n"); + return -EIO; + } + + final_delay =3D max_pass_start + max_pass_len / 2; + spacemit_sdhci_set_rx_delay(host, final_delay); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (ret) { + u8 retry_delays[] =3D { + max_pass_start + max_pass_len / 4, + max_pass_start + (3 * max_pass_len) / 4, + max_pass_start, + max_pass_start + max_pass_len - 1 + }; + int retry_count =3D ARRAY_SIZE(retry_delays); + + dev_warn(mmc_dev(mmc), "Primary delay %d failed, trying alternatives\n", + final_delay); + + for (i =3D 0; i < retry_count; i++) { + if (retry_delays[i] >=3D SPACEMIT_RX_TUNE_DELAY_MIN && + retry_delays[i] <=3D SPACEMIT_RX_TUNE_DELAY_MAX) { + spacemit_sdhci_set_rx_delay(host, retry_delays[i]); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (!ret) { + final_delay =3D retry_delays[i]; + dev_info(mmc_dev(mmc), "Retry successful with delay %d\n", + final_delay); + break; + } + } + } + + if (ret) { + dev_err(mmc_dev(mmc), "All retry attempts failed\n"); + return -EIO; + } + } + + dev_dbg(mmc_dev(host->mmc), + "Tuning successful: window %d-%d, using delay %d\n", + max_pass_start, max_pass_start + max_pass_len - 1, final_delay); + + return 0; +} + static int spacemit_sdhci_pre_select_hs400(struct mmc_host *mmc) { struct sdhci_host *host =3D mmc_priv(mmc); @@ -326,6 +497,7 @@ static const struct sdhci_ops spacemit_sdhci_ops =3D { .set_bus_width =3D sdhci_set_bus_width, .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, + .platform_execute_tuning =3D spacemit_sdhci_execute_tuning, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { --=20 2.54.0 From nobody Sat Jun 13 03:30:33 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5688D3CFF7A for ; Mon, 11 May 2026 08:54:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489679; cv=none; b=E+QguIliKM73Kp74yUhwbAQduBDDgryr/HDOxhwtcJtm8f0/7fmWCZr/By0g4Oiu+Ziz6HF1ueQxY1ToJTV5cLfD3pQcBwy3q7dWoouBqte0fEPd1JF0feIdnOJb4bxbNJGy4VL8mAjaBZcWcd3TfEbxJ19DXe2sn4OnuX4TvRU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489679; c=relaxed/simple; bh=czyMPdWP53DEucpvLID85A2eMzwRX1rlaHLtT1FWJJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=acnovol8MzLePCMgxIk/0KBlbVyYcRV/sm9+lC7rUJRSfPLMoivQ/XZsdELf6X9W9gGDdFz+AcwKjjyTONiOYU1VWa4kGv9pS7bFCVkfff2nf24FO8JoL/OWraEOCDzO6X7UXk1HoO3KnPf5bZkqnRJnAUsrwOJ53SFRHDt63A0= 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=mSZF1/AF; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mSZF1/AF" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-4526a8170ceso2158031f8f.2 for ; Mon, 11 May 2026 01:54:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489676; x=1779094476; 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=eHZBSgDtUIrOhP/YxIJOEaKWgx2xyCzMyAWUTKPESJY=; b=mSZF1/AF2YJK84DdMQX/pPBQH2rBZargXFcdUeDtyNMDMsfUoVEF5Sp3gyESafSNaG c7UFCWHFPsnuAmBkSmsVcknzcrxcCo6/078cey2k6Bfw3UdmBFb2+9QR0B57GtsbJJ0Y 2axtj7fhlM6n6qQv3TorJfdxz/cU/iqtIa8C54wse/5EIz0iwOpKJuq9XGCibZwA8+3h dlVhBbKvi1yC5VholRDNBvkwJtuj2UOkOkjFSHtC/auuYcBx/Af4enrLI5h74MEtbFUH X0KsW2pkhKqkIi8wcOaCeGadFWDjm8ymUWbTgz0RhcY4F5AyHHQ7qaHKR4CUzwwgoqiq ru9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489676; x=1779094476; 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=eHZBSgDtUIrOhP/YxIJOEaKWgx2xyCzMyAWUTKPESJY=; b=WE3qYyC6ZhqMAt3Of2yyVOoQNkl6afgigs7yR4oMPf79ZrznTuGYg2gZ8fxKAfdyDO H+33sD3bhc+98SEKigK0RKieiGVaQe+9JRbpl4de9yI0j0Mawb7QxkLuVJWHS40iy/pT l43TEpjZKYOiWHAbVU4z9wJIR5y6M059rMWz8UWIVLIhjOyT4QePMJp6to8c3zQO2sxz R8UP51ARj/OV/4UvDRFEulMEIycYozciZGHCYQfAf2UHaoNxxrWzN1neyR4ZaFjlUDZg 2q9gvlwv1iWqSX28ojj6lUPf6FO7Ljq+Wpnj2tE6k5aEiJUtmZIF4XUtrHhbLmRClZU1 bSjg== X-Forwarded-Encrypted: i=1; AFNElJ8Y45PvLV2kGtu6t9Q4uceX73Mgpg9324LzGP2HZhctIIaMt4qvX1HLuLVkjvikdvAduBgHv7QJuM5k+dk=@vger.kernel.org X-Gm-Message-State: AOJu0YyweHZQx+Xv+/8qgeFuRZCPWXVfbFQEFjhXqLBgWb2wSDs8X93G po3t4k9PvNH1hPwxlh/IZqFCkWW+VlHEJJ2JdDHCxSix5n2f282E3Uoo X-Gm-Gg: Acq92OGt3I+JuXKj8Wlm1rLBVB61moTV2LoGmSKCLmayM6pdCSOrpuTqsZTpvi0A3t8 +w8Gowr0QsboO+DS/+mEYvrXEMWLhZ5eXGgOziuNueZdO8/KKYeHXesAgT1rQmUDCHDoxj2V/1P kcbfoWC7GlGZ6fxYeZz7qYt8T8NcuSEMQ2kJxl2a7y6jsSR4RNwPQmQ/9/togf/EYkYWJwBffKj L7g+t/g2lSJzJY3i0GeMRmpBjzBAGSwBkJB4qCne7ucYAxPCVntZZe4cI9yUa7lcjV2aq0kMXRo jOZ5nGVbLUnjBTBrcgDqvQ41boPL2Lh1wDrPkBL9WOo9ky1VWwnU9UXw7S/tBUGUabHW2BYV3OJ eq3da/Q+IP6BXX43JSIszm7oqP1brQvL9P52L5sRW/MYPnt2f3R1xwndLSTblytD2IGCv+2gfzW nYIj9fYgCAOzx0c4Ykg1deGvaWfxTJfqc0oJZiMjob7Zr20LuBzvmiC5mKny17XPJCyw== X-Received: by 2002:a05:6000:310e:b0:43e:aa88:f1a1 with SMTP id ffacd0b85a97d-4568ca51624mr12522568f8f.30.1778489675606; Mon, 11 May 2026 01:54:35 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:35 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:54:00 +0200 Subject: [PATCH v9 5/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: <20260511-orangepi-sd-card-uhs-v9-5-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin , Vincent Legoll X-Mailer: b4 0.14.3 Add SD card controller infrastructure for SpacemiT K1 SoC with complete pinctrl support for both standard and UHS modes. - Add sdhci0 controller definition with clocks, resets and interrupts - Add mmc1_cfg pinctrl for 3.3V standard SD operation - Add mmc1_uhs_cfg pinctrl for 1.8V UHS high-speed operation - Configure appropriate drive strength and power-source properties This provides complete SD card infrastructure that K1-based boards can enable. Tested-by: Anand Moon Tested-by: Trevor Gamblin Tested-by: Vincent Legoll Reviewed-by: Troy Mitchell Signed-off-by: Iker Pedrosa Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++++++++++++++++++++++= ++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++ 2 files changed, 53 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot= /dts/spacemit/k1-pinctrl.dtsi index 34d88334e95e..4e9a62d0e85b 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -590,4 +590,44 @@ ssp3-0-frm-pins { power-source =3D <3300>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <19>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <19>; + power-source =3D <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <42>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <42>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index 24becab4c959..6ded5c06b797 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -1226,6 +1226,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.54.0 From nobody Sat Jun 13 03:30:33 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 52E163D1702 for ; Mon, 11 May 2026 08:54:39 +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=1778489682; cv=none; b=WpMyD9+yjaTNKvdUGoDwr36r4X9QuZimezueiv+nlkj+wf5G+wsrHXo4/YmTNwsTX3EUUM081OoAuTNiMq38dSOs+yNasQa5buEu2sKFb1ukmsaphPVEq7zixDV326/t0uEpPPSZCL5i0dCqtdG1Vy0HR8Pp0oIFnyhwGiotKSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489682; c=relaxed/simple; bh=MIH0ATHC+38xHlXDPli/E7afDZIgbzPqgBozK7mYzwk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=naS5s+1kSR9QRRyY+wX+RCaHNvycgoD5GrZwDUJHCrHUdAyodqBSROtLA5NizKi8KRE+xA3BhMQZcCWZSch9XPB2kQKmhpHPb4Mjk2pxtib9Q7NwCgOQBDNzlDxN1xDZRExQsJdy2ZES1Wg8fGm+l5w4g5aIgWOYwin3JAZXfZ8= 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=gBO9Rexq; 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="gBO9Rexq" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-44e1860558fso2588019f8f.0 for ; Mon, 11 May 2026 01:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489678; x=1779094478; 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=TxFL8JcBleXAhQJnczy/XDAFmLI/O3K8Gh9JfAxOPq4=; b=gBO9RexqhK3OdEDLTgPD03SPCo5K8HalLCyscvbTNbWLEqxJlIZJBquAgC5UTKjSXv A2TmzfzWV4vAdLTeQUCD84D9TUyOzA9bbGf9eGo7a2vpe2poOuBxOc66GC/kHFV7UhPR 1575UjevTPnhxI/756xRgmARA9z3fkiDftRPHgxAz70fIwd1LxhN3pamE+ZPvQVO6Gub 33H2WNtxzjOp7OwthCIFxWkaWcU4t/+pOl27BTZqChonEfYKLm/0WCS7enOyJ3WydJjI gB0ABd5Jqk/fYYugMBQvypkg5UuuOfX8xn8FUHz4dWEq8SbfzDB8v29tD1ID3Ajbmp8N 88+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489678; x=1779094478; 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=TxFL8JcBleXAhQJnczy/XDAFmLI/O3K8Gh9JfAxOPq4=; b=bUO9C+Vvi4HCyVSTnTg9phn4mYAuQdT8j2hKMQ0Co+DHzbQHGBkHEU1u3xgArwNO3C R51FHqyqV+G7xyLOpkL9W0nEkSANLm4hfsymDrjHgMiDsgXYnd62TzE18D7hsnPKxoQJ +vFK03Fdt5+KN3wzb2YGGbTZYdvGsOu7+QoWy4QEIN2lGissh0Ha++/rDlm03hlZyTGO 5WPOxmp7U4Nc3PX6PcOBKWjlr8IGRzmWbjmxIiAW58dI4OD1WUOXpoo3PHCWjzQtwkpK CSZf3QYBKCnw4jCXjT+CpITiYWlu0pWP9Q5p68+T4gJD50mFPlsvzGV7Do9dtyLxJB3o q9Pg== X-Forwarded-Encrypted: i=1; AFNElJ+3b6v6sJ+Cbh7gEmCFKjnN93fRtv/qH7p6nYnCcYbBl6K6+G+hFx6b1EsnYuvhoOEI7llILkVfGoxC1FU=@vger.kernel.org X-Gm-Message-State: AOJu0YxEZmfI3Z9et1DBdj1Cf0kn8UorXMk7S6GA/20LnBCRsAtVNGgz Q6u4j5Fxlc8bVdjbNh7zTreaAdmA31xvFDJ6G1wd43UrIZdIhFdRF3jj X-Gm-Gg: Acq92OGjA/bVCEhs890cB32KHCPgYGEVzj35TjEzzTnzNKP8nNl3T4eJIpMTZBG2RXm lBu+c312zY4/+ES+3hRA3fI1XCzxivBS4Va7bAUHzwOqm+UW1hQZyhKYEKfdXzVaVRZaOl/h2cg x7fgc9OAV6ln0Z9ygpgEtqztZBV8sKy+vDSl9s+eMg0H4nPBuuLC+ZjBUBI6sFH78IbSyMPDEYQ RupcrSF/mL7RNsJ6zXLRKaJM95jeQt/Rlls1O/iXtpBvyRwOKPnRggQJhwABvheuVc94/ZqFSsZ qkYPLH7s3QgasSxlkrBv5nVzI1RL2hzy0e3wdJV4LOU2Ze5fRQLJ/rk7ry/ogVOLlv+NTOf7Q1W SxT0U7ZcStkUCf5LD2+/BLKkoxgRKrIb1N+SiTgu11OBz84zZu0hAF7QGHlZ6u+GH/8j3s8i/SK Tc9HV6hkoKV+ldyCncWljZpbOPx7g5QnLHdZXoyH0g5KVMHhNjQxJF9tayd/GfG21MbQ== X-Received: by 2002:a05:6000:178d:b0:44a:b3c4:a04c with SMTP id ffacd0b85a97d-4546310a50dmr19851770f8f.30.1778489677417; Mon, 11 May 2026 01:54:37 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:37 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:54:01 +0200 Subject: [PATCH v9 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: <20260511-orangepi-sd-card-uhs-v9-6-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Trevor Gamblin , Vincent Legoll X-Mailer: b4 0.14.3 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Tested-by: Anand Moon Tested-by: Trevor Gamblin Tested-by: Michael Opdenacker Tested-by: Vincent Legoll Signed-off-by: Iker Pedrosa --- arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/= boot/dts/spacemit/k1-orangepi-rv2.dts index c95ca38e3d4a..1ed76e0ff806 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -202,7 +202,7 @@ buck6 { regulator-always-on; }; =20 - aldo1 { + aldo1: aldo1 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3400000>; regulator-boot-on; @@ -319,3 +319,22 @@ hub_3_0: hub@2 { vdd-supply =3D <&vcc_5v0>; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4_3v3>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.54.0 From nobody Sat Jun 13 03:30:33 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 E059C3C1400 for ; Mon, 11 May 2026 08:54:40 +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=1778489682; cv=none; b=rrJD297e8BkI2zkb561WaV4PQVcNVh0YjFsMBfgM6xSkHXMQLGnKfhmRXskO7GfH985I89P1P1R+aQaF0dmOWLgvUTsBIiEvoxkwJybpwnIOszm+FAlB5bsGieq5PRJL5Af8x+LAIKOr4smJEAlqWqPzuVbcFlcrgROKc2Ub1JE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489682; c=relaxed/simple; bh=KCOvZYyTd7ld6R+DEiMgf0st7whZv7B/cS4xzgObkHE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SVSOJW6XlwR7d8WR9zWUWUGFZTo4OBekFGQGVfw6EwctfhgQRS/5JalWtE5g2WHaT46XP5sm3zbWCVu1CStHnjDXnPcygcpoSmaamiG5l8nd8b5dAA6wvyRxYI1+eH0N7eSYJKv9ZEdsDkpzk7NLxqTuwh5gLyCfhv4ut5h48Q4= 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=rSjhg1XV; 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="rSjhg1XV" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-44a14580111so2963993f8f.0 for ; Mon, 11 May 2026 01:54:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489679; x=1779094479; 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=TEIrqqD5+9V93nbJhziz0GoVKNocn+oS9pnFRNj6sLI=; b=rSjhg1XV+D69POXCVvzYBC1TMRKHwt26CGsmwplUb8DWH0tuRF7TgxIgfGwBFKrKBp wD7jCXHgCPezQGSO78QLCxEW/dOnSeYl6qzkYAkmF1q+9Xl8RYv8uuFz6sfjHg7T8NpK 9Pg38kKtA+rAzTRzkcd5g4PdteyNGBEye5D7hAjTTQa/PT3rrz1kahPAn38y3lUufklZ Q9k8+UZnXYxMGzRk30Tc6Yk4vv3yKoGMrWm9amZllXwKnIKH/AllWUoY6V2Ku4Cs2sWJ /3gTIUqu+XkyHZr3R1q8nJDKajQJctdrAkc2narrxgpYxgDzk7t1uA39bdmNkRplytKr MmZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489679; x=1779094479; 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=TEIrqqD5+9V93nbJhziz0GoVKNocn+oS9pnFRNj6sLI=; b=JLGflm5P5xBZqhct36X+89H3jrSjFdJmj6GGS3sR0mbimOvgyza9OYEdvDSR/lpzlz C6yDrd9kmu0d7zGZwF4eHXxva328DKih+IrDY+v4JbT4i79XvjoTgzLo/pK3ANluj3xJ gFTxl6iilfWlGbVKCy2msIvKPZ0RU/BVcJZKJ57Lnccwn2R528sjuibiKoagOOkE/9bZ l6lpiIl868mGHmycOS33OdLZ9FkeNlikyUyna5EW9fAcvVTg1+4wldE4QRDXle1Jzjcd WcFm4Ac12KuQcFl+f+MW42e8vGiwXdMykbujgjWYcYRLzoB1ecgwikvQX5f5fLjiXY0L R/+w== X-Forwarded-Encrypted: i=1; AFNElJ88HgMzq7M6y8khrsw/EiEmZvcZXBj+EMgbztW9vmasaCpn5AyZieWXi7B2GXOFFOsTQP2oWIgEeF/hwa0=@vger.kernel.org X-Gm-Message-State: AOJu0Yyll4o6EGutXOHddrzu975Trk+ijaACjMGn1Hw6OOIaRvAe9oOM 0HZ9eAxzSOdoCYXh62Kpd1TGc1RuaL76nt5U3hF/JTvY629ObQENUxbkHYxWpA== X-Gm-Gg: Acq92OE0a/Co/9pCNA3DRKBNumE5NctD6SfSwdaLaqnGR4cmNPy7aGZEKf2JQttvyyw bM11NtS0YCZzGU8c/J4Xru+eCe2MzoXCSgEp2jKkog+hg9PRwm/5bclQxrR54qKU+s6OqHpNwaZ FmUNfToeBdo+Yhjach/LRDMF1HkHkIkV9/RsHwzWJnek2oN1DqcqpOtkPtNLvSphwVemezyz61n HxXVw5lyXfrFzfEzz1pdtt3V4VBuFrYwbcmX3ay7sliKsXSnELRjcSSP9reMtj695k/ta34PtSM atOHeOAUkUwjd6uhUX5TCN/L5vq16pUIkAslU0iZnW5CSRUQ7yratC2UuqhMOBk7SiY2k2oXO9X zvmr2xyLiFicAEArS6esX3k+8NIZxMwPvLv9wZCkQM2Mnux1Vcb7yI49tLUo4EV6iOTos/lqhT5 MWogngT2IeeZU26OhqT4DYlVyhfsBo/MTBaZQzQZFEAQhe1t9moLnIyCqzq+Sgl/h6EuSDMsPNk dc7fm7vicvVAMc= X-Received: by 2002:a05:6000:4014:b0:44f:db87:8919 with SMTP id ffacd0b85a97d-4515b056a63mr33531534f8f.4.1778489679107; Mon, 11 May 2026 01:54:39 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:38 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:54:02 +0200 Subject: [PATCH v9 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: <20260511-orangepi-sd-card-uhs-v9-7-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Anand Moon , Margherita Milani X-Mailer: b4 0.14.3 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Suggested-by: Anand Moon Tested-by: Anand Moon Tested-by: Margherita Milani Signed-off-by: Iker Pedrosa Reviewed-by: Aurelien Jarno Tested-by: Aurelien Jarno Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 22 ++++++++++++++++++++-- 1 file changed, 20 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 e20daa50a152..8fea6e87acec 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -221,7 +221,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>; @@ -242,7 +242,7 @@ buck6 { regulator-always-on; }; =20 - aldo1 { + aldo1: aldo1 { regulator-min-microvolt =3D <500000>; regulator-max-microvolt =3D <3400000>; regulator-boot-on; @@ -374,3 +374,21 @@ hub_3_0: hub@2 { reset-gpios =3D <&gpio K1_GPIO(124) GPIO_ACTIVE_LOW>; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + 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.54.0 From nobody Sat Jun 13 03:30:33 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 AF6493D3332 for ; Mon, 11 May 2026 08:54: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=1778489694; cv=none; b=Ho25UNgBBSWwBTN9kDOqkwDF7s9CN3Nq+USMe7lBE+OD6w1DdKc1RqMzc1bCWVGsPeqWonvtcgBzPOhfrROdE2/QmvDI7V8rTZwv/XumxlNx8W9pL0IdkdUXLEEmYz23M62c+xpZw8TUi2a5LosVX1GekaoDGDJJEsoxA+Nhi/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778489694; c=relaxed/simple; bh=qWfPi3P6okakNMl35wSrQSu4TCMbhk88UU7A4K+g+ks=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m8I4pEou57o990uJpcWkv466oVsiCdTVlzydXhX3FMP2Q/qKC4k94OKfrjB+ahPkP/arf4pWHjeKFAyvQyVkoN7PuUOHGglJMWsgoQiyh6k+kbKFyNijUIsyxGq+cnx4Z6rhqXNT8fOBeRZ0ACDLCjv9UG766L47yK4Lq52VxPY= 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=jE8WCAEQ; 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="jE8WCAEQ" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-43fe62837baso2017055f8f.3 for ; Mon, 11 May 2026 01:54:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778489681; x=1779094481; 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=f4H6GewK9XOsCgFQsCNGKQNCNtvjUJJHPrHSaFKR1jE=; b=jE8WCAEQE66Suo1iloriX1rSTwmUMx06NqKSiaVkP6Gc6YAJ6uS+FOBTuaZOTEMpIM HtFbYbD6FuBR4xPVqumo+fdOHAXQxR+LQhxr9hqC6yxWvnkQ1S00pbCqM2jnbNoYgnL1 9Jk3x+715mHUh2s9EdBVY9oujPuBAGuQxu2Dj/V/nEiehHeLpL9b4I7ciiMZbRtyB7SE qnxw0uwxNw1u7Khz0jiDPdqDyxxJLK3C35Yaf8sbF4PiknY+Ot330dMH8z+THbFFAvLc 0sesyBnwKfzb4yVCPhDdxBIMG8rayAoP92UpA2PEuLYb7NeFgd7QX1dhy9Hgaj7BtWTx Ih/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778489681; x=1779094481; 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=f4H6GewK9XOsCgFQsCNGKQNCNtvjUJJHPrHSaFKR1jE=; b=ZmB2e8cVCcD0H+lL4fuSVBniYSJwen0uXVVs5yHyeBxdwNjFLRuYDVl+BcevajBPHR CAaTFBjTq8sFMBBPGPYzaISEGJ9QOqwG126Xe1NykfuKtYiMWowWe3YJaqndd6JfvoWR funRqAAxlFVG2snuYZdWaFH4Rt3Mp1PPuOKkJgxj6SFvfj4M11lfYc18WAxWCJvBBFHR xJYjAR//b1siP8Luz0X/9rS8sW5jV/Nskrx21nlhnRjwWv/0AECBa4bm50GHafS1U1WQ hAcc0Tgot1VjzAZLG+yev8061tY0IR2KA9IDkfQHi/XWAcaXRaC3CFvpOJDNovPhn03X QjXw== X-Forwarded-Encrypted: i=1; AFNElJ8jfS+UzRXXJO00B+mg9uVxYHrVeh1WmroWGZfMyJ7mpwAzIAcy6cx7jrvSe5w7id5KrLPMzH/MGuw2vx4=@vger.kernel.org X-Gm-Message-State: AOJu0YyUspfUzZ0LZ4eC8nqOIG1k4/jOSg+hORcO2QByA22Bnu96Zm3n iVUAy3MymDGkQmNV8d0xoeOgG3vqZSyCqLocJl5Ujn0NAs4qOGBRvDXJ X-Gm-Gg: Acq92OGoW43ulxY0nRdaV5bAQBZyIBgvSkwvUwK5VT+Wnv22fGSrX2+gMG2rgCJBQco BoXAXymRD81nEUZH6oZYD4HtswtnaEs11qIg+pR5iWk9so+m/n8i4KhfZ2xihdolAHLi2RAifAo o35G8/lj045Q2mADisdcaaXrx65yRcZg0F6mzX+2LIaBX2V+KJZJQy4qA2lOv2dlc9OhGWyQ9nq Z+c0eUyycyz3GN/dLYHPrastAzNektC63FKrXwZL5bfXUpX4XVx+qQFww2wijzQWfAF+ZXfHTU6 jJq37YqQrjEDg3+wZPtSbhs00/pMuqmHw5O3yRizMu5OZTT0EPRN12+XBGmcCPteFDkvxYV1Fef h/6oUDVk7DVq7tSeQUYJjhODRWlLFGzt7eAnHit1fxb5PizGcqg662MBtR1r2nprcyX0uEnqeHu ZBJbZe1dZh3j4ndhBftM4b9b260HEGF9sF75PisbA4I0VVLNP6+4+zBBEkuFUUWMyw5w== X-Received: by 2002:a05:6000:22c4:b0:44f:d9da:2c40 with SMTP id ffacd0b85a97d-4515cf125d1mr36512294f8f.21.1778489680789; Mon, 11 May 2026 01:54:40 -0700 (PDT) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.237.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45491ca2fd6sm24944189f8f.30.2026.05.11.01.54.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 01:54:40 -0700 (PDT) From: Iker Pedrosa Date: Mon, 11 May 2026 10:54:03 +0200 Subject: [PATCH v9 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: <20260511-orangepi-sd-card-uhs-v9-8-ae48c0b2b2cf@gmail.com> References: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> In-Reply-To: <20260511-orangepi-sd-card-uhs-v9-0-ae48c0b2b2cf@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Yixun Lan , Ulf Hansson , Ulf Hansson , Yixun Lan Cc: Troy Mitchell , Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa , Trevor Gamblin X-Mailer: b4 0.14.3 From: Trevor Gamblin Update the Muse Pi Pro devicetree with SD card support to match what was done for the OrangePi RV2 in [1]. More precisely: - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Support UHS-I SDR25, SDR50, and SDR104 modes [1] https://lore.kernel.org/linux-riscv/20260316-orangepi-sd-card-uhs-v3-0-= aefd3b7832df@gmail.com/T/# Signed-off-by: Trevor Gamblin Signed-off-by: Iker Pedrosa Tested-by: Andre Heider Tested-by: Michael Opdenacker --- arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 66 ++++++++++++++++++++++= ++++ 1 file changed, 66 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts b/arch/riscv/bo= ot/dts/spacemit/k1-musepi-pro.dts index 29e333b670cf..774a4640f065 100644 --- a/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts +++ b/arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts @@ -18,6 +18,24 @@ aliases { ethernet0 =3D ð0; serial0 =3D &uart0; }; + reg_dc_in: dc-in-5v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_5v"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_vcc_4v: vcc-4v { + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc_4v"; + regulator-min-microvolt =3D <4000000>; + regulator-max-microvolt =3D <4000000>; + regulator-boot-on; + regulator-always-on; + }; + =20 chosen { stdout-path =3D "serial0"; @@ -77,3 +95,51 @@ &uart0 { pinctrl-names =3D "default"; status =3D "okay"; }; + +&i2c8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&i2c8_cfg>; + status =3D "okay"; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + vin-supply =3D <®_vcc_4v>; + + regulators { + buck4: buck4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3300000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + aldo1: aldo1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; + +&sdhci0 { + pinctrl-names =3D "default", "uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-mmc; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&buck4>; + vqmmc-supply =3D <&aldo1>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + status =3D "okay"; +}; --=20 2.54.0