[PATCH 3/4] arm64: dts: amlogic: t7: add the pipeline clock to the MMC controllers
From: Lucas Tanure
Date: Thu Sep 03 2026 - 19:03:36 EST
The SD/eMMC controllers reach the DRAM through a pipeline stage that
the hardware design inserts in the bus path to the NIC_MATRIX fabric,
clocked by CLKID_SYS_AMPIPE_NAND. When that clock is disabled, a
controller that starts a DMA transfer can never complete it.
Reference the clock from the three MMC controller nodes so the driver
keeps it running, instead of relying on the clock being marked critical
in the clock controller.
Assisted-by: Claude Fable 5 <noreply@xxxxxxxxxxxxx>
Signed-off-by: Lucas Tanure <tanure@xxxxxxxxx>
---
arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
index 719e111bc3dd..8f3f1c0579a0 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
@@ -762,8 +762,9 @@ sd_emmc_a: mmc@88000 {
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc_periphs CLKID_SYS_SD_EMMC_A>,
<&clkc_periphs CLKID_SD_EMMC_A>,
- <&scmi_clk CLKID_FCLK_DIV2>;
- clock-names = "core", "clkin0", "clkin1";
+ <&scmi_clk CLKID_FCLK_DIV2>,
+ <&clkc_periphs CLKID_SYS_AMPIPE_NAND>;
+ clock-names = "core", "clkin0", "clkin1", "pipeline";
resets = <&reset RESET_SD_EMMC_A>;
assigned-clocks = <&clkc_periphs CLKID_SD_EMMC_A_SEL>;
assigned-clock-parents = <&xtal>;
@@ -776,8 +777,9 @@ sd_emmc_b: mmc@8a000 {
interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_periphs CLKID_SYS_SD_EMMC_B>,
<&clkc_periphs CLKID_SD_EMMC_B>,
- <&scmi_clk CLKID_FCLK_DIV2>;
- clock-names = "core", "clkin0", "clkin1";
+ <&scmi_clk CLKID_FCLK_DIV2>,
+ <&clkc_periphs CLKID_SYS_AMPIPE_NAND>;
+ clock-names = "core", "clkin0", "clkin1", "pipeline";
resets = <&reset RESET_SD_EMMC_B>;
assigned-clocks = <&clkc_periphs CLKID_SD_EMMC_B_SEL>;
assigned-clock-parents = <&xtal>;
@@ -790,8 +792,9 @@ sd_emmc_c: mmc@8c000 {
interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_periphs CLKID_SYS_SD_EMMC_C>,
<&clkc_periphs CLKID_SD_EMMC_C>,
- <&scmi_clk CLKID_FCLK_DIV2>;
- clock-names = "core", "clkin0", "clkin1";
+ <&scmi_clk CLKID_FCLK_DIV2>,
+ <&clkc_periphs CLKID_SYS_AMPIPE_NAND>;
+ clock-names = "core", "clkin0", "clkin1", "pipeline";
resets = <&reset RESET_SD_EMMC_C>;
assigned-clocks = <&clkc_periphs CLKID_SD_EMMC_C_SEL>;
assigned-clock-parents = <&xtal>;
--
2.55.0