summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Semin <fancer.lancer@gmail.com>2026-08-03 14:19:51 +0300
committerSerge Semin <fancer.lancer@gmail.com>2026-08-13 15:02:07 +0300
commit287f7ed64f1812a0623a5cad6572be01fdb441ca (patch)
tree79319791e72c93b368a26fb8e441446b1466919f
parent494ea6402a6509dced83d4a22d44acdc1e3d26f4 (diff)
downloadlinux-287f7ed64f1812a0623a5cad6572be01fdb441ca.tar.gz
linux-287f7ed64f1812a0623a5cad6572be01fdb441ca.zip
clk: baikal-t1: Add direct AXI DDR reset supportclk/bt1
Currently only the self-cleared AXI DDR reset is supported by the driver and exposed in the DT-bindings. In some circumstances of the DDR-controller initialization procedure though it gets to be not enough to make the memory controller working. Let's add the flag directly handling the AXI DDR signal, which is a fixup provided by the HW designers just in case the self-cleared version won't work correctly. The resultant signal is (!RST_T & !RST_D). Note it's just a decorative change since the DDR controller is initialized on the bootloader stage anyway. It's also ok to fix the reset IDs like that since there is no user of the bindings in upstream anyway. Any new user shall compile in the correct IDs in the DTBs in time. Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
-rw-r--r--drivers/clk/bt1/ccu-rst.c5
-rw-r--r--include/dt-bindings/reset/bt1-ccu.h21
2 files changed, 14 insertions, 12 deletions
diff --git a/drivers/clk/bt1/ccu-rst.c b/drivers/clk/bt1/ccu-rst.c
index 969e5de381a8..269994a3d5e1 100644
--- a/drivers/clk/bt1/ccu-rst.c
+++ b/drivers/clk/bt1/ccu-rst.c
@@ -64,11 +64,12 @@ struct ccu_rst_info {
/*
* Each AXI-bus clock divider is equipped with the corresponding clock-consumer
- * domain reset (it's self-deasserted reset control).
+ * domain reset (it's mostly self-deasserted reset control).
*/
static const struct ccu_rst_info axi_rst_info[] = {
[CCU_AXI_MAIN_RST] = CCU_RST_TRIG(CCU_AXI_MAIN_BASE, 1),
- [CCU_AXI_DDR_RST] = CCU_RST_TRIG(CCU_AXI_DDR_BASE, 1),
+ [CCU_AXI_DDR_T_RST] = CCU_RST_TRIG(CCU_AXI_DDR_BASE, 1),
+ [CCU_AXI_DDR_D_RST] = CCU_RST_DIR(CCU_AXI_DDR_BASE, 8),
[CCU_AXI_SATA_RST] = CCU_RST_TRIG(CCU_AXI_SATA_BASE, 1),
[CCU_AXI_GMAC0_RST] = CCU_RST_TRIG(CCU_AXI_GMAC0_BASE, 1),
[CCU_AXI_GMAC1_RST] = CCU_RST_TRIG(CCU_AXI_GMAC1_BASE, 1),
diff --git a/include/dt-bindings/reset/bt1-ccu.h b/include/dt-bindings/reset/bt1-ccu.h
index c691efaa678f..1259bd08bd0e 100644
--- a/include/dt-bindings/reset/bt1-ccu.h
+++ b/include/dt-bindings/reset/bt1-ccu.h
@@ -8,16 +8,17 @@
#define __DT_BINDINGS_RESET_BT1_CCU_H
#define CCU_AXI_MAIN_RST 0
-#define CCU_AXI_DDR_RST 1
-#define CCU_AXI_SATA_RST 2
-#define CCU_AXI_GMAC0_RST 3
-#define CCU_AXI_GMAC1_RST 4
-#define CCU_AXI_XGMAC_RST 5
-#define CCU_AXI_PCIE_M_RST 6
-#define CCU_AXI_PCIE_S_RST 7
-#define CCU_AXI_USB_RST 8
-#define CCU_AXI_HWA_RST 9
-#define CCU_AXI_SRAM_RST 10
+#define CCU_AXI_DDR_T_RST 1
+#define CCU_AXI_DDR_D_RST 2
+#define CCU_AXI_SATA_RST 3
+#define CCU_AXI_GMAC0_RST 4
+#define CCU_AXI_GMAC1_RST 5
+#define CCU_AXI_XGMAC_RST 6
+#define CCU_AXI_PCIE_M_RST 7
+#define CCU_AXI_PCIE_S_RST 8
+#define CCU_AXI_USB_RST 9
+#define CCU_AXI_HWA_RST 10
+#define CCU_AXI_SRAM_RST 11
#define CCU_SYS_SATA_REF_RST 0
#define CCU_SYS_APB_RST 1