[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251231-dr1v90-cru-v4-5-1db8c877eb91@pigmoral.tech>
Date: Wed, 31 Dec 2025 14:40:09 +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>, Philipp Zabel <p.zabel@...gutronix.de>,
Junhui Liu <junhui.liu@...moral.tech>, Paul Walmsley <pjw@...nel.org>,
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,
linux-riscv@...ts.infradead.org, devicetree@...r.kernel.org
Subject: [PATCH v4 5/6] 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 a5d0765ade32..dc8358b35751 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>;
@@ -80,21 +104,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.52.0
Powered by blists - more mailing lists