* [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node @ 2026-04-27 11:24 William Bright 2026-06-04 14:42 ` William Bright 2026-06-04 16:01 ` Vladimir Zapolskiy 0 siblings, 2 replies; 13+ messages in thread From: William Bright @ 2026-04-27 11:24 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire, William Bright Add the SDC4 SDHCI controller node for the SM8550 SoC. SMMU stream ID 0x80 was sourced from the UEFI bootloader IORT tables, as SDCC stream IDs are not documented in the register reference manual. Unlike SDC2, the data path is routed via aggre1_noc, matching MASTER_SDCC_4 in drivers/interconnect/qcom/sm8550.c. The SDHCI capabilities register on this SoC advertises SDR104 and SDR50 but these UHS-I modes are broken on SDHC4. Mask them via sdhci-caps-mask, this keeps the bus in HS mode, which initialises reliably. Tested on the IMDT QCS8550 SBC. This board is not currently supported in-tree. Co-developed-by: Tendai Makumire <tendai.makumire@imd-tec.com> Signed-off-by: Tendai Makumire <tendai.makumire@imd-tec.com> Signed-off-by: William Bright <william.bright@imd-tec.com> --- Changes in v2: - Drop qcom,dll-config and qcom,ddr-config; these properties are not valid for this SDC instance (Konrad Dybcio) - Reduce the OPP table to a single 75 MHz / low_svs entry matching the SDCC4 operating point on this SoC (Konrad Dybcio) - Forbid SDR104/SDR50 via sdhci-caps-mask, matching the previously existing sdhc_2 workaround in the same file. The SDHCI capabilities register on this SoC advertises SDR50/SDR104 modes that are broken on sdhc_4; without masking them the MMC core selects SDR50 and fails DLL tuning with -ETIMEDOUT during SDIO card initialisation. - Rework the commit message to reflect the above understanding and drop the "root cause not yet determined" note - Drop self Tested-by tag (Konrad Dybcio) - Link to v1: https://patch.msgid.link/20260423-sm8550-sdhc4-support-v1-1-93fd81fea5d9@imd-tec.com To: Bjorn Andersson <andersson@kernel.org> To: Konrad Dybcio <konradybcio@kernel.org> To: Rob Herring <robh@kernel.org> To: Krzysztof Kozlowski <krzk+dt@kernel.org> To: Conor Dooley <conor+dt@kernel.org> Cc: linux-arm-msm@vger.kernel.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 912525e9bca6..07161a873b2d 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3280,6 +3280,46 @@ opp-202000000 { }; }; + sdhc_4: mmc@8844000 { + compatible = "qcom,sm8550-sdhci", "qcom,sdhci-msm-v5"; + reg = <0 0x08844000 0 0x1000>; + + interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH 0>, + <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH 0>; + interrupt-names = "hc_irq", "pwr_irq"; + + clocks = <&gcc GCC_SDCC4_AHB_CLK>, + <&gcc GCC_SDCC4_APPS_CLK>, + <&bi_tcxo_div2>; + clock-names = "iface", "core", "xo"; + iommus = <&apps_smmu 0x80 0>; + power-domains = <&rpmhpd RPMHPD_CX>; + operating-points-v2 = <&sdhc4_opp_table>; + + interconnects = <&aggre1_noc MASTER_SDCC_4 QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY + &config_noc SLAVE_SDCC_4 QCOM_ICC_TAG_ACTIVE_ONLY>; + interconnect-names = "sdhc-ddr", "cpu-sdhc"; + bus-width = <4>; + max-sd-hs-hz = <37500000>; + dma-coherent; + + /* Forbid SDR104/SDR50 broken hw! */ + sdhci-caps-mask = <0x3 0>; + + status = "disabled"; + + sdhc4_opp_table: opp-table { + compatible = "operating-points-v2"; + + opp-75000000 { + opp-hz = /bits/ 64 <75000000>; + required-opps = <&rpmhpd_opp_low_svs>; + }; + }; + }; + iris: video-codec@aa00000 { compatible = "qcom,sm8550-iris"; --- base-commit: 4f5b4b748ac75683d61c304ee3ee0db235e8f312 change-id: 20260423-sm8550-sdhc4-support-358bf264c04e Best regards, -- William Bright <william.bright@imd-tec.com> ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-04-27 11:24 [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node William Bright @ 2026-06-04 14:42 ` William Bright 2026-06-04 16:01 ` Vladimir Zapolskiy 1 sibling, 0 replies; 13+ messages in thread From: William Bright @ 2026-06-04 14:42 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire Hi all, Gentle ping on this patch. Thanks, Will ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-04-27 11:24 [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node William Bright 2026-06-04 14:42 ` William Bright @ 2026-06-04 16:01 ` Vladimir Zapolskiy 2026-06-09 16:21 ` William Bright 1 sibling, 1 reply; 13+ messages in thread From: Vladimir Zapolskiy @ 2026-06-04 16:01 UTC (permalink / raw) To: William Bright, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 4/27/26 14:24, William Bright wrote: > Add the SDC4 SDHCI controller node for the SM8550 SoC. > > SMMU stream ID 0x80 was sourced from the UEFI bootloader IORT tables, > as SDCC stream IDs are not documented in the register reference manual. > Unlike SDC2, the data path is routed via aggre1_noc, matching > MASTER_SDCC_4 in drivers/interconnect/qcom/sm8550.c. > > The SDHCI capabilities register on this SoC advertises SDR104 > and SDR50 but these UHS-I modes are broken on SDHC4. How do you know that these modes are broken in hardware and not caused by something else? It was stated before, but it was proven to be invalid as the statement. > Mask them via sdhci-caps-mask, this keeps the bus in HS mode, > which initialises reliably. > > Tested on the IMDT QCS8550 SBC. This board is not currently > supported in-tree. > > Co-developed-by: Tendai Makumire <tendai.makumire@imd-tec.com> > Signed-off-by: Tendai Makumire <tendai.makumire@imd-tec.com> > Signed-off-by: William Bright <william.bright@imd-tec.com> > --- > Changes in v2: > - Drop qcom,dll-config and qcom,ddr-config; these properties are not > valid for this SDC instance (Konrad Dybcio) > - Reduce the OPP table to a single 75 MHz / low_svs entry matching the > SDCC4 operating point on this SoC (Konrad Dybcio) > - Forbid SDR104/SDR50 via sdhci-caps-mask, matching the previously > existing sdhc_2 workaround in the same file. > The SDHCI capabilities register on this SoC advertises SDR50/SDR104 > modes that are broken on sdhc_4; without masking them the MMC > core selects SDR50 and fails DLL tuning with > -ETIMEDOUT during SDIO card initialisation. Which one SDIO card do you test? > - Rework the commit message to reflect the above understanding and > drop the "root cause not yet determined" note > - Drop self Tested-by tag (Konrad Dybcio) > - Link to v1: https://patch.msgid.link/20260423-sm8550-sdhc4-support-v1-1-93fd81fea5d9@imd-tec.com > > To: Bjorn Andersson <andersson@kernel.org> > To: Konrad Dybcio <konradybcio@kernel.org> > To: Rob Herring <robh@kernel.org> > To: Krzysztof Kozlowski <krzk+dt@kernel.org> > To: Conor Dooley <conor+dt@kernel.org> > Cc: linux-arm-msm@vger.kernel.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > --- > arch/arm64/boot/dts/qcom/sm8550.dtsi | 40 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi > index 912525e9bca6..07161a873b2d 100644 > --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi > @@ -3280,6 +3280,46 @@ opp-202000000 { > }; > }; > > + sdhc_4: mmc@8844000 { > + compatible = "qcom,sm8550-sdhci", "qcom,sdhci-msm-v5"; > + reg = <0 0x08844000 0 0x1000>; > + > + interrupts = <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH 0>, > + <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH 0>; > + interrupt-names = "hc_irq", "pwr_irq"; > + > + clocks = <&gcc GCC_SDCC4_AHB_CLK>, > + <&gcc GCC_SDCC4_APPS_CLK>, > + <&bi_tcxo_div2>; > + clock-names = "iface", "core", "xo"; > + iommus = <&apps_smmu 0x80 0>; > + power-domains = <&rpmhpd RPMHPD_CX>; > + operating-points-v2 = <&sdhc4_opp_table>; > + > + interconnects = <&aggre1_noc MASTER_SDCC_4 QCOM_ICC_TAG_ALWAYS > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY > + &config_noc SLAVE_SDCC_4 QCOM_ICC_TAG_ACTIVE_ONLY>; > + interconnect-names = "sdhc-ddr", "cpu-sdhc"; > + bus-width = <4>; > + max-sd-hs-hz = <37500000>; > + dma-coherent; > + > + /* Forbid SDR104/SDR50 broken hw! */ This is copied from somewhere else, while virtually it's unconfirmed, if this SD host controller is broken or not... > + sdhci-caps-mask = <0x3 0>; > + > + status = "disabled"; > + > + sdhc4_opp_table: opp-table { > + compatible = "operating-points-v2"; > + > + opp-75000000 { > + opp-hz = /bits/ 64 <75000000>; > + required-opps = <&rpmhpd_opp_low_svs>; > + }; > + }; > + }; > + > iris: video-codec@aa00000 { > compatible = "qcom,sm8550-iris"; > -- Best wishes, Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-04 16:01 ` Vladimir Zapolskiy @ 2026-06-09 16:21 ` William Bright 2026-06-10 8:21 ` Vladimir Zapolskiy 0 siblings, 1 reply; 13+ messages in thread From: William Bright @ 2026-06-09 16:21 UTC (permalink / raw) To: Vladimir Zapolskiy Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On Thu, Jun 04, 2026 at 07:01:22PM +0300, Vladimir Zapolskiy wrote: > > How do you know that these modes are broken in hardware and not > caused by something else? > > It was stated before, but it was proven to be invalid as the statement. > Thanks Vladimir for your feedback. I copied this statement from when these modes were also masked out on sdhc_2. I see that there was progress since then and the caps mask has been dropped so I agree that I shouldn't have this comment that these modes are broken due to hardware. I have tested this patch after rebasing onto the latest tree with the recent changes that allowed for the caps mask to be dropped for sdhc_2 and I still see dll tuning failing. To progress, I need some guidance from qcom as to what dll-config value should be used as I am uncertain about this. I noticed that ftbl_gcc_sdcc4_apps_clk_src only goes up to 75MHz so perhaps this needs modifying for DLL-tuning to pass and maybe there needs to be schematic/routing guidance that needs to be strictly followed as-well besides the usual 50 ohm impedance rules? > > - Forbid SDR104/SDR50 via sdhci-caps-mask, matching the previously > > existing sdhc_2 workaround in the same file. > > The SDHCI capabilities register on this SoC advertises SDR50/SDR104 > > modes that are broken on sdhc_4; without masking them the MMC > > core selects SDR50 and fails DLL tuning with > > -ETIMEDOUT during SDIO card initialisation. > > Which one SDIO card do you test? > My apologies, I made a mistake in the cover letter, I wasn't testing with an SDIO card, I was testing with an NXP IW416 which is hard-wired to sdhc_4. Best regards, Will ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-09 16:21 ` William Bright @ 2026-06-10 8:21 ` Vladimir Zapolskiy 2026-06-10 9:59 ` William Bright 0 siblings, 1 reply; 13+ messages in thread From: Vladimir Zapolskiy @ 2026-06-10 8:21 UTC (permalink / raw) To: William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/9/26 19:21, William Bright wrote: > On Thu, Jun 04, 2026 at 07:01:22PM +0300, Vladimir Zapolskiy wrote: >> >> How do you know that these modes are broken in hardware and not >> caused by something else? >> >> It was stated before, but it was proven to be invalid as the statement. >> > Thanks Vladimir for your feedback. > > I copied this statement from when these modes were also masked out on > sdhc_2. I see that there was progress since then and the caps mask has > been dropped so I agree that I shouldn't have this comment that these > modes are broken due to hardware. Well, it might be broken due to hardware, but not necessarily due to Qualcomm SoC IP, there is a chance of a PCB design flaw. > > I have tested this patch after rebasing onto the latest tree with the > recent changes that allowed for the caps mask to be dropped for sdhc_2 > and I still see dll tuning failing. To progress, I need some guidance > from qcom as to what dll-config value should be used as I am uncertain > about this. I noticed that ftbl_gcc_sdcc4_apps_clk_src only goes up to > 75MHz so perhaps this needs modifying for DLL-tuning to pass and maybe > there needs to be schematic/routing guidance that needs to be strictly > followed as-well besides the usual 50 ohm impedance rules? >>> - Forbid SDR104/SDR50 via sdhci-caps-mask, matching the previously >>> existing sdhc_2 workaround in the same file. >>> The SDHCI capabilities register on this SoC advertises SDR50/SDR104 >>> modes that are broken on sdhc_4; without masking them the MMC >>> core selects SDR50 and fails DLL tuning with >>> -ETIMEDOUT during SDIO card initialisation. >> >> Which one SDIO card do you test? >> > My apologies, I made a mistake in the cover letter, I wasn't testing with > an SDIO card, I was testing with an NXP IW416 which is hard-wired to > sdhc_4. FWIW due to https://www.nxp.com/docs/en/data-sheet/IW416.pdf "10.7.1 VIO_SD DC characteristics" SDR104 speed mode is not supported by the module, thus the selection of the SDR50 speed mode on the host side sounds to be correct in your case. In SDR50 speed mode gcc_sdcc4_apps_clk clock frequency should be exactly 100MHz, and since it differs, it has an impact during the tuning phase. Definitely clk/qcom/gcc-sm8550.c says that the maximum supported frequency is 75MHz, the same is found in the downstream v5.15 kernel: static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { F(400000, P_BI_TCXO, 12, 1, 4), F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), { } }; Can you dump CAPS1 register value of SM8550 SDHC4? What does it say about SDR50 mode support and need for SDR50 mode tuning? -- Best wishes, Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-10 8:21 ` Vladimir Zapolskiy @ 2026-06-10 9:59 ` William Bright 2026-06-11 7:48 ` Vladimir Zapolskiy 0 siblings, 1 reply; 13+ messages in thread From: William Bright @ 2026-06-10 9:59 UTC (permalink / raw) To: Vladimir Zapolskiy Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On Wed, Jun 10, 2026 at 11:21:53AM +0300, Vladimir Zapolskiy wrote: > FWIW due to https://www.nxp.com/docs/en/data-sheet/IW416.pdf "10.7.1 VIO_SD > DC characteristics" SDR104 speed mode is not supported by the module, thus > the selection of the SDR50 speed mode on the host side sounds to be correct > in your case. > > In SDR50 speed mode gcc_sdcc4_apps_clk clock frequency should be exactly > 100MHz, and since it differs, it has an impact during the tuning phase. > > Definitely clk/qcom/gcc-sm8550.c says that the maximum supported frequency > is 75MHz, the same is found in the downstream v5.15 kernel: > > static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { > F(400000, P_BI_TCXO, 12, 1, 4), > F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), > F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), > F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), > { } > }; > > Can you dump CAPS1 register value of SM8550 SDHC4? What does it say about > SDR50 mode support and need for SDR50 mode tuning? > > -- > Best wishes, > Vladimir CAPS0 and CAPS1 are below: sdhci_msm 8844000.mmc: CAPS0: 0x3029c8b2 CAPS1: 0x0000a08b For CAPS1: Bit 0 (SDR50 support) = 1 Bit 13 (Use Tuning for SDR50) = 1 It looks to report that SDR50 is supported with tuning required. Best regards, Will ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-10 9:59 ` William Bright @ 2026-06-11 7:48 ` Vladimir Zapolskiy 2026-06-12 8:47 ` William Bright 0 siblings, 1 reply; 13+ messages in thread From: Vladimir Zapolskiy @ 2026-06-11 7:48 UTC (permalink / raw) To: William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/10/26 12:59, William Bright wrote: > On Wed, Jun 10, 2026 at 11:21:53AM +0300, Vladimir Zapolskiy wrote: >> FWIW due to https://www.nxp.com/docs/en/data-sheet/IW416.pdf "10.7.1 VIO_SD >> DC characteristics" SDR104 speed mode is not supported by the module, thus >> the selection of the SDR50 speed mode on the host side sounds to be correct >> in your case. >> >> In SDR50 speed mode gcc_sdcc4_apps_clk clock frequency should be exactly >> 100MHz, and since it differs, it has an impact during the tuning phase. >> >> Definitely clk/qcom/gcc-sm8550.c says that the maximum supported frequency >> is 75MHz, the same is found in the downstream v5.15 kernel: >> >> static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { >> F(400000, P_BI_TCXO, 12, 1, 4), >> F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), >> F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), >> F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), >> { } >> }; >> >> Can you dump CAPS1 register value of SM8550 SDHC4? What does it say about >> SDR50 mode support and need for SDR50 mode tuning? >> >> -- >> Best wishes, >> Vladimir > CAPS0 and CAPS1 are below: > sdhci_msm 8844000.mmc: CAPS0: 0x3029c8b2 CAPS1: 0x0000a08b > For CAPS1: > Bit 0 (SDR50 support) = 1 > Bit 13 (Use Tuning for SDR50) = 1 > It looks to report that SDR50 is supported with tuning required. > Looks like the SDHC driver behaves expectedly then. For me it's hard to say what may be the rootcause, I believe the lower bus frequency should be fine, so it sounds like a hardware issue, but could it be PCB/board specific one? If you find a chance to copy the SDHC driver (and its small dependencies) from Android and test it on your board, and if it also fails, then it might be well concluded that something is wrong with hardware, still it won't be quite convincing that the SoC SDHC is to blame here. Hope it helps. -- Best wishes, Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-11 7:48 ` Vladimir Zapolskiy @ 2026-06-12 8:47 ` William Bright 2026-06-12 9:11 ` Vladimir Zapolskiy 0 siblings, 1 reply; 13+ messages in thread From: William Bright @ 2026-06-12 8:47 UTC (permalink / raw) To: Vladimir Zapolskiy Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: > Looks like the SDHC driver behaves expectedly then. For me it's hard to say > what may be the rootcause, I believe the lower bus frequency should be fine, > so it sounds like a hardware issue, but could it be PCB/board specific one? > > If you find a chance to copy the SDHC driver (and its small dependencies) > from Android and test it on your board, and if it also fails, then it might > be well concluded that something is wrong with hardware, still it won't be > quite convincing that the SoC SDHC is to blame here. > > Hope it helps. > > -- > Best wishes, > Vladimir My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue with dll-tuning failing in SDR50 when working on the downstream 5.15 msm kernel [1]. It does sound like a potential SI issue so I will try the following: - Sweeping the drive-strength values for the sdhc_4 lines to see if I can find a set of values that work - Scoping the lines to check SI when performing dll-tuning, our board is very dense so this is challenging. I am guessing this patch is only acceptable to be upstreamed once we get to the bottom of why dll-tuning is failing? [1] https://github.com/imd-tec/meta-imdt-qcom/tree/kirkstone/patches/msm-kernel/files Many thanks, Will ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-12 8:47 ` William Bright @ 2026-06-12 9:11 ` Vladimir Zapolskiy 2026-06-12 14:56 ` Tendai Makumire 2026-06-30 11:09 ` Konrad Dybcio 0 siblings, 2 replies; 13+ messages in thread From: Vladimir Zapolskiy @ 2026-06-12 9:11 UTC (permalink / raw) To: William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/12/26 11:47, William Bright wrote: > On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: >> Looks like the SDHC driver behaves expectedly then. For me it's hard to say >> what may be the rootcause, I believe the lower bus frequency should be fine, >> so it sounds like a hardware issue, but could it be PCB/board specific one? >> >> If you find a chance to copy the SDHC driver (and its small dependencies) >> from Android and test it on your board, and if it also fails, then it might >> be well concluded that something is wrong with hardware, still it won't be >> quite convincing that the SoC SDHC is to blame here. >> >> Hope it helps. >> > My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue > with dll-tuning failing in SDR50 when working on the downstream 5.15 msm > kernel [1]. If Qualcomm supports their downstream Android kernel running on your board, it should be worth to contact them. > It does sound like a potential SI issue so I will try the following: > - Sweeping the drive-strength values for the sdhc_4 lines to see if I > can find a set of values that work > - Scoping the lines to check SI when performing dll-tuning, our board > is very dense so this is challenging. > I am guessing this patch is only acceptable to be upstreamed once we get > to the bottom of why dll-tuning is failing? Apparently if Qualcomm confirms that SM8550 SDHC4 actually has this discovered and unveiled defect, then this change will be accepted for all SM8550 platform like you propose it to be done. According to my experince SM8550 SDHC2 operates properly in UHS-I SDR50/SDR104 speed modes, this can be verified on the reference boards like HDK or QRD, and for me it sounds oddly that there is such a problem with SDHC4. If the proposed change as is does not enter upstream for SM8550 SoC, you may keep it as a necessary change in your particular board .dts file. > [1] https://github.com/imd-tec/meta-imdt-qcom/tree/kirkstone/patches/msm-kernel/files > -- Best wishes, Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-12 9:11 ` Vladimir Zapolskiy @ 2026-06-12 14:56 ` Tendai Makumire 2026-06-30 11:09 ` Konrad Dybcio 1 sibling, 0 replies; 13+ messages in thread From: Tendai Makumire @ 2026-06-12 14:56 UTC (permalink / raw) To: Vladimir Zapolskiy Cc: William Bright, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza On Fri, Jun 12, 2026 at 10:11 AM, Vladimir Zapolskiy wrote: > If Qualcomm supports their downstream Android kernel running on your > board, it should be worth to contact them. Hi Vladimir, I had previously opened a case with Qualcomm when I started trying to get SDHC4 working on our board and we didn't get very far with them. I did almost all the work here without their support. What's interesting to me is that we managed to get SDHC2 working at UHS-I SDR104 speeds quite early on. And the traces for SDHC4 on our board are actually shorter than what we have for SDHC2. The only difference between the two controllers on our board is that we don't have a level shifter on SDHC4 and the pins are connected directly to the IW416 without any pullups or pulldowns. The signals looked clean last time I measured them. Tendai On Fri, Jun 12, 2026 at 10:11 AM Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org> wrote: > > On 6/12/26 11:47, William Bright wrote: > > On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: > >> Looks like the SDHC driver behaves expectedly then. For me it's hard to say > >> what may be the rootcause, I believe the lower bus frequency should be fine, > >> so it sounds like a hardware issue, but could it be PCB/board specific one? > >> > >> If you find a chance to copy the SDHC driver (and its small dependencies) > >> from Android and test it on your board, and if it also fails, then it might > >> be well concluded that something is wrong with hardware, still it won't be > >> quite convincing that the SoC SDHC is to blame here. > >> > >> Hope it helps. > >> > > My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue > > with dll-tuning failing in SDR50 when working on the downstream 5.15 msm > > kernel [1]. > > If Qualcomm supports their downstream Android kernel running on your > board, it should be worth to contact them. > > > It does sound like a potential SI issue so I will try the following: > > - Sweeping the drive-strength values for the sdhc_4 lines to see if I > > can find a set of values that work > > - Scoping the lines to check SI when performing dll-tuning, our board > > is very dense so this is challenging. > > I am guessing this patch is only acceptable to be upstreamed once we get > > to the bottom of why dll-tuning is failing? > > Apparently if Qualcomm confirms that SM8550 SDHC4 actually has this > discovered and unveiled defect, then this change will be accepted for > all SM8550 platform like you propose it to be done. > > According to my experince SM8550 SDHC2 operates properly in UHS-I > SDR50/SDR104 speed modes, this can be verified on the reference boards > like HDK or QRD, and for me it sounds oddly that there is such a problem > with SDHC4. > > If the proposed change as is does not enter upstream for SM8550 SoC, you > may keep it as a necessary change in your particular board .dts file. > > > [1] https://github.com/imd-tec/meta-imdt-qcom/tree/kirkstone/patches/msm-kernel/files > > > > -- > Best wishes, > Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-12 9:11 ` Vladimir Zapolskiy 2026-06-12 14:56 ` Tendai Makumire @ 2026-06-30 11:09 ` Konrad Dybcio 2026-06-30 12:41 ` Vladimir Zapolskiy 1 sibling, 1 reply; 13+ messages in thread From: Konrad Dybcio @ 2026-06-30 11:09 UTC (permalink / raw) To: Vladimir Zapolskiy, William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/12/26 11:11 AM, Vladimir Zapolskiy wrote: > On 6/12/26 11:47, William Bright wrote: >> On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: >>> Looks like the SDHC driver behaves expectedly then. For me it's hard to say >>> what may be the rootcause, I believe the lower bus frequency should be fine, >>> so it sounds like a hardware issue, but could it be PCB/board specific one? >>> >>> If you find a chance to copy the SDHC driver (and its small dependencies) >>> from Android and test it on your board, and if it also fails, then it might >>> be well concluded that something is wrong with hardware, still it won't be >>> quite convincing that the SoC SDHC is to blame here. >>> >>> Hope it helps. >>> >> My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue >> with dll-tuning failing in SDR50 when working on the downstream 5.15 msm >> kernel [1]. I have a "feature table" and it says SM8550->SDC4->DLL [Y/N] -> No no wonder it fails the tuning if it's not present (or that's at least my interpretation of this doc..) There's some notes about the frequency being limited to 75 MHz in SDR50 and to 37.5 in DDR50. The supported modes are DS, HS, SDR12, SDR25, SDR50 and DDR50 (with the caveat above). Konrad ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-30 11:09 ` Konrad Dybcio @ 2026-06-30 12:41 ` Vladimir Zapolskiy 2026-07-01 9:16 ` Konrad Dybcio 0 siblings, 1 reply; 13+ messages in thread From: Vladimir Zapolskiy @ 2026-06-30 12:41 UTC (permalink / raw) To: Konrad Dybcio, William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/30/26 14:09, Konrad Dybcio wrote: > On 6/12/26 11:11 AM, Vladimir Zapolskiy wrote: >> On 6/12/26 11:47, William Bright wrote: >>> On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: >>>> Looks like the SDHC driver behaves expectedly then. For me it's hard to say >>>> what may be the rootcause, I believe the lower bus frequency should be fine, >>>> so it sounds like a hardware issue, but could it be PCB/board specific one? >>>> >>>> If you find a chance to copy the SDHC driver (and its small dependencies) >>>> from Android and test it on your board, and if it also fails, then it might >>>> be well concluded that something is wrong with hardware, still it won't be >>>> quite convincing that the SoC SDHC is to blame here. >>>> >>>> Hope it helps. >>>> >>> My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue >>> with dll-tuning failing in SDR50 when working on the downstream 5.15 msm >>> kernel [1]. > > I have a "feature table" and it says SM8550->SDC4->DLL [Y/N] -> No > > no wonder it fails the tuning if it's not present (or that's at least > my interpretation of this doc..) So, is it a hardware problem of the SDHC4 controller, which reports "SDR50 mode requires tuning" bit in CAPS1 (see SDHCI_USE_SDR50_TUNING from sdhci.h)? https://lore.kernel.org/linux-arm-msm/aik1ZYUT-cnpfdQn@will-Legion-Slim-5-16APH8/ > There's some notes about the frequency being limited to 75 MHz in > SDR50 and to 37.5 in DDR50. > > The supported modes are DS, HS, SDR12, SDR25, SDR50 and DDR50 (with > the caveat above). > -- Best wishes, Vladimir ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node 2026-06-30 12:41 ` Vladimir Zapolskiy @ 2026-07-01 9:16 ` Konrad Dybcio 0 siblings, 0 replies; 13+ messages in thread From: Konrad Dybcio @ 2026-07-01 9:16 UTC (permalink / raw) To: Vladimir Zapolskiy, William Bright Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Ram Boukobza, Tendai Makumire On 6/30/26 2:41 PM, Vladimir Zapolskiy wrote: > On 6/30/26 14:09, Konrad Dybcio wrote: >> On 6/12/26 11:11 AM, Vladimir Zapolskiy wrote: >>> On 6/12/26 11:47, William Bright wrote: >>>> On Thu, Jun 11, 2026 at 10:48:34AM +0300, Vladimir Zapolskiy wrote: >>>>> Looks like the SDHC driver behaves expectedly then. For me it's hard to say >>>>> what may be the rootcause, I believe the lower bus frequency should be fine, >>>>> so it sounds like a hardware issue, but could it be PCB/board specific one? >>>>> >>>>> If you find a chance to copy the SDHC driver (and its small dependencies) >>>>> from Android and test it on your board, and if it also fails, then it might >>>>> be well concluded that something is wrong with hardware, still it won't be >>>>> quite convincing that the SoC SDHC is to blame here. >>>>> >>>>> Hope it helps. >>>>> >>>> My colleague Tendai (<tendai.makumire@imd-tec.com>) had the same issue >>>> with dll-tuning failing in SDR50 when working on the downstream 5.15 msm >>>> kernel [1]. >> >> I have a "feature table" and it says SM8550->SDC4->DLL [Y/N] -> No >> >> no wonder it fails the tuning if it's not present (or that's at least >> my interpretation of this doc..) > > So, is it a hardware problem of the SDHC4 controller, which reports "SDR50 mode > requires tuning" bit in CAPS1 (see SDHCI_USE_SDR50_TUNING from sdhci.h)? > > https://lore.kernel.org/linux-arm-msm/aik1ZYUT-cnpfdQn@will-Legion-Slim-5-16APH8/ > >> There's some notes about the frequency being limited to 75 MHz in >> SDR50 and to 37.5 in DDR50. >> >> The supported modes are DS, HS, SDR12, SDR25, SDR50 and DDR50 (with >> the caveat above). I found another doc now and it says that on 8550 specifically the bit you mentioned above is recommended to be "overwritten to 0". I don't know if it's actually r/w, but the bottom line is that tuning should not take place, per my understanding. Konrad ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-07-01 9:16 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-27 11:24 [PATCH v2] arm64: dts: qcom: sm8550: add SDHC4 controller node William Bright 2026-06-04 14:42 ` William Bright 2026-06-04 16:01 ` Vladimir Zapolskiy 2026-06-09 16:21 ` William Bright 2026-06-10 8:21 ` Vladimir Zapolskiy 2026-06-10 9:59 ` William Bright 2026-06-11 7:48 ` Vladimir Zapolskiy 2026-06-12 8:47 ` William Bright 2026-06-12 9:11 ` Vladimir Zapolskiy 2026-06-12 14:56 ` Tendai Makumire 2026-06-30 11:09 ` Konrad Dybcio 2026-06-30 12:41 ` Vladimir Zapolskiy 2026-07-01 9:16 ` Konrad Dybcio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox