From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39E2540B6ED for ; Mon, 2 Mar 2026 15:13:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464433; cv=none; b=aC9+b7cXuin/EvpT1L/LpvRu8gYa+Ua31IePnWKrhjRK8qiphtcn5fjdePgz6uiKPP3SHczDAXM72DqCS6eUw+Ud70GG3xZJ6fqH/slohtyLYW6ql/voIh0zoSGnLB4YsISBQwyJftnxDOrg5wx/YcGZdKGUG1p+m4qH/kNIuR8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464433; c=relaxed/simple; bh=exV6OpyIj+E7YmJqvnw7Yw8GsUS9yk0uhliZbbcVwO4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PGOARgoDb0VnCvXGINJZxu8AlLajSLJMnAEovy4vvtvrdvRFRntAHS2VwlxI79mKKfV/oHEXOlqOxbDGKEfhdWb2UGs7539uXt2yBPFLQJOetiDn+5miwuXXNXzY9Bun2C0nvBGNO2gHRkcnMu6kfxrmSIT32MKjWPixL6HqQrk= 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=CG8Vx7ww; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CG8Vx7ww" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4837907f535so39911585e9.3 for ; Mon, 02 Mar 2026 07:13:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464430; x=1773069230; 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=qgPMIovbEThLlPPQFVARziyNrmjJuegOTMLHImP/d90=; b=CG8Vx7ww0tXxRO7Eg/G6HV03WTXtaN9QMABtsVS26AWARofAao4UUhC9ltY19dHQIH DvhQMPMZ9GjJu3qsUIhgfojTansCm/71TOICBwsVbtlbHnPkQOX8wgLekjxdxY40yZQX BvHStAslMMGXd4vvnDSShPz5MeUcFHT9L7+URLl4lorLMmM0RepmqboWkrtW6qHws170 hoJV6YiEufyhIL9Yd4rV8od079o5/G7ziDf1HEpXSGpaDGDEIOgcsJH63mi6Qm7VK5lr TA+LBpNdnzEL8PSKvyfFN0yt9WR7bME4b1ti3rgP0uR8AJ84olBRXfYs0aOd9UMT6ArS ot0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464430; x=1773069230; 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=qgPMIovbEThLlPPQFVARziyNrmjJuegOTMLHImP/d90=; b=T+c6RRT91dluy28BQcQ1+9xTI2xqxI9sG2mpw+agpv8FBKfj9r8+Q8HHxPJdiO33gu qtBeiObXe0en+EQ8/LtDZnd4Y4Jc+vgib8gL7/QgWKRhikrz+MjrnyhzmoBqPupsGUfE 6DguQixssrvo9dkWikofUU+ecihZnlr1Fw8ILgHUNe9REkJxac8pFGPGyRfl8mrENUpX 79a7mcySOhWOg05e5+2OXmSRcwI1rb9b9PxKaE/A5AVvLjzfdZ+9K4+fXmUBvFMUd5ob 96Z53NzJc+IYWh3dgqHRZmD296CTcingokCdLqt/9gjpjuKY/Y08MxAjiHMZF5bGYFAp kDMA== X-Forwarded-Encrypted: i=1; AJvYcCWcZ9DAuP+ciBz4zdJd1uA28B7jxsVYFovUtuG8zS4ZoBwq1dMs8NSuCvRB43lmR+0Km/RBFtXyEPVzpug=@vger.kernel.org X-Gm-Message-State: AOJu0YwnoEIZE3qW+MPMbiZta0sGhe7MAD9B+wFpZlHltVp7e6yvGL96 okdG8OxEk3Hl1Q8EYKo9HQleZ6QLFg7YaGHEdUOgdcjS2ZwHFgKweL8T X-Gm-Gg: ATEYQzwsrHp5vhcuB1wOqHdOJPMLwSUsl/RDjHAWrnkkdqEil5SSDjdQINP4xGx/fJo ERpBnHSYSpW1woV1WiSltsPwtrYqwWdXNDAlD9NS6C4qsLXFpAlIa1oNywA3YjRuAfcSGYS62hq yOoMQH/uUdH+vePQGq7duzkLD4ykgrHNahQhXUgf8DmHU1vBPnzQKenpi6ldatyz5JcRTabm0GD IZkfF5TCEa2pSh/P8PP7e41RbR/V4lWi5GY8LBPym/ifdNJHPaUDI1tllWROw8KFcT2BGAkWukZ SQdpPoZofHid/ARCqYQJoB6sqWwMMTyHauOFo0IWA4ieG4NcPKqEYUB2eCdKn9sp8gpgjZj/Z8j xcgSjMsOMFQE8TTdDjoT3JkFaLRvXLD40Bonm3GcCGVOA3gvHx9SD91iQOVYUUU5qJGJkjSIal9 69je/VNmz72H5zp+hy0+Ij64iq6B5JvgNb46qRXr8rSfjyDf2giCCrCicsVt5bjsp9Tw== X-Received: by 2002:a05:600c:37c6:b0:483:96d8:9f75 with SMTP id 5b1f17b1804b1-483c9bc5b89mr218710175e9.28.1772464429956; Mon, 02 Mar 2026 07:13:49 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:49 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:22 +0100 Subject: [PATCH 01/10] dt-bindings: mmc: spacemit,sdhci: add AIB voltage switching registers 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: <20260302-orangepi-sd-card-uhs-v1-1-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add SpacemiT K1 AIB register properties for UHS voltage switching support: - spacemit,aib-mmc1-io-reg: AIB MMC1 IO register address for voltage switching - spacemit,apbc-asfar-reg: APBC ASFAR register address for AIB access - spacemit,apbc-assar-reg: APBC ASSAR register address for AIB access These properties enable the driver to perform voltage switching between 3.3V and 1.8V required for UHS SD card modes. Signed-off-by: Iker Pedrosa --- 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 13d9382058fbc1c12be1024d1c550f04a825673c..4d6590aa8262009b6e5697a04b4= 5cf3736c0fa42 100644 --- a/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/spacemit,sdhci.yaml @@ -32,6 +32,18 @@ properties: - const: core - const: io =20 + spacemit,aib-mmc1-io-reg: + $ref: /schemas/types.yaml#/definitions/uint32 + description: AIB MMC1 IO register address for voltage switching + + spacemit,apbc-asfar-reg: + $ref: /schemas/types.yaml#/definitions/uint32 + description: APBC ASFAR register address for AIB access + + spacemit,apbc-assar-reg: + $ref: /schemas/types.yaml#/definitions/uint32 + description: APBC ASSAR register address for AIB access + required: - compatible - reg @@ -50,4 +62,7 @@ examples: interrupt-parent =3D <&plic>; clocks =3D <&clk_apmu 10>, <&clk_apmu 13>; clock-names =3D "core", "io"; + spacemit,aib-mmc1-io-reg =3D <0xd401e81c>; + spacemit,apbc-asfar-reg =3D <0xd4015050>; + spacemit,apbc-assar-reg =3D <0xd4015054>; }; --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A25E6407585 for ; Mon, 2 Mar 2026 15:13:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464435; cv=none; b=G0rTsfy+Fl2Rna1DeIi+g7+va45R1E/7EQwT/MqW73hSomf/9BMKmQVmQHdUoL+2n/miEzJuTlYeVTV/D6luyHl8d/mP9XloZ2we2HImq0NqZ7Ia3pOPU2HCYyMVT9J6Q9dcWY9uMxTdOXZYfp1deUJUB0CR6OQM4f1wSVeK3y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464435; c=relaxed/simple; bh=d7a13S6dF61g9+cfR4EleR8xvtk9XXvgHgcgm1c6KYA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JV+sbTVJEOrFbGpC6f1R8+uQc2OeQ19Y0tyKTAowwZB1jun9QeGRgpjulDYa1ganxl4j571Ng6/GecpEkkcdzSNAM23UpJnAj1mPT0kU1BDYEehwCEOsfkc/Vsz4PHMb1YrIx9+Uh5xCUR8kZCfE4zZ7+K6lKE83yWR2wz74TKw= 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=QnCiMNbV; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QnCiMNbV" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-48372efa020so39364685e9.2 for ; Mon, 02 Mar 2026 07:13:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464432; x=1773069232; 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=SjMmH3TKAZLFeVk2hH9QgAPKoSKsH6HVvsl5OwBldO4=; b=QnCiMNbV539UrhE36Qmb7phytvOnIfxnFJ781sYgOlgwNJN/zkURmPTLZvbeafDnZJ kvGhLWJPdl31Oa72XOPj47K6G1kxqVu9KwM/RfjiwjmP8YHlTsfXU1hDLIsBToJ9cDmZ /b/O0FIa3fFZFWzDIUlTgfhyUcRZKprD2sRMhwdIhX2Kl2iisInEi4HLDtYzQdILzcIb PVaah8eSr0Aij9wkJ8Y3hFgorbmh6tMvwJcxxE86Zr9/vOnP6ixEjRxbhLr74fiN31zS sl7wAp7VfC5vIINOG4mZU0ipngPYM1g2dXgISInqSeaioVFJbfUZAEnlSmXHOiYAsaiD cCqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464432; x=1773069232; 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=SjMmH3TKAZLFeVk2hH9QgAPKoSKsH6HVvsl5OwBldO4=; b=g4RZ9zGAoH/jkmJTFgdqOF4zDunAZD4rKs+5laW4oBLVsbzyCEArza9uYWG1sNXfik 7iRehvWRS9yE09Y/pLpzT+KNAImqgxx1N5g37eQtt1hVZoBmslSYNoGRMoSl/zh/G/K3 l0wMSTOwxAOm8FW34yoAKG+UUFBSmz2zdEJMzrE7PpyTiVGc8kHfSq7kT5+53CykgQ8q YZ8LbO6hCGcivN3n1OngXZMrs9CdBOl148LdUQJFyg7LFSIndVT/LyQux4zN+w5ioyZE fvuEgyuiqEHWkWfi7BWGqaZqhlsGutIz6kPXB+xBp4AGkYWruAw+i3/THcg/GBWKfL7I r84g== X-Forwarded-Encrypted: i=1; AJvYcCXC+y7lR8bkyJKSBXz+MT7b/nN/Aog0vBx2cHHSo+qHhlyTSFXwjp9xwbO/0d8gyvJhc+hv4fJlJZ1ce4Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxIF4Ymnvu41kohXNphh1B1DMGdH5TQ4qEf4kH/giho5KKy3yPs x2nJQqxiSdocj66x7oMMAQfbEmUdCMNifKVDu3nTNtiC866YAZQ2+mML X-Gm-Gg: ATEYQzwKDhFLtQvKSYntoWWBYqMDdzp414EdiS+TQ3cfhV9N4yZAY8n7K+NCIzWXpnX ITHncPBlWspLobJwWZvyIohTB5/T/sdHBf81GD5nAI7T9KXrKdEfniImMr4SZndQAAwbSWLvF+2 ajZxDSLjmZLmIYBuS1uhHUHT9KK/2mG7JDohBmNf8vGU/47joBeWtRfsc0AYyseV58rgOYqZNAm SaFFYr2cDCyHWJOqnqcHBpnUAufSXw7ccvlcgKhAoLFb+614Vl2XVIPy6mX3WTLlqgcMCgAuSD9 528dsIXEuvVWhjfAvtj4Ed52rUJqTtCh2gQUqU2Uh/SxokMc/mZ99mYXBtvbVeTdeJ8jAWLEPoC Q2xD/dcF3sPV2d8dYNkDtkTFYxhH4pVuptFysUzfWclkTEtHfJh2G2X0/Z1fEThaN1agb12HQD3 JihuDdG0pY888riMepUsUKMV+pBMVMZ+3wLl/N4hDIUC5XBb58wtQ+xHkr3HwM3TwJsgmiRPTYe PAK X-Received: by 2002:a05:600c:3e86:b0:480:6941:d38b with SMTP id 5b1f17b1804b1-483c9c1bc0bmr208716755e9.30.1772464431872; Mon, 02 Mar 2026 07:13:51 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:51 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:23 +0100 Subject: [PATCH 02/10] 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: <20260302-orangepi-sd-card-uhs-v1-2-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Ensure SD card pins receive clock signals by enabling pad clock generation and overriding automatic clock gating. Required for all SD operation modes. Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 0cc97e23a2f9c7b2f9376318a8a7ebb860571504..b703b78282ed8d89183c816477c= 149c0a565618a 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -20,6 +20,13 @@ #include "sdhci.h" #include "sdhci-pltfm.h" =20 +#define SPACEMIT_SDHC_OP_EXT_REG 0x108 +#define SDHC_OVRRD_CLK_OEN BIT(11) +#define SDHC_FORCE_CLK_ON BIT(12) + +#define SPACEMIT_SDHC_LEGACY_CTRL_REG 0x10C +#define SDHC_GEN_PAD_CLK_ON BIT(6) + #define SPACEMIT_SDHC_MMC_CTRL_REG 0x114 #define SDHC_MISC_INT_EN BIT(1) #define SDHC_MISC_INT BIT(2) @@ -100,6 +107,10 @@ 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); + spacemit_sdhci_setbits(host, SDHC_OVRRD_CLK_OEN | SDHC_FORCE_CLK_ON, + SPACEMIT_SDHC_OP_EXT_REG); } =20 static void spacemit_sdhci_set_uhs_signaling(struct sdhci_host *host, unsi= gned int timing) --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5748441160F for ; Mon, 2 Mar 2026 15:13:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464436; cv=none; b=sJ9vtQZpbAxwO3OHSM+7yzH+rPutY9Fd8s7s6M0hyVwQoG0ZWAJgzOB6JyJf4SlnmkbvFS43DQ/1+KsErD0bJAMpRot5CzPkUazNY/WQX2e1S0s6B2Nb6/RICZUJdQIvfy5xvtf6+1+PikaG2DZrsC0VUp5dBceh0myhayzkxXo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464436; c=relaxed/simple; bh=SX99H5nWyHLgqEfAA8y8YXcLLBYPw3yIqFfWFk7yuwc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r1XnBCm6z/T2hAS5hxjey51Mm+ro91Vl4Y7vz+sm8I4buYjyLXCoVsiMLvVa3Fs8OIk216QFgibl86p1PAIbuJ0WM/m1Jhs2mkJYb3QSq+xpmwRjYuIkwwWWKNKrM7k6Dd9In4SpsULpV0A0VQPy1rZJ9+fCAq6sY3pw2oEiktk= 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=nMcxR6Gi; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nMcxR6Gi" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4833115090dso47404525e9.3 for ; Mon, 02 Mar 2026 07:13:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464434; x=1773069234; 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=xPno2RjoHZxgUnIZr6lB0hz/wV8TjU09ZahXKQxHzqQ=; b=nMcxR6GikrAIBr1jHaFwGnIgSyIpLkVtQ9cWEoR7BRDncP64+upobB6gCOYD3aBNut XXoyeJkguFIwsIgrvpg1FSa8NdxfEghSbneMJIBlpC9RbD511hjbL/3c8b13tw94f5fE U/pgWVPnkcD/2/FsJwDI/OUBD5EREFJ7dYcNqVYeGAvLjPeiftzBulcyyvN/EN4blM9v k2gnKd+uZ3ol5Z8dG8PWzKkSCgvmtCS01wPwgxFz4k6D33JxOV3Cqd4cmo4leMZLyyc2 5MqiFpjpPOMdO3dE/DXdnqTZ3+bGzi//RSQgxOIFPnLW/M99dOOO4B2tAxRuhgAmAQId 0jYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464434; x=1773069234; 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=xPno2RjoHZxgUnIZr6lB0hz/wV8TjU09ZahXKQxHzqQ=; b=xUUJlF5n4ecRJzDr/S+rjcE0nN+XK3u8dmDIG8WIEn4z9d8ubxt4Pi3oJOdiB41T6X uCjpzLkEzd2eKvhsmnEwY1BBkGEqU7PD7kuwfcrPoH4OVZOgDM2ABqPIVqNgVpcarwVp STL6RBMG6jOOAdNQX83yG+BvpMVMtculEfJjzcOuuc0+/6qQJdvFoWGGLvJK/gE6QJo8 9LQdj39S8Jm3BjOwekjwebWMqAuGu9RGBNVeBIdQY8jmolH1fMbCEQlJw+smCufNuBY2 1s5pwW97Yth+iF6EPdWhM7p0t87lSNt94KHfwouaNwMgdxKQdtUMJUiVHbxUHxBi2zWJ 7M+g== X-Forwarded-Encrypted: i=1; AJvYcCXmIWmOR2M9pCmRJnd5xMNDOBd5sqdCIxqtoxQqAZ/hTkZI7M1Xb0FqHf5YBd1uE5AKLuY7oIAz23brP84=@vger.kernel.org X-Gm-Message-State: AOJu0YwrMJFLzllAfrM3clj1OQmztUJqfimufqEfSTzfN/lBBWfB5vE6 JTPsCeok9pmENMkzsfqjiWVzkpIERcAdY+0XcTt331C6cawtolCnqZBW X-Gm-Gg: ATEYQzy435fTENpyIaSexv2fzdwob/rdp2/BlEeK54Vp8FICknX0nTAu8B+U3No7JIo 6BCugT1kCN+vM89JME3ykeKgYP7rv+3ES+EBSyqyP74O5O3THqY/wkwFquq5hkS+aZFOTTw8nk4 x6+xL44LretKLKZz4oqei1TFfKOrspst+I+ptpcK7pzcpW6SDe2OLEAZ4EmiNEeMGqzyLqQUZqv Opx2fD8gQKfw3MTFMFprTCfzEdFcFQdbNph+O02baZUDLibpyP8yY3S0aYv9nBH5b6xTI2twIrC KZI6ioNNhwtG4ILpuIHz9Hnp/ptz1+H8QhjdoXsPQffVjk4UZCL+i4AfzfC1nuWjsC11ArY8AfA p1dLuNrLjgj4inKP6ZNWpLD2sQQeqiYyU/LIKhzVY0eZqJrzTkkXu7uJsnVxkk0wVUMY59ZfGy4 FhDV8gCK0SEnz1S3mAYbNZgqsIlZK4bNr8z852KhqL3M4+mmNcUsYWY+eRYLjHH5zjtFwpSoF9M gZ7 X-Received: by 2002:a05:600c:b86:b0:480:4a90:1b06 with SMTP id 5b1f17b1804b1-483c9c196a5mr205940835e9.34.1772464433577; Mon, 02 Mar 2026 07:13:53 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:53 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:24 +0100 Subject: [PATCH 03/10] mmc: sdhci-of-k1: add regulator framework 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: <20260302-orangepi-sd-card-uhs-v1-3-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add regulator framework support for voltage switching operations. This enables proper PMIC control for UHS voltage switching between 3.3V and 1.8V signaling levels. - Add regulator supply parsing - Implement voltage switching callback - Enable mmc regulator framework integration Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index b703b78282ed8d89183c816477c149c0a565618a..c260cb89704ae7a25bec0f07831= d495553405bbd 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -216,6 +216,12 @@ 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) +{ + return sdhci_start_signal_voltage_switch(mmc, ios); +} + static inline int spacemit_sdhci_get_clocks(struct device *dev, struct sdhci_pltfm_host *pltfm_host) { @@ -291,6 +297,12 @@ static int spacemit_sdhci_probe(struct platform_device= *pdev) =20 host->mmc->caps |=3D MMC_CAP_NEED_RSP_BUSY; =20 + ret =3D mmc_regulator_get_supply(host->mmc); + if (ret) + dev_warn(dev, "Failed to get regulators: %d\n", ret); + + host->mmc_host_ops.start_signal_voltage_switch =3D spacemit_sdhci_start_s= ignal_voltage_switch; + ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); if (ret) goto err_pltfm; --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D48941162A for ; Mon, 2 Mar 2026 15:13:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464438; cv=none; b=q5RsgZxS0qfVdyx9A9/ngtoqMJCdYsPn9OE9lrWcVpS+YZClLjyXO5YtP71mlbxwK9EKh0CmcPvqAXUteR2rWnxVLyNsNkf0OuR1UEMAvskxQ2VcvJoQtHgB/7MiPVkQLA1wSowBc6/up24gjqiGNt1a6fl/HIBHXDfv9xmyrfU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464438; c=relaxed/simple; bh=l7yFNiOmqsvt7j2PZxlgkxZHr4AJ1C5sRtgpqni7WX8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pBZ2h91p+9lVrP/wINiP6POOAJTY575M5aiUG8Jl8oX41MVc9EL2x67/Tohrkb1zQSjPni3Toa9YuCOV+5FkfRD0fR8vE5GOwLF96dNWkzSQ7m7bMDh6hfv4MM+KXiVk4ohHZzB/8tt3MXom+WomfO9yEPuNNtl7M3h0a9SeG4U= 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=G6rACf5v; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G6rACf5v" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-48371119eacso57394475e9.2 for ; Mon, 02 Mar 2026 07:13:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464435; x=1773069235; 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=eBh/BEMhIYd7yMIKn9wpAoeG/vOOsjbo+uR3/+VkGQw=; b=G6rACf5v3vPEKsMklKuY8ycf0uE252osOOOy9QhPhabf3Pni/0KKP6ZIfHMBaQgqNK uOXRpApVWdAqkFHPo3rf0L6lbENq8swBz2XRwuzTNeDIN9QMS5SQqWANq/TTp9pxzzBU zgWRrvtF3CDXsALzQvB5soJX+iIlMHxciqYiPZyvxj8Y73980WFsxlQ32WOMBG45VKsk QUBRfslhi24c4KxDk9IErxdTcuCmpSQp14kcmFkJF6EiAV+BAs17aTYgaHYUOLNhnmTt trcHvh3vPZPD5TenbTOwpsskUReD9R6zzfKwEzyJsMYbSHXMYDICV+yOfmjvzVo5gwJM Q5kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464435; x=1773069235; 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=eBh/BEMhIYd7yMIKn9wpAoeG/vOOsjbo+uR3/+VkGQw=; b=K+gltnOL2Ne/XkbIjfa+syE9JfwPQRY1Phn/niILv/K2zRfRlkiX/bNvvIp8VT958Z QreDOaewMFRa9cf/gQQSpZuec50N/2vM04BqWmbIb3H7EUKG6SkXMWGgUr2FrFfZdIwi PiWCLRBDeRVjnqnZly5r59JQLnvTTVJsD82KdCXrcXEHB9U/f4A2jQxGjGh84DBzQq7k 4LkgDDIpzevhA6lEzPJTbUymRuv4+RiANDO5slyq63bb2+jyijmmP1Wnazy1d1vBTmmJ R81vxPgAMBZ2sihiWEa1L0An00klXlHJwjocR7+lcZgxWwcH4xkbqVpjaWLKbD1Ryq8j nl7A== X-Forwarded-Encrypted: i=1; AJvYcCUN/JmR4Oafw4J+KUJ+7m0NTEyiuY/R2rGPJ1mRq7tgJ2Vny/4x9kA72a1WtpgugqNYL++1/2bT2wzClsI=@vger.kernel.org X-Gm-Message-State: AOJu0YwYW/NY1Wq6Yac8PpyhZ/q9x9SPMpJtjA71Vb5hbD6RVx/ik26L 53uKZN6DOiQsqPU6b5Ewu3uBkrkuP4oc2kMCDU7/XLPD9Cl56+8/ddlK X-Gm-Gg: ATEYQzzeu/YjgbxEFtz/bWxXqK/TN351/zmG96mfOxu0OXmNOwsxES+YsjkE/3YBdmn 7FIE/IF5Nv0XbUxQrpTbsKfcfHMBjfunJPQBzna0axLIkrwCK8C2Xs1bmXF1OQwsB6oyXlxktdZ vN9d1s5tgS6h6AD/fz1W06Q1ryK0W5fPjPfbGSu+tvjXc9YkxqIJwdiZJOpuTcAciuRslcyLBve WhL2g8M5+I5djsUVuErh8+ztgsbAIDCLU8KDNsde0yiUr92zk5TJPX9+Ovd4gAIb0nT8stJEnh2 JbsoWOnuhI52FS/JC0W4Y4BOFu/Xmb2Z8whabX6rpwZRRdkx7ZEgBfEFe6fDc6TVLst4Lu9mjsW K4Kwcf8inKmJlKK0zlP2Rdy6Ju5C3ncBA5CE+CKzmTPTwvVdTFU5wok9sIXO6wP3+9NVTvN0KYO t07AbdIzCr4V+Mh99U1f/XDJ/Vm0U8gRwWUWUuNillgfZlKrlXfQ29eAUsVROQegHjMg== X-Received: by 2002:a05:600c:3b18:b0:483:b01c:9508 with SMTP id 5b1f17b1804b1-483c9bb7c0bmr236115405e9.2.1772464435275; Mon, 02 Mar 2026 07:13:55 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:54 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:25 +0100 Subject: [PATCH 04/10] mmc: sdhci-of-k1: add pinctrl state switching for voltage changes 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: <20260302-orangepi-sd-card-uhs-v1-4-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add support for switching pinctrl states during voltage transitions to ensure proper pin drive strength and configuration for different I/O voltage domains (3.3V vs 1.8V). Pinctrl states are optional and the driver degrades gracefully if they are not defined in the device tree. This allows boards to enable proper pin drive strength optimization for UHS-I modes without breaking existing functionality. The pinctrl setup uses: - "default" state for 3.3V operation (higher drive strength) - "state_uhs" state for 1.8V operation (lower drive strength) Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 59 ++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index c260cb89704ae7a25bec0f07831d495553405bbd..2a982bca2a50ca96f43af7b4de5= bc4fb4b5b195b 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -15,6 +15,7 @@ #include #include #include +#include #include =20 #include "sdhci.h" @@ -70,6 +71,9 @@ struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; + struct pinctrl *pinctrl; + struct pinctrl_state *pinctrl_default; + struct pinctrl_state *pinctrl_uhs; }; =20 /* All helper functions will update clr/set while preserve rest bits */ @@ -219,7 +223,42 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) static int spacemit_sdhci_start_signal_voltage_switch(struct mmc_host *mmc, struct mmc_ios *ios) { - return sdhci_start_signal_voltage_switch(mmc, 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; + + /* Select appropriate pinctrl state based on signal voltage */ + if (sdhst->pinctrl) { + switch (ios->signal_voltage) { + case MMC_SIGNAL_VOLTAGE_330: + state =3D sdhst->pinctrl_default; + break; + case MMC_SIGNAL_VOLTAGE_180: + state =3D sdhst->pinctrl_uhs; + break; + default: + dev_warn(mmc_dev(mmc), "unsupported voltage %d\n", ios->signal_voltage); + return 0; + } + + if (state) { + 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; } =20 static inline int spacemit_sdhci_get_clocks(struct device *dev, @@ -301,6 +340,24 @@ static int spacemit_sdhci_probe(struct platform_device= *pdev) if (ret) dev_warn(dev, "Failed to get regulators: %d\n", ret); =20 + sdhst =3D sdhci_pltfm_priv(pltfm_host); + sdhst->pinctrl =3D devm_pinctrl_get(dev); + if (!IS_ERR(sdhst->pinctrl)) { + sdhst->pinctrl_default =3D pinctrl_lookup_state(sdhst->pinctrl, "default= "); + if (IS_ERR(sdhst->pinctrl_default)) + sdhst->pinctrl_default =3D NULL; + + sdhst->pinctrl_uhs =3D pinctrl_lookup_state(sdhst->pinctrl, "state_uhs"); + if (IS_ERR(sdhst->pinctrl_uhs)) + sdhst->pinctrl_uhs =3D NULL; + + dev_dbg(dev, "pinctrl setup: default=3D%p, uhs=3D%p\n", + sdhst->pinctrl_default, sdhst->pinctrl_uhs); + } else { + sdhst->pinctrl =3D NULL; + dev_dbg(dev, "pinctrl not available, voltage switching will work without= it\n"); + } + host->mmc_host_ops.start_signal_voltage_switch =3D spacemit_sdhci_start_s= ignal_voltage_switch; =20 ret =3D spacemit_sdhci_get_clocks(dev, pltfm_host); --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05BFE41B360 for ; Mon, 2 Mar 2026 15:13:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464444; cv=none; b=eUhueEDD1h3BQH2s5EoTYMz5NEOqzeTxgQNSsqd4/UJcxaYMaNnLjARhJHe4ZjRQabQOU+BuDKmDLeirZbqFukFK8SMSPZhNRGZXOqa89awcLmaos2b5cDyQsMAAEezieFGnNRxowxu3+0ldrNogAucwbLV665fNMSEXSfj5Lfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464444; c=relaxed/simple; bh=oROrpMpGRFTyu9YVgnx3q3a5mnQL/8tXkXG+ZsNoOvM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VXbA9RVvFKHYQRLpuf7xTbqor7CUjZf/egTrM58YBjfGvYuQicLrda+lu/DQaV5p3NGQ0agIKwxSYAIFHcNYb6AYjlY9BluwB0hnWPcf7Hyn0rBJdq2m27w2DUxU8s49Ixi89v5MT2ivRQ/5hYwEAKB6ODhNerGwhqb+CZZcQ6s= 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=l+rEQAO/; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="l+rEQAO/" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-48379a42f76so37621925e9.0 for ; Mon, 02 Mar 2026 07:13:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464437; x=1773069237; 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=1vMnihDprCpz00E0mqvOLaz+xzD900tygzUTesRDljg=; b=l+rEQAO/ZtZ5a3ll0kTsA+nD+oMAJfL2okPyrhhRV6LTCS/e/TYb4o9MTORAW0BXpw MeHb0aVXUrMwouA2f9riftkYIhrw3T/fJRqqf6WFgdRRrdcPbGwYHMKHy7sSbaKmmsPQ Yj4I5m9RGEqhQvVATuKo3ay5iNppbT3KKIls78bEu7IcCoBIZzFICVWYyEPfDs8d5U7L aW64vNu2iZyFuyE+/YgeUODWQ5qCo9cEy4/s47D9TnSkau7ccbtmChvEVw/lGz8c6WmP cMJDiFCtEqhWoe+sRa5fKd3rXM9/c5dH2w4VJMr2HY9UVS0wyKQZblPitgA8xK4cjQ1J BIRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464437; x=1773069237; 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=1vMnihDprCpz00E0mqvOLaz+xzD900tygzUTesRDljg=; b=hnRsuSDQ9AOQjy/mAXIKlUUravf27LJRwLTN9yCxYEYhNqyejLfDxQ12m3lyedenSQ RbzkeVzFmjciRHdbes0nkW7bflvcSIwJWGhuMi7flvKFoMbvIm7yiiB6DDPA8CVYjrqy KlZSvaVKmaMYMUoWkaKiJNzfD3Y8AW+FshrmRLg7BHpsjte9i1WXktifUg8qb5VQ4sWA SSFhpuutg5fb2AXbvtWwi79uZq8BiU22U5UyMiEDYVU10h2nZm9L0d0+tkThcjdSiq7U V0OltqCihuCbWaeBCZK4FdDkq4wtQ9XOdus0i53zpThffhlObwrRn4k/pgD2pc+t0lBo X/zw== X-Forwarded-Encrypted: i=1; AJvYcCVmz4lT1bDkUoeg5a1SAoWuzSRxaLzPjegKFkWC0O2JlohI2WmfOiCSAiaXUP4fpNAm0P7gF1Gol+7u9Ac=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9tiSE/T7OAPjDuh0Th7EbVtF18oJfIi/PYSqneFXqam15epPT cm6H/fpVKG/XenH+MmKe9zI0qkS5Ah4xPhMCjWUN8GLi/pegzsz7DqKZ X-Gm-Gg: ATEYQzxZtq9A5h3p8fQL01Y8eNrLPaiyj01ozwUSOHFgCCMRQr3Fd0I9MZfb1FnIypE /ipirnIwUgO7QfSRkUqKBdMoDDPNCCkUxtG0KV7jbORjDKQxuFy4CJOMFjPN8zgeIHixvl1f3U6 ljLPWRlV5s9gEZ4sxYzb2w0TlPAuZdknfcDKdONfrXzz4X7hG2xBGB6o80x+5fuXFjBwbV0vJbS kwvSeJ1s7FDUgMAPoVOMrXH9+tPUHnEckIg1Ee7ca3ACRnmvHNyJhI2JO8WFfZxPAiV5rjrSQVl LYHiq9gMYeIagCxvBJYT2glS5P1k3L4BAI3S4XGTiKQEDGRRS2qq+LUVpaS996gNaQZj65Igsc/ mVhNAuq3m4hQq6Q9GjIm/UBj37NPRYsZBNTzHXmVviW+x54uY9B5uT1aXEawxOW34FM4dpKyVlB fkHFlL/1FzeKF29JmYOFtMCaDKwe32lRBM6ub/k1BikPqFJq2cGJpuMJT2pVgsbp4Xbw== X-Received: by 2002:a05:600c:c16e:b0:482:e5d4:b7ca with SMTP id 5b1f17b1804b1-483c9bbb8d3mr200785895e9.8.1772464437211; Mon, 02 Mar 2026 07:13:57 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:56 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:26 +0100 Subject: [PATCH 05/10] mmc: sdhci-of-k1: add AIB register 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: <20260302-orangepi-sd-card-uhs-v1-5-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add support for SpacemiT K1 Analog Interface Block (AIB) register programming required for proper UHS voltage switching. The AIB register controls SoC-level voltage domain coordination between the SDHCI controller and I/O pins. - Add AIB register address parsing from device tree - Implement authentication sequence for secure register access - Add voltage domain switching for 3.3V/1.8V operation Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 60 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 60 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 2a982bca2a50ca96f43af7b4de5bc4fb4b5b195b..9425bde6a72541bd628997e91f9= 57072a6266c25 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -68,12 +68,19 @@ #define SDHC_PHY_DRIVE_SEL GENMASK(2, 0) #define SDHC_RX_BIAS_CTRL BIT(5) =20 +#define MMC1_IO_V18EN BIT(2) +#define AKEY_ASFAR 0xBABA +#define AKEY_ASSAR 0xEB10 + 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; + u32 aib_mmc1_io_reg; + u32 apbc_asfar_reg; + u32 apbc_assar_reg; }; =20 /* All helper functions will update clr/set while preserve rest bits */ @@ -220,6 +227,47 @@ static void spacemit_sdhci_pre_hs400_to_hs200(struct m= mc_host *mmc) SPACEMIT_SDHC_PHY_CTRL_REG); } =20 +static void spacemit_sdhci_set_aib_mmc1_io(struct sdhci_host *host, int si= gnal_voltage) +{ + struct sdhci_pltfm_host *pltfm_host =3D sdhci_priv(host); + struct spacemit_sdhci_host *sdhst =3D sdhci_pltfm_priv(pltfm_host); + void __iomem *aib_reg, *asfar_reg, *assar_reg; + u32 reg_value; + + if (!sdhst->aib_mmc1_io_reg || !sdhst->apbc_asfar_reg || !sdhst->apbc_ass= ar_reg) + return; + + asfar_reg =3D ioremap(sdhst->apbc_asfar_reg, 4); + assar_reg =3D ioremap(sdhst->apbc_assar_reg, 4); + aib_reg =3D ioremap(sdhst->aib_mmc1_io_reg, 4); + + if (!asfar_reg || !assar_reg || !aib_reg) { + dev_err(mmc_dev(host->mmc), "Failed to map AIB registers\n"); + goto cleanup; + } + + writel(AKEY_ASFAR, asfar_reg); + writel(AKEY_ASSAR, assar_reg); + reg_value =3D readl(aib_reg); + + if (signal_voltage =3D=3D MMC_SIGNAL_VOLTAGE_180) + reg_value |=3D MMC1_IO_V18EN; + else + reg_value &=3D ~MMC1_IO_V18EN; + + writel(AKEY_ASFAR, asfar_reg); + writel(AKEY_ASSAR, assar_reg); + writel(reg_value, aib_reg); + +cleanup: + if (aib_reg) + iounmap(aib_reg); + if (asfar_reg) + iounmap(asfar_reg); + if (assar_reg) + iounmap(assar_reg); +} + static int spacemit_sdhci_start_signal_voltage_switch(struct mmc_host *mmc, struct mmc_ios *ios) { @@ -233,6 +281,8 @@ static int spacemit_sdhci_start_signal_voltage_switch(s= truct mmc_host *mmc, if (ret) return ret; =20 + spacemit_sdhci_set_aib_mmc1_io(host, ios->signal_voltage); + /* Select appropriate pinctrl state based on signal voltage */ if (sdhst->pinctrl) { switch (ios->signal_voltage) { @@ -341,6 +391,16 @@ static int spacemit_sdhci_probe(struct platform_device= *pdev) dev_warn(dev, "Failed to get regulators: %d\n", ret); =20 sdhst =3D sdhci_pltfm_priv(pltfm_host); + + if (of_property_read_u32(dev->of_node, "spacemit,aib-mmc1-io-reg", &sdhst= ->aib_mmc1_io_reg)) + sdhst->aib_mmc1_io_reg =3D 0; + + if (of_property_read_u32(dev->of_node, "spacemit,apbc-asfar-reg", &sdhst-= >apbc_asfar_reg)) + sdhst->apbc_asfar_reg =3D 0; + + if (of_property_read_u32(dev->of_node, "spacemit,apbc-assar-reg", &sdhst-= >apbc_assar_reg)) + sdhst->apbc_assar_reg =3D 0; + sdhst->pinctrl =3D devm_pinctrl_get(dev); if (!IS_ERR(sdhst->pinctrl)) { sdhst->pinctrl_default =3D pinctrl_lookup_state(sdhst->pinctrl, "default= "); --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 256914014B2 for ; Mon, 2 Mar 2026 15:14:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464446; cv=none; b=r+lOXtNqhcVx/jXCW2nd19IHPDYrBCmHutzf2CWRW/xF5ZGOiuZn8fxnq1lGsKR/n+YyaHxp/GxbrkVAAGWegBCkZ3DMKOeipTZ8KnpaK7EhkVb7GPF8ZqRpqNB/9HQyOslBih7un9/EeZ8hy80cV2KgoHRpAJiN4YLZXHuB6q4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464446; c=relaxed/simple; bh=GcZr61TwOvUtUfWMRCxXjJRa5feWxGnGJ1rS2AAyvgg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SCL0XfGEh3Wx3URvJuZDKtCQkR5p/YjsZrkHNZ8B6T+e0rFrBMbPlOkJuaki8iWaTozl02roCgagyLIZ3lvVndqkgRaQEvMchWHxS84VMctx31ezPjpQ3BSO9pNf5cBElwNGL3oXNRX9nVe+5ueRxozifDXjAjvr8gWGlJ14bcM= 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=INDXboOY; arc=none smtp.client-ip=209.85.128.51 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="INDXboOY" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4837634de51so18968485e9.1 for ; Mon, 02 Mar 2026 07:14:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464439; x=1773069239; 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=sI0ZXWmHjNvtD6IpJHMeOdxd2SjR4noe2NBQlRy+ENQ=; b=INDXboOYioJXolxrreFaV52fmM4iqoD0lk6Pwlx3bt+UeLg14GZOhxbQf3X9907AY4 MonQk9crJxNYC/3qlrNsxFmqOluYwgcZrLpOmCy51Jx5Dx7osYcM3t1+QM+uX/os3Sas eSizHUyVo9q93Cg6UIxis01g0NTn1TI3mFVvnqIkUB1EMu/1pR7a7VyyVGZquDysh2E5 o7u5WzCJiS1rQyD8d78w7dQAtn14aF36T7Ia61ayjYz707h/1fTHyBdgbF+AP/hk0Cvf 8uKAvFrq3h6htsX9FBUzYkRhHo1linFuYDaMWannWkN873vgLp250fd/90NQ3P+TNUHc Cc5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464439; x=1773069239; 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=sI0ZXWmHjNvtD6IpJHMeOdxd2SjR4noe2NBQlRy+ENQ=; b=dYKF7/EnqL2iodAX4ZxZjV/LbeIOSaGpXqDgpLazVsaXULOU39xoqqUzOcT+jC1Kxn xPwjJVLqfbiWfb0B9yBJWi9EivpL2pkdMmcOPBtNXW6mHp16UiZRGBTzutbX1JXDEUKr bJ0TIhAHhO8+QMJAXT7nEnXfvj0DQEYCgXrAGDLYiVDgiuzHu6n5WEIJ0whLGsfFTEb/ h64qFLfYvNe6/ZxU1ZJHkdIQyoddPJtsX4Oq2QmIroQgrN1vLaU9w0cYoPNSQRJwkUJF YaKDisUoQ9PeCxgYlaorI/DtdLAnuqEBUITSSMu+xbaz9ezY7S97YP9teiyhRXG94GJM O4fQ== X-Forwarded-Encrypted: i=1; AJvYcCWqI5cPZuoY3SbU0alZoAkR7gY91CSiolWPt9PYGeQZgj/4xLE3u5r3mRySIwdbQMjAxRy/mbdE1K3J9Hc=@vger.kernel.org X-Gm-Message-State: AOJu0YyWnrgUPJ0ek22dv4YEWsUSKojQzVGjebOr1TZxH2VYEVDSOzDn fSB1yO1sH3t5INf1AKTUY/u0dwewJd6Mgd+UQnfYXPs5z+A0fLBfynaY X-Gm-Gg: ATEYQzwx4xcZZFkcr9fEs5VACi499Ma1QwELi2/mLRfbTUMaW9Yvecy5cJXdZxQKV3J ANWvskJKqBfXMKm29Nx3PZVu6l6vQlno3SD4iD1DPFBmUbYtAQGpBGPvPJ4qSOS0rgVWGH5y92G lOL1vjbUcak4w/gKxbGOKGvrQsrp1JEItwziQHIF/fEeIb1OKbP8k0/WEM/km9PVMe9xfbHtgNS 2p+TZ6fGZ+k5W0e8JbMoBkULAP2m4upefu8mj8WkCSznBxvdBHTA8FtsCC/4O6Gz0by+F/SXc07 B5osaqckTl0PtsK+glr5Svmt3OTNUIIOyXr8x8QJ4v95biB2uf0/yM8bmOgiVquErCt2YTbZ3MK iJgUv0CsQ5BkHXuSTWcjGz/rNUMsquRXjaIFNEnkTpjA9aXgEeMN6+JcPlmlQcV/scLKqUWltZd +XfU+BzJLTX4PXWaO9yDuAyPLJOfNwsgtVLdpWAQynjQDEtY2qaNHkRalQ8PtWfVx9GA== X-Received: by 2002:a05:600c:5395:b0:483:709e:f22d with SMTP id 5b1f17b1804b1-483c9c24797mr190414855e9.27.1772464439170; Mon, 02 Mar 2026 07:13:59 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:13:58 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:27 +0100 Subject: [PATCH 06/10] mmc: sdhci-of-k1: add SDR tuning infrastructure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260302-orangepi-sd-card-uhs-v1-6-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add register definitions and delay line control functions to prepare for SDR50/SDR104 tuning support: - Add tuning register definitions (RX_CFG, DLINE_CTRL, DLINE_CFG) - Add delay line control helper functions - Add tuning preparation function This infrastructure prepares for implementing the SDR tuning algorithm while maintaining all existing functionality. Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 62 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 62 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 9425bde6a72541bd628997e91f957072a6266c25..34a1b9c359193be7dd5f07d1f3d= 6565b5f40e7ff 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -72,6 +72,23 @@ #define AKEY_ASFAR 0xBABA #define AKEY_ASSAR 0xEB10 =20 +#define SPACEMIT_SDHC_RX_CFG_REG 0x118 +#define SDHC_RX_SDCLK_SEL0_MASK GENMASK(1, 0) +#define SDHC_RX_SDCLK_SEL1_MASK GENMASK(3, 2) +#define SDHC_RX_SDCLK_SEL1 FIELD_PREP(SDHC_RX_SDCLK_SEL1_MASK= , 1) + +#define SPACEMIT_SDHC_DLINE_CTRL_REG 0x130 +#define SDHC_DLINE_PU BIT(0) +#define SDHC_RX_DLINE_CODE_MASK GENMASK(23, 16) +#define SDHC_TX_DLINE_CODE_MASK GENMASK(31, 24) + +#define SPACEMIT_SDHC_DLINE_CFG_REG 0x134 +#define SDHC_RX_DLINE_REG_MASK GENMASK(7, 0) +#define SDHC_RX_DLINE_GAIN BIT(8) +#define SDHC_TX_DLINE_REG_MASK GENMASK(23, 16) + +#define SPACEMIT_RX_DLINE_REG 9 + struct spacemit_sdhci_host { struct clk *clk_core; struct clk *clk_io; @@ -102,6 +119,50 @@ static inline void spacemit_sdhci_clrsetbits(struct sd= hci_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); @@ -335,6 +396,7 @@ static const struct sdhci_ops spacemit_sdhci_ops =3D { .set_bus_width =3D sdhci_set_bus_width, .set_clock =3D spacemit_sdhci_set_clock, .set_uhs_signaling =3D spacemit_sdhci_set_uhs_signaling, + .platform_execute_tuning =3D spacemit_sdhci_execute_tuning, }; =20 static const struct sdhci_pltfm_data spacemit_sdhci_k1_pdata =3D { --=20 2.53.0 From nobody Thu Apr 9 13:33:04 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 01B6A413231 for ; Mon, 2 Mar 2026 15:14:02 +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=1772464447; cv=none; b=GyXcE3mLK9ow94S2cshiggEDb2RGbgAeasPHkQhf0WHMxepWkzoSeue9Sr2W53LfgxabHPJ1CXc+XEzj31DK7qGGfHFs8Sgx8fJMyDk6WwzZu4eh6qIWfX8ZQDc8f/v5YWhGxIGXMMIjqQBya/KFlHte44U4iUZLHw37zkkqayU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464447; c=relaxed/simple; bh=YGXsqqioq9kkrCwc3vs62N/3x0ZWHVLmrt+qJu2Nu9E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GJNydPHJPbm/YFdJUORBq5PMBBT4Y2HkcJZ8PCwTBwoN29Uaan91jcqi+eqgkWMQHpAAEgZcF0FuPGaHrvx4Gj3IpTyt6D88uI/8904lQJfkgKr5pc2InIxfA9Z58L27YjOnyyrrvwiBEZaG3c5r6Yyos7QZ3ziz8V/H+PesObw= 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=RsiwEpRY; 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="RsiwEpRY" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4833115090dso47405915e9.3 for ; Mon, 02 Mar 2026 07:14:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464441; x=1773069241; 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=AeFtmpd0OzFDMpfzIzFKTIa4npbmPiXE0EW+dCwlXrY=; b=RsiwEpRYuSuZwwAXyeYKliD2lDwFSc9NQ23+R1G73w8qLEDGb/6falpRDJvY9Kd6jC 2xteP1Hjt0GB6zkfRKHAkI4I4lUYIy9P3nLJKqcuGGF7dVlWP0U+lBlAUoufGd0tr8uj 4ImNc976Sw9LL/XwPom4W09q5Eo65ug1cDWdB6w62D5g6joeI6bOsGmD76zq0XjvZVGT qXb/9YcNfU9v9p5wMBw5idtneS9astO4sK+s028C/PE8i8xZrHYK4agEkLc0Ct+EIjQX McDZw96Z4JHoHp0/oOoKXq1ywbl1/Mn3Ib3insCD9X8Qf539BLVbPujUGCnXCD3f7LpE CjYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464441; x=1773069241; 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=AeFtmpd0OzFDMpfzIzFKTIa4npbmPiXE0EW+dCwlXrY=; b=e9IA3aIiAHIltRgEX4tUQ0VE0F5N9vN75VegvKM/8GKKZ7BwMP/lST7M8DnBT6aRLI JkW9Qa332+dS8sDpXnhXV+WvapoW3Odk4CcJjem95kQb4/cmFoM7ccmjaBY5xajnszE6 6ZP6o195QS3v2nqTH/O+nn5JiDdiEK6agP+McLuzep1HTR9D1H9aAPzcrNAeoKSHMvjR zIAWw3Fe1r857SUo9lrfzdMm7r53eCQSKrjMrBpG6wsk6MSI8MbGowgzPL/GQRjP+04e +wbV8Sg0OoQGVqauspPA3kRzlZJSwnB4H8USHun5cxJJpcBtW2ZXi57maW4RqI67PVMq RODg== X-Forwarded-Encrypted: i=1; AJvYcCW0mfmToyfaRN7pTYGztjPgYvXrTngZ8DtTwyqnWeawew5rTxf58Ei9xkf6MdjrseeUq7j+kbAyd7F3d8Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+Kuw251XN1fmKYOBK6878WksSQ/xO+/ZEj3d7Dw4vrEUtDX1K o6vPgE8WnAW6aJAsCKRSEC2k4QttdNatdgYBuwHZc9v6eRB0ot3IUmPh X-Gm-Gg: ATEYQzxcTrbahhyxYGdq9NLhxRQjbEZdtGhOQX4kmN3aeirOg4Sh2mR20IloAK6o0R8 IMcYNcnDyd3ZeIaKJdAsXgxMP50VZpzsBed05xQxItTbBF1oFOE5Q6JkVOPYkvOJwpWQ86kotni Nh3cr7En9bT8Q5BmO0C/uHJI2vcsgepri4EIC3Zm/a7wIaSURQCimMgH3LU+KaHKt4eLRVtINIy ZlooZ0JsZlUhZpyypSbXWSWD0FwwpBd/l2ZEEFyqpu00vbZJXwyYKtFNWZJlJ+VbYu9emMaSyYY UNNVpJS9EXsBz2P+y1P8VzSPd2GZPGuVdDzf7NpOPZYJBvnlMvC02ENjbln2VPKnpm7HrA/mmS1 QbiZO1WYW+JS7dNaD20WyEj+SS2nh71TypLS5T+J6ARSqntBVykFAZDlLtE9kKVKFeuwZn2GrZd ooIiY10ST2RlhtCBAW+r4oWeF1QNu0pSPRpMMdGLEn6EocIwMahTl7f33+n7Lg94cKFQ== X-Received: by 2002:a05:600c:3550:b0:482:eec4:76d with SMTP id 5b1f17b1804b1-483c9bedad1mr235668315e9.17.1772464441044; Mon, 02 Mar 2026 07:14:01 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.13.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:14:00 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:28 +0100 Subject: [PATCH 07/10] 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: <20260302-orangepi-sd-card-uhs-v1-7-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Implement software tuning algorithm to enable UHS-I SDR modes for SD card operation. This adds both TX and RX delay line tuning based on the SpacemiT K1 controller capabilities. Key features: - Conditional tuning: only tune when SD card is present and for high-speed modes (=E2=89=A5100MHz) - TX tuning: configure transmit delay line with default values (dline_reg=3D0, delaycode=3D127) to ensure optimal signal output timing - RX tuning: test full delay range (0-255) with window detection algorithm to find optimal receive timing - Retry mechanism: multiple fallback delays within optimal window for improved reliability - Complete register support: add delay line control and configuration register definitions for fine-grained timing control Signed-off-by: Iker Pedrosa --- drivers/mmc/host/sdhci-of-k1.c | 118 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 118 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 34a1b9c359193be7dd5f07d1f3d6565b5f40e7ff..95b016bfb5598acea4166257d12= af54d945a0c13 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -88,6 +88,12 @@ #define SDHC_TX_DLINE_REG_MASK GENMASK(23, 16) =20 #define SPACEMIT_RX_DLINE_REG 9 +#define SPACEMIT_RX_TUNE_DELAY_MIN 0x0 +#define SPACEMIT_RX_TUNE_DELAY_MAX 0xFF +#define SPACEMIT_RX_TUNE_DELAY_STEP 0x1 + +#define SPACEMIT_TX_TUNING_DLINE_REG 0x00 +#define SPACEMIT_TX_TUNING_DELAYCODE 127 =20 struct spacemit_sdhci_host { struct clk *clk_core; @@ -256,6 +262,118 @@ static unsigned int spacemit_sdhci_clk_get_max_clock(= struct sdhci_host *host) return clk_get_rate(pltfm_host->clk); } =20 +static int spacemit_sdhci_execute_tuning(struct sdhci_host *host, u32 opco= de) +{ + int ret =3D 0; + int i; + bool pass_window[SPACEMIT_RX_TUNE_DELAY_MAX + 1] =3D {false}; + int pass_len =3D 0, pass_start =3D 0, max_pass_len =3D 0, max_pass_start = =3D 0; + u8 final_delay; + struct mmc_host *mmc =3D host->mmc; + struct mmc_ios ios =3D mmc->ios; + + /* + * Tuning is required for SDR50/SDR104, HS200/HS400 cards and + * if clock frequency is greater than 100MHz in these modes. + */ + if (host->clock < 100 * 1000 * 1000 || + !(ios.timing =3D=3D MMC_TIMING_MMC_HS200 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR50 || + ios.timing =3D=3D MMC_TIMING_UHS_SDR104)) + return 0; + + if (!(mmc->caps2 & MMC_CAP2_NO_SD) && !mmc->ops->get_cd(mmc)) + return 0; + + if (mmc->caps2 & MMC_CAP2_NO_MMC) { + spacemit_sdhci_set_tx_dline_reg(host, SPACEMIT_TX_TUNING_DLINE_REG); + spacemit_sdhci_set_tx_delay(host, SPACEMIT_TX_TUNING_DELAYCODE); + spacemit_sdhci_tx_tuning_prepare(host); + + dev_dbg(mmc_dev(host->mmc), "TX tuning: dline_reg=3D%d, delaycode=3D%d\n= ", + SPACEMIT_TX_TUNING_DLINE_REG, SPACEMIT_TX_TUNING_DELAYCODE); + } + + spacemit_sdhci_prepare_tuning(host); + + for (i =3D SPACEMIT_RX_TUNE_DELAY_MIN; i <=3D SPACEMIT_RX_TUNE_DELAY_MAX; + i +=3D SPACEMIT_RX_TUNE_DELAY_STEP) { + spacemit_sdhci_set_rx_delay(host, i); + + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + pass_window[i] =3D (ret =3D=3D 0); + + dev_dbg(mmc_dev(host->mmc), "RX delay %d: %s\n", + i, pass_window[i] ? "pass" : "fail"); + } + + for (i =3D SPACEMIT_RX_TUNE_DELAY_MIN; i <=3D SPACEMIT_RX_TUNE_DELAY_MAX; + i +=3D SPACEMIT_RX_TUNE_DELAY_STEP) { + if (pass_window[i]) { + if (pass_len =3D=3D 0) + pass_start =3D i; + pass_len++; + } else { + if (pass_len > max_pass_len) { + max_pass_len =3D pass_len; + max_pass_start =3D pass_start; + } + pass_len =3D 0; + } + } + + if (pass_len > max_pass_len) { + max_pass_len =3D pass_len; + max_pass_start =3D pass_start; + } + + if (max_pass_len < 3) { + dev_err(mmc_dev(host->mmc), "Tuning failed: no stable window found\n"); + return -EIO; + } + + final_delay =3D max_pass_start + max_pass_len / 2; + spacemit_sdhci_set_rx_delay(host, final_delay); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (ret) { + u8 retry_delays[] =3D { + max_pass_start + max_pass_len / 4, + max_pass_start + (3 * max_pass_len) / 4, + max_pass_start, + max_pass_start + max_pass_len - 1 + }; + int retry_count =3D ARRAY_SIZE(retry_delays); + + dev_warn(mmc_dev(mmc), "Primary delay %d failed, trying alternatives\n", + final_delay); + + for (i =3D 0; i < retry_count; i++) { + if (retry_delays[i] >=3D SPACEMIT_RX_TUNE_DELAY_MIN && + retry_delays[i] <=3D SPACEMIT_RX_TUNE_DELAY_MAX) { + spacemit_sdhci_set_rx_delay(host, retry_delays[i]); + ret =3D mmc_send_tuning(host->mmc, opcode, NULL); + if (!ret) { + final_delay =3D retry_delays[i]; + dev_info(mmc_dev(mmc), "Retry successful with delay %d\n", + final_delay); + break; + } + } + } + + if (ret) { + dev_err(mmc_dev(mmc), "All retry attempts failed\n"); + return -EIO; + } + } + + dev_dbg(mmc_dev(host->mmc), + "Tuning successful: window %d-%d, using delay %d\n", + max_pass_start, max_pass_start + max_pass_len - 1, final_delay); + + return 0; +} + static int spacemit_sdhci_pre_select_hs400(struct mmc_host *mmc) { struct sdhci_host *host =3D mmc_priv(mmc); --=20 2.53.0 From nobody Thu Apr 9 13:33:04 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 5E9CA41B37F for ; Mon, 2 Mar 2026 15:14:05 +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=1772464450; cv=none; b=EEFrEMDeRrGLh9Je9wdMiLAcKE9OpxnJQuZ+3sVYktAURy7kWPomDzI/2VyqmgLxsqxwgx/fqtaM5Co++QxL+5U6TpFj6Ij92kwgk9iR9BcLk3nA2BtKqkJd+hF7Czv2hg9FB8iZaOo594bmuvCPUJf1fsjYPHOHlVspJzbIO84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464450; c=relaxed/simple; bh=dcEFhqPvKdwQuanA4mTY4Hc01u8XbBg6NksC+/+CuBo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TYalDIEAcyFUdtKh3HmouwhJ+5v46/9Hvsh8umt0aaVuQViXzENVaBUltXgedSQwI40keT0GjPxyW1zr66VAOdiFoyZ/QddM52OarlPYt/SPU1W5ruV7rmVkG2C8m/ZJsvQm3Rd71tbsPDPWk5yVNlqbMlFNA5fnnkKF/fmMAlo= 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=a2nmc/UJ; 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="a2nmc/UJ" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4836f363ad2so55221135e9.1 for ; Mon, 02 Mar 2026 07:14:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464443; x=1773069243; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Dz1rwkI02gKLCCAejR8NRcSe9CYDdLI50V/yGcp3k+8=; b=a2nmc/UJNJ2fU4F7yWSUwWs5G0FeY0nAqEfp0qttKLf4N+EKgMrxUZH2RK+8o+iMNJ EZMERFdKFb32af7/Ge7Yl/s6NP6Iz+7Kn96czf7DhBEoOqf+E63fF3bj0sX+Iw7ZMrDC 67SsFMD5SF7M37FtGrSou8RekQmwA88vRMW+kLwvUD9I486hzHg7WVMLsguA9/UKlOid /jpm8EoYnzmufNktRPISdPCpUg6LWpW9aY9WMirVUItPQnX24IDXHoJiP/YZTXAcE7I9 DZYc4Zrvb/cqpqZLoQcAxELcbqmaRwDr+oUYZeGDGvC3Npg62TsyJ085v2SLkF2SnmrJ uAvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464443; x=1773069243; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Dz1rwkI02gKLCCAejR8NRcSe9CYDdLI50V/yGcp3k+8=; b=lbZjpxJgKpv3jNDGxTbBPL+cl0PieIt49jwJgYcu5unzyXM4Ru32FBFkfb/Ps6AjaD BHF1zCUeWws3WvXWjwR9tr3gt6+LFx7j4nJeTYV+eCaSJHjZ4bNVsY2gNSVIHBPEeSV+ /RkDIh9+5PMsJQpyMS6r53/dFZR8EQqmyLvV/jnOInnd+75cexJZq9DRebFMKUjwDu77 +aymz3oOzLP6GxW80OTPrWu8An85AUSkxjQRNMpyEmlBGF4WlAFaqilSBuGHrpCO5kEz OnnMRslPiQMseBWcdkasDsmZ6PPprnxzdpB+PhnHzOvnwLRZpOhs32+Buf4EwtjBCC// RdIw== X-Forwarded-Encrypted: i=1; AJvYcCViqMo9Mlf7DtZi/VI7tk5eU9jtYjyI5ryH7gFvnHsDLKsqlhZYK34A/yVq2CsEeySitl9PffjzBvB49dM=@vger.kernel.org X-Gm-Message-State: AOJu0Ywss1kFAD/qNrfJXWwyUqhXwF4s68FcN5DU27VjrmkugqUooE4s gyMMGTc6plK4VlYe3thdPYEeirVwVaXR6zx0/s9aAAyZXx0UhrDZQoqZ X-Gm-Gg: ATEYQzw9tGP5xez6/30meePqAt31lGCHv7OlA8MkldEUiLCoWNPjqhea1zhTZ7UUCdQ IDEIh9dho6kldpmqlXFqRM0jkDvt6auJWMB+/tHIoO5oGedZbdHwzxqD6LIXmRhzxBbPu3Ys6P8 TUfiD8zRea3aclNQH/eAL2Gv7BWlIMUkgTOwoVheUYI2Vr09sdxVmWq+sR/kWX6DhbjIx+Wj7wX 7OQSF04qZWWaAwoI1cFnKWof6w2qgQ7WeF+dTpEyFnL0yNbbZmXsvCo9IvW0rD7B3zHoMzy9XKC jYJaYAkVQJ/ITK/IT5c5OqUgLYIdKLNnrcjK/L4xq7rIdUnl6vieL4h9Ycst103vSlkGJtJWthx ZTZ5IMT8/7I2bO0xxxNhHhcpE4tZk8sOoR+dkYQQ07zOBrSerxXABzy9oUiHHt7yujrqDXy1EAX OKpp9uOBSPsxTZOAJIxumh/V12zINf5yMYXUQ8HuZNpRV/to1t3SbqGaU7GDvrSBCUVQ== X-Received: by 2002:a05:600c:4e16:b0:47e:e414:b915 with SMTP id 5b1f17b1804b1-483c9bb6564mr218276695e9.2.1772464443134; Mon, 02 Mar 2026 07:14:03 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:14:02 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:29 +0100 Subject: [PATCH 08/10] 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: <20260302-orangepi-sd-card-uhs-v1-8-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add SD card controller infrastructure for SpacemiT K1 SoC with complete pinctrl support for both standard and UHS modes. - Add sdhci0 controller definition with clocks, resets and interrupts - Add mmc1_cfg pinctrl for 3.3V standard SD operation - Add mmc1_uhs_cfg pinctrl for 1.8V UHS high-speed operation - Configure appropriate drive strength and power-source properties This provides complete SD card infrastructure that K1-based boards can enable. Signed-off-by: Iker Pedrosa --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++++++++++++++++++++++= ++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++ 2 files changed, 53 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot= /dts/spacemit/k1-pinctrl.dtsi index b13dcb10f4d66022d27307de73a6ea3287e97441..8d82011f1af666fb78c282a2abc= c0cb88f962053 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -570,4 +570,44 @@ pwm14-1-pins { drive-strength =3D <32>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <7>; + power-source =3D <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux =3D , /* mmc1_d3 */ + , /* mmc1_d2 */ + , /* mmc1_d1 */ + , /* mmc1_d0 */ + ; /* mmc1_cmd */ + bias-pull-up =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + + mmc1-clk-pins { + pinmux =3D ; /* mmc1_clk */ + bias-pull-down =3D <1>; + drive-strength =3D <13>; + power-source =3D <1800>; + }; + }; }; diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index 529ec68e9c23eb2a93c04e9ccd3f22a01c4cc4ff..1e9e4f4f41c196326f20c0e5ae6= 721ea85ea5091 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -1207,6 +1207,19 @@ emmc: mmc@d4281000 { interrupts =3D <101>; status =3D "disabled"; }; + + sdhci0: mmc@d4280000 { + compatible =3D "spacemit,k1-sdhci"; + reg =3D <0x0 0xd4280000 0x0 0x200>; + clocks =3D <&syscon_apmu CLK_SDH_AXI>, + <&syscon_apmu CLK_SDH0>; + clock-names =3D "core", "io"; + resets =3D <&syscon_apmu RESET_SDH_AXI>, + <&syscon_apmu RESET_SDH0>; + reset-names =3D "axi", "sdh"; + interrupts =3D <99>; + status =3D "disabled"; + }; }; }; }; --=20 2.53.0 From nobody Thu Apr 9 13:33:04 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EAE8741C0DA for ; Mon, 2 Mar 2026 15:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464451; cv=none; b=SRJ1xQfjRT136WdsXfhqTb6mT5flLY2AwlyCdRrGkQ/mQPOISoY5JlQ0r1EMBF/D6eiGrxlwFl+ZyQP6CJT5ajDyYPZT5JSSqDpB8OQex/wQr7AGgfuiPw58R+RSEtTan1/QVPR8U55rRDoRnEugntt2BDrgOz5Wr1DqpSZ4X5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464451; c=relaxed/simple; bh=70rfTlR2IAWuKF6gWYOHTAy0yzzcBoXO6BwKFGm1+do=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VNSGqS0ZHZviwrM+EuT2DPZYjbOY8IUSopUV2rgOghKcUKMu3yqD5X71DviwPBr1KyPeO9sJbO5BFNRBfgNBVRs5dWCbT9W9vDlfQSSkCW2zxv1ltpMYRJN4cQR+w50Y3MU5jbBHEFcExtD4sYTO8DdS7JHq+YZ7xD6CbkTMgYw= 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=TV3h1mBD; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TV3h1mBD" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4837907f535so39913825e9.3 for ; Mon, 02 Mar 2026 07:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464445; x=1773069245; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=fiI3b1wOWntFX27ERmDlj5qmTKTz44jgUTrCNSLGaQE=; b=TV3h1mBD/9PJeyH6glKCbC7JSf9l/+gI49GDAZzHTR242hp1AaO235XLy/tCNqDi+s YzNZgnArkLPLLShyK9hL0VIzgXn5ZflHQDu6wON7fGmgoyRbV/xxS0Ui2j/fQKUHALmM wpwIePtanVt//lbTl8vDf1pMQH5EMRJI7ANRFLLi8Tv9EKfXHyGTbngiR4Sq6sqKE5hv 2JiznmWfbRhuBSnhg3OEnSA4gtfCvLDEdvZUv3J9zqjDwx2h1mIocGP6eRzMAJ9DkHh+ H05ST3zUtJyR7xdvgV9iufFz4XN1QWWsqH/phDFLDai4ZQ7LsgZ5cXckZ5b6l9w6bxQG lrjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464445; x=1773069245; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=fiI3b1wOWntFX27ERmDlj5qmTKTz44jgUTrCNSLGaQE=; b=D2EhwreDrD5g1ZVkzpG8+GWRuO26YEdPGnGwZJp8l76haew3iYkS0FnZ2cvw/GAU4V NsJpSkyssywaZGGEyWXLQw0gu+o2Led/tLPTLedclyJLxjLdjFpJEu3cFoUKoNPLCam6 aCJG2vpJU8FRoW8nHVGBcq8a/VQwFvC8vkQUJXtKssA+NtwADUn1W//J8suTwBDqHr1n Mmpi4TUDPy6Ek7w+rXfXwb/RP0No5zQmeh/VxnkaOeWoN+J5poR17x+vttWwVuGRptse Jelnwq2fFHhpiJVKkKIBzVCljqRUjDucpD5r4sG73vJm88X+Cb1yDpSxWYZZG0qV/cR9 1leQ== X-Forwarded-Encrypted: i=1; AJvYcCUISGi5BBrK0Ph/jJMmgN9ukq5wlX2ynJJXtaZ4qYDIz6Fv3D7g9eBl7LSa5CKPRGHF31qu7xdtRYzbCRE=@vger.kernel.org X-Gm-Message-State: AOJu0YzMfykXsyKqH9FumSh4Ks/3bLyvSdg6VA988AxzxN2iW316ZCJ9 zFmHAAHpcdhbRIYxiUc6nI3LXMuTCrNjg+rryis/ule8WzW39IRQDb09 X-Gm-Gg: ATEYQzzau/XfqD89PEMM5obtvYwRxuH6bje+ub8F3q5PlfqdW5t6Ne6Vb2q59rXEJIS jg7MOZ5ZUXaoGbTUdedkLTKQUL4vaSEcM2Ip7WUqOtSA+1StMAJKoarMSQg2/qDg8s14QPSPjXc u77yEKLkzvGniwxur8q7YP/g7uRch2eLHjNJrA/gx0sqd7kFAtzrCGwJoBmPa/4m0SJbQ0oh9eD Dky6ep0HQrFiB9Z4QX0uKN8q+hBBUFRfWjwpi5qq3M6y5hgiY7a288CEHdkzdpyUU+DRb2XBfSm 4O0TLWKTdYBxrbmp5jSVIt1XdTzBsUBsv+qJff6wsJngnIPrLasxllSOI+YTJjkCZxaRNb0sBpG AAhahvW6Unfw4YsiBcdK1RjDRe0XunIw2XaBQMnvryD7tcOTo3WVKbo0WnbnbjK0BY+sHTndyvy kLa01qx8SEjuvaS3GF7A8DJ9OAeIadKce56TEx819uawY7FKDm/2GXvG474xKIlSFdJg== X-Received: by 2002:a05:600c:a085:b0:483:badb:618f with SMTP id 5b1f17b1804b1-483c9bc5b7dmr211763895e9.25.1772464444896; Mon, 02 Mar 2026 07:14:04 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:14:04 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:30 +0100 Subject: [PATCH 09/10] 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: <20260302-orangepi-sd-card-uhs-v1-9-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add Spacemit P1 PMIC configuration and board power infrastructure for voltage regulation support. - Add board power regulators (12V input, 4V rail) - Enable I2C8 for PMIC communication - Configure PMIC with buck4 (vmmc) and aldo1 (vqmmc) regulators - Set up regulator constraints for SD card operation Signed-off-by: Iker Pedrosa --- arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 48 ++++++++++++++++++++= ++++ 1 file changed, 48 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/= boot/dts/spacemit/k1-orangepi-rv2.dts index 7b7331cb3c726f11d597f81917f3a3f5fc21e1b9..414b03f5e6480f05f5d7eeaaa0a= fb4e86425ae36 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -19,6 +19,25 @@ aliases { ethernet1 =3D ð1; }; =20 + reg_dc_in: dc-in-12v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_12v"; + regulator-min-microvolt =3D <12000000>; + regulator-max-microvolt =3D <12000000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_vcc_4v: vcc-4v { + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc_4v"; + regulator-min-microvolt =3D <4000000>; + regulator-max-microvolt =3D <4000000>; + regulator-boot-on; + regulator-always-on; + vin-supply =3D <®_dc_in>; + }; + chosen { stdout-path =3D "serial0"; }; @@ -92,3 +111,32 @@ &uart0 { pinctrl-0 =3D <&uart0_2_cfg>; status =3D "okay"; }; + +&i2c8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&i2c8_cfg>; + status =3D "okay"; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + vin-supply =3D <®_vcc_4v>; + + regulators { + sd_vmmc: buck4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3300000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + sd_vqmmc: aldo1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; --=20 2.53.0 From nobody Thu Apr 9 13:33:04 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 C932A41C2E9 for ; Mon, 2 Mar 2026 15:14:08 +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=1772464454; cv=none; b=JZPRcpdc4tz8Uecr849qYRA9IcKhKrM6rp3K3YcAYN1nr53fT1maQ3u+nDLyXRetHX3JXsK6GEdPdUAH+7bsJxRy/e7NDh7qc4Q1xSPchTdr9ODMjTepN+rN7+Ck09oBYg4YflJUEFGZXZBtUEYjZQ9aHHxvogefPwdeCtonLiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772464454; c=relaxed/simple; bh=q1S365EAUCSFZRfzHFj2YrxqxW/P8gDiboVdNm2IwmU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oA3oFu7fgKRAt2t4Cezm7mUfxGyncyzUfg2Q6+TUXxuXZYv18T1NLf5Vt9y6YeVQYBo6EY3+sB4Vl45l31WpTQ3i6e5M3AiA6mHYYT9zn594QiC3paENBfPZ7UZo4dw80KhkHSvK0ywJ4SbARGUfSHPpqYbg0DvufYmBdIgRYTI= 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=WqES2omY; 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="WqES2omY" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-4376acce52eso3096407f8f.1 for ; Mon, 02 Mar 2026 07:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772464447; x=1773069247; 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=pxmhxlsdpHuelB78+3YE0t0LkGzrS5SfPUfh1V6r7eI=; b=WqES2omY7rou7dSI2UcfEa3Vh3z45361b+z013IU+uc/wM747q+kU09w4bDNKGPtK3 sLRHPLKnkThIT36BqGAn4som6akxOtURzpz2xy0DaOzS52pGzts3YG2wVZHuN2jBKTsv NjGOszLXbRa+Dj9n+Gy/qjUecUhOzV//ZlwTDqKkb5P1EWN7hs2Y0izSPcjCKv4DhAr1 JdlbpQ/cvcunPwQ+uR1V+ItzCmBo7+iIhDK7gl/sNM3YCe/AZrEZVGxZ5AMb7xgWpTOr Es08m1GGLbiXZUrFW1OAqcq0qv0+n70H0HEPtsgNMfvdYau1spkIlZgbpPCvdpJuYN43 0fuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772464447; x=1773069247; 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=pxmhxlsdpHuelB78+3YE0t0LkGzrS5SfPUfh1V6r7eI=; b=N5oDLRymtKpTF/HC74devVOFgFxFopk3BukdtT8ftAjwo6Ob4PevdMc1urTzBDdP4D 926K1szaoDH2fbaIlr/IOqiFIGV80jIA4wmKYVQXZeMwdixHWVqMBRw+7B8l9NSWa2R8 K4TsBh5HXz4OsRDLco+iw96xfXAmJddSKdobasQpYNOlXKh42psUVtKFHXHkxmz9TEoM yiQE4XZb5PSjq1EOZhqY3OTydt/PkjWR1p9p3bXEkJ3KU+leo1zAthRiJl8MP5HBnF6O 7OeTHbw/NEhzS8ccElPSwZG9a+H0QeF66SzzdDCKOrLfqt94vUAx3MOUtj5aCg79QUay XMNw== X-Forwarded-Encrypted: i=1; AJvYcCW74SVhuaUmVMIag+/1KDhmj80i2IA8OTt21k3Q3y76rQiQZ0fUyKaE9IVkQEUEnF9MUuj+eMfA3neF83Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzWQKrBvM3x1QBZRnMyNQwg7u0Y/WUyO4sZfEUtUAoXylsVYJgL 82Nh43RhwRThhQGDSjOXNzBJDQfeQ/1mAJofprUktrXj+yYYpVjj5yhh X-Gm-Gg: ATEYQzwQZ47u/jc89Btc1ck2+4HEFgv8SCKn185jmGHoG7xNkTm3SRaGjqPyJ5BrC1H FBDxBAqedfKfwB/ZCxiCE1GZ5XRB1sRieFXRqX9jOpnjYX62/nuxhoACGVv5J12z7qgKGOwK8w1 F9wWUmjhM+CftiFoVftRwXLbACksFbLrS7JB37vYndXomrMxG6TACc1w5+AkN8n0ZqpDq0IZ6By 8f8eWy/3CaIP6g/m5xSOk7m/CUHjU3qhPgW2bip8VY82DNg/KBuD1IUGVhSMj45SfjP8raRneKa SYgr4n6QvDdYLmrVZGEG3GWzMLOfYBL8mZyEdlxIEoyI2u/L2yRx8cafOVJ19r8mVl0VOvX9i4n OA7OO5Zdp9TLmc3jF/dAcVtcUOgZeNsQTCmtUWzWYSMz6n/EpIbT3KoQgHJYKCm/rgub6Qs+Zec fXWMyTThnHiqPJDay+2Ngf48y6+poBYQNAhhqC2H7NWaZhp+Sb656c/S+TEUd8Jen/0A== X-Received: by 2002:a05:600c:4fc8:b0:47b:e2a9:2bd7 with SMTP id 5b1f17b1804b1-483c9beaca0mr263703895e9.19.1772464446760; Mon, 02 Mar 2026 07:14:06 -0800 (PST) Received: from ipedrosa-thinkpadx1carbongen12.rmtes.csb ([67.218.235.131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bd70e692sm437240265e9.7.2026.03.02.07.14.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 07:14:06 -0800 (PST) From: Iker Pedrosa Date: Mon, 02 Mar 2026 16:13:31 +0100 Subject: [PATCH 10/10] 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: <20260302-orangepi-sd-card-uhs-v1-10-89c219973c0c@gmail.com> References: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> In-Reply-To: <20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Adrian Hunter , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Michael Opdenacker , Javier Martinez Canillas , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Iker Pedrosa X-Mailer: b4 0.14.2 Add complete SD card controller support with UHS high-speed modes. - Enable sdhci0 controller with 4-bit bus width - Configure card detect GPIO with inversion - Connect vmmc-supply to buck4 for 3.3V card power - Connect vqmmc-supply to aldo1 for 1.8V/3.3V I/O switching - Add dual pinctrl states for voltage-dependent pin configuration - Add AIB register properties for hardware voltage switching - Support UHS-I SDR25, SDR50, and SDR104 modes This enables full SD card functionality including high-speed UHS modes for improved performance. Signed-off-by: Iker Pedrosa --- arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/= boot/dts/spacemit/k1-orangepi-rv2.dts index 414b03f5e6480f05f5d7eeaaa0afb4e86425ae36..f22f7427b3370a6b6c1cd8360b3= 3efc2a285f8d0 100644 --- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts +++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts @@ -140,3 +140,24 @@ sd_vqmmc: aldo1 { }; }; }; + +&sdhci0 { + pinctrl-names =3D "default", "state_uhs"; + pinctrl-0 =3D <&mmc1_cfg>; + pinctrl-1 =3D <&mmc1_uhs_cfg>; + bus-width =3D <4>; + cd-gpios =3D <&gpio K1_GPIO(80) GPIO_ACTIVE_HIGH>; + cd-inverted; + no-sdio; + disable-wp; + cap-sd-highspeed; + vmmc-supply =3D <&sd_vmmc>; + vqmmc-supply =3D <&sd_vqmmc>; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-sdr104; + spacemit,aib-mmc1-io-reg =3D <0xD401E81C>; + spacemit,apbc-asfar-reg =3D <0xD4015050>; + spacemit,apbc-assar-reg =3D <0xD4015054>; + status =3D "okay"; +}; --=20 2.53.0