* [PATCH] arm64: dts: rockchip: Enable SDR104 on the ODROID-M1 SD card
@ 2026-11-10 2:50 Igor Velkov via B4 Relay
2026-11-13 20:09 ` Heiko Stuebner
0 siblings, 1 reply; 2+ messages in thread
From: Igor Velkov via B4 Relay @ 2026-11-10 2:50 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Igor Velkov
From: Igor Velkov <iav@iav.lv>
The SD card already switches to 1.8 V, but only SDR50 is allowed, and
clk_sdmmc0 on RK3568 is a mux without a divider: dw_mmc-rockchip asks
it for twice the card clock, 200 MHz for SDR50, the mux rounds down to
the 100 MHz parent and the card runs at 50 MHz.
Allow SDR104 instead; the MMC core still falls back to SDR50 for cards
without SDR104. With the 150 MHz max-frequency from rk356x-base.dtsi
the clock comes from the 300 MHz parent and the card runs at 150 MHz.
Hardkernel's vendor kernel already uses sd-uhs-sdr104 on this board.
With a SanDisk 128 GB card, direct read goes from 22 MB/s to
58-64 MB/s and direct write from 20 MB/s to 47-50 MB/s.
Signed-off-by: Igor Velkov <iav@iav.lv>
---
Tested with an Armbian 7.3.3 kernel (rockchip64), the property added to
the DTB with fdtput: reboot, sysrq-b, watchdog reset, poweroff, s2idle,
deep, hibernate, hybrid-sleep and suspend-then-hibernate; the card
re-tuned and came back in SDR104 at 150 MHz in all 29 runs.
---
arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
index ec43dee18094..6f77e73abc8e 100644
--- a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
@@ -610,7 +610,7 @@ &sdmmc0 {
disable-wp;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
- sd-uhs-sdr50;
+ sd-uhs-sdr104;
vmmc-supply = <&vcc3v3_sd>;
vqmmc-supply = <&vccio_sd>;
status = "okay";
---
base-commit: c3baae5f1a15645cddadcb2b9abddef5df291f59
change-id: 20261110-odroid-m1-sdr104-f6e03a0c5ac9
Best regards,
--
Igor Velkov <iav@iav.lv>
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] arm64: dts: rockchip: Enable SDR104 on the ODROID-M1 SD card
2026-11-10 2:50 [PATCH] arm64: dts: rockchip: Enable SDR104 on the ODROID-M1 SD card Igor Velkov via B4 Relay
@ 2026-11-13 20:09 ` Heiko Stuebner
0 siblings, 0 replies; 2+ messages in thread
From: Heiko Stuebner @ 2026-11-13 20:09 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, iav
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Igor Velkov
Am Dienstag, 10. November 2026, 03:50:01 Mitteleuropäische Normalzeit schrieb Igor Velkov via B4 Relay:
> From: Igor Velkov <iav@iav.lv>
>
> The SD card already switches to 1.8 V, but only SDR50 is allowed, and
> clk_sdmmc0 on RK3568 is a mux without a divider: dw_mmc-rockchip asks
> it for twice the card clock, 200 MHz for SDR50, the mux rounds down to
> the 100 MHz parent and the card runs at 50 MHz.
>
> Allow SDR104 instead; the MMC core still falls back to SDR50 for cards
> without SDR104. With the 150 MHz max-frequency from rk356x-base.dtsi
> the clock comes from the 300 MHz parent and the card runs at 150 MHz.
> Hardkernel's vendor kernel already uses sd-uhs-sdr104 on this board.
> With a SanDisk 128 GB card, direct read goes from 22 MB/s to
> 58-64 MB/s and direct write from 20 MB/s to 47-50 MB/s.
>
> Signed-off-by: Igor Velkov <iav@iav.lv>
> ---
> Tested with an Armbian 7.3.3 kernel (rockchip64), the property added to
> the DTB with fdtput: reboot, sysrq-b, watchdog reset, poweroff, s2idle,
> deep, hibernate, hybrid-sleep and suspend-then-hibernate; the card
> re-tuned and came back in SDR104 at 150 MHz in all 29 runs.
> ---
> arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
> index ec43dee18094..6f77e73abc8e 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
> @@ -610,7 +610,7 @@ &sdmmc0 {
> disable-wp;
> pinctrl-names = "default";
> pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
> - sd-uhs-sdr50;
> + sd-uhs-sdr104;
You then want both of them in the file.
The devicetree does not care about what mmc drivers do internally, aka
that fallback and the properties describe
SD UHS SDR50 speed is supported
and
SD UHS SDR104 speed is supported
So both are needed.
Thanks
Heiko
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-11-13 20:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-10 2:50 [PATCH] arm64: dts: rockchip: Enable SDR104 on the ODROID-M1 SD card Igor Velkov via B4 Relay
2026-11-13 20:09 ` Heiko Stuebner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox