[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250922-dr1v90-cru-v1-5-e393d758de4e@pigmoral.tech>
Date: Mon, 22 Sep 2025 22:51:51 +0800
From: Junhui Liu <junhui.liu@...moral.tech>
To: Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Junhui Liu <junhui.liu@...moral.tech>,
Philipp Zabel <p.zabel@...gutronix.de>,
Paul Walmsley <paul.walmsley@...ive.com>,
Palmer Dabbelt <palmer@...belt.com>, Albert Ou <aou@...s.berkeley.edu>,
Alexandre Ghiti <alex@...ti.fr>
Cc: linux-clk@...r.kernel.org, linux-kernel@...r.kernel.org,
devicetree@...r.kernel.org, linux-riscv@...ts.infradead.org,
"fushan.zeng" <fushan.zeng@...ogic.com>
Subject: [PATCH 5/5] riscv: dts: anlogic: add clocks and CRU for DR1V90
Add clocks and introduce the CRU (Clock and Reset) unit node
for Anlogic DR1V90 SoC, providing both clock and reset support.
The DR1V90 SoC uses three external clocks:
- A 33 MHz crystal oscillator as the main system clock.
- Two optional external clocks (via IO) for the CAN and WDT modules.
Signed-off-by: Junhui Liu <junhui.liu@...moral.tech>
---
arch/riscv/boot/dts/anlogic/dr1v90.dtsi | 41 +++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
index f9f8754ceb5247d3ca25e6a65b3f915916ba6173..6458093dcf27afd640265aa07be9b93d6cb72f8a 100644
--- a/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
+++ b/arch/riscv/boot/dts/anlogic/dr1v90.dtsi
@@ -3,6 +3,9 @@
* Copyright (C) 2025 Junhui Liu <junhui.liu@...moral.tech>
*/
+#include <dt-bindings/clock/anlogic,dr1v90-cru.h>
+#include <dt-bindings/reset/anlogic,dr1v90-cru.h>
+
/dts-v1/;
/ {
#address-cells = <2>;
@@ -39,6 +42,27 @@ cpu0_intc: interrupt-controller {
};
};
+ clocks {
+ can_ext: clock-ext-can {
+ compatible = "fixed-clock";
+ clock-output-names = "can_ext";
+ #clock-cells = <0>;
+ };
+
+ osc_33m: clock-33m {
+ compatible = "fixed-clock";
+ clock-frequency = <33333333>;
+ clock-output-names = "osc_33m";
+ #clock-cells = <0>;
+ };
+
+ wdt_ext: clock-ext-wdt {
+ compatible = "fixed-clock";
+ clock-output-names = "wdt_ext";
+ #clock-cells = <0>;
+ };
+ };
+
soc {
compatible = "simple-bus";
interrupt-parent = <&plic>;
@@ -65,21 +89,34 @@ plic: interrupt-controller@...00000 {
uart0: serial@...00000 {
compatible = "anlogic,dr1v90-uart", "snps,dw-apb-uart";
reg = <0x0 0xf8400000 0x0 0x1000>;
- clock-frequency = <50000000>;
+ clocks = <&cru CLK_IO_400M_DIV8>, <&cru CLK_CPU_1X>;
+ clock-names = "baudclk", "apb_pclk";
interrupts = <71>;
reg-io-width = <4>;
reg-shift = <2>;
+ resets = <&cru RESET_UART0>;
status = "disabled";
};
uart1: serial@...01000 {
compatible = "anlogic,dr1v90-uart", "snps,dw-apb-uart";
reg = <0x0 0xf8401000 0x0 0x1000>;
- clock-frequency = <50000000>;
+ clocks = <&cru CLK_IO_400M_DIV8>, <&cru CLK_CPU_1X>;
+ clock-names = "baudclk", "apb_pclk";
interrupts = <72>;
reg-io-width = <4>;
reg-shift = <2>;
+ resets = <&cru RESET_UART1>;
status = "disabled";
};
+
+ cru: clock-controller@...01000 {
+ compatible = "anlogic,dr1v90-cru";
+ reg = <0x0 0xf8801000 0 0x400>;
+ clocks = <&osc_33m>, <&can_ext>, <&wdt_ext>;
+ clock-names = "osc_33m", "can_ext", "wdt_ext";
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
};
};
--
2.51.0
Powered by blists - more mailing lists