* [PATCH v2 0/2] arm64: dts: amlogic: t7: fix UART clock and SD card recovery
@ 2026-08-23 11:53 Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 1/2] arm64: dts: amlogic: t7: use the real UART pclk Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 2/2] arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power cycled Lucas Tanure
0 siblings, 2 replies; 3+ messages in thread
From: Lucas Tanure @ 2026-08-23 11:53 UTC (permalink / raw)
To: Neil Armstrong, Kevin Hilman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-kernel, Xianwei Zhao, linux-amlogic, devicetree, linux-kernel
Two fixes found while booting mainline on a Khadas VIM4.
The first one wires uart_a to the real UART bus clock. It was pointed at
the 24MHz crystal as a placeholder, because the T7 clock controller
driver did not exist when these boards were added. That leaves the real
clock without a user, so the kernel turns it off when it disables unused
clocks at the end of boot, and the board hangs with the console gone.
The second one drops regulator-always-on from the SD card supply. A card
that refuses the 1.8V UHS switch can only be recovered by removing its
power, which that property prevents, so the card never initialises and
the MMC core retries forever.
Both were tested on a Khadas VIM4 booting v7.2 from the SD card.
Changes in v2:
- Update UART clocks directly in the board DTS files instead of moving them
to amlogic-t7.dtsi, as &xtal is defined at the board level.
Lucas Tanure (2):
arm64: dts: amlogic: t7: use the real UART pclk
arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power
cycled
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts | 2 +-
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
--
2.55.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 1/2] arm64: dts: amlogic: t7: use the real UART pclk
2026-08-23 11:53 [PATCH v2 0/2] arm64: dts: amlogic: t7: fix UART clock and SD card recovery Lucas Tanure
@ 2026-08-23 11:53 ` Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 2/2] arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power cycled Lucas Tanure
1 sibling, 0 replies; 3+ messages in thread
From: Lucas Tanure @ 2026-08-23 11:53 UTC (permalink / raw)
To: Neil Armstrong, Kevin Hilman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-kernel, Xianwei Zhao, linux-amlogic, devicetree, linux-kernel
uart_a listed the 24MHz crystal for all three of its clocks because the
T7 clock controller driver did not exist when these boards were added.
That leaves the real UART bus clock without a user, so the kernel
turns it off when it disables unused clocks at the end of boot, and
the board hangs.
Update the board DTS files to point uart_a's pclk to CLKID_SYS_UART_A
instead of the dummy crystal clock.
Fixes: 4fef056588f5 ("arm64: dts: amlogic-t7-a311d2-khadas-vim4: add initial device-tree")
Fixes: 6f048cc7a635 ("arm64: dts: add board AN400")
Signed-off-by: Lucas Tanure <tanure@linux.com>
Assisted-by: Claude:claude-fable-5
---
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts | 2 +-
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts
index cab2ee9ea0d3..ca7536f772ff 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts
@@ -33,7 +33,7 @@ xtal: xtal-clk {
};
&uart_a {
- clocks = <&xtal>, <&xtal>, <&xtal>;
+ clocks = <&xtal>, <&clkc_periphs CLKID_SYS_UART_A>, <&xtal>;
clock-names = "xtal", "pclk", "baud";
status = "okay";
};
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
index c41525a34b72..75d81ad6830d 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
@@ -266,6 +266,6 @@ &sd_emmc_c {
&uart_a {
status = "okay";
- clocks = <&xtal>, <&xtal>, <&xtal>;
+ clocks = <&xtal>, <&clkc_periphs CLKID_SYS_UART_A>, <&xtal>;
clock-names = "xtal", "pclk", "baud";
};
--
2.55.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 2/2] arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power cycled
2026-08-23 11:53 [PATCH v2 0/2] arm64: dts: amlogic: t7: fix UART clock and SD card recovery Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 1/2] arm64: dts: amlogic: t7: use the real UART pclk Lucas Tanure
@ 2026-08-23 11:53 ` Lucas Tanure
1 sibling, 0 replies; 3+ messages in thread
From: Lucas Tanure @ 2026-08-23 11:53 UTC (permalink / raw)
To: Neil Armstrong, Kevin Hilman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-kernel, Xianwei Zhao, linux-amlogic, devicetree, linux-kernel
SD cards start at 3.3V and switch to 1.8V to reach UHS-I speeds. Some
cards refuse that switch, and the SD specification says the only way
to recover is to power the card off and start again.
SD_3V3 is marked regulator-always-on, so the supply never goes off,
the card stays stuck half way through the switch, and the MMC core
retries forever:
mmc1: error -95 whilst initialising SD card
Drop regulator-always-on. regulator-boot-on still turns the supply on
at boot, and a card that refuses the switch now falls back to high
speed instead of failing to initialise.
Fixes: 8c45bf9ae4ef ("arm64: dts: amlogic: t7: khadas-vim4: Add power regulators")
Signed-off-by: Lucas Tanure <tanure@linux.com>
Assisted-by: Claude:claude-fable-5
---
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
index 75d81ad6830d..c94afaaf8826 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts
@@ -71,7 +71,6 @@ sd_3v3: regulator-sdcard-3v3 {
vin-supply = <&vddao_3v3>;
gpio = <&gpio GPIOD_11 GPIO_ACTIVE_LOW>;
regulator-boot-on;
- regulator-always-on;
};
sdio_pwrseq: sdio-pwrseq {
--
2.55.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-23 11:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-23 11:53 [PATCH v2 0/2] arm64: dts: amlogic: t7: fix UART clock and SD card recovery Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 1/2] arm64: dts: amlogic: t7: use the real UART pclk Lucas Tanure
2026-08-23 11:53 ` [PATCH v2 2/2] arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power cycled Lucas Tanure
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®