[PATCH 5/6] arm64: versal-net: Add SysMon and thermal zone

From: Amit Kumar Mahapatra

Date: Mon Nov 02 2026 - 08:19:34 EST


Describe the System Monitor (SysMon) block in the PMC, which provides
on-chip voltage and temperature monitoring, and use its device
temperature channel as the sensor for a thermal zone.

SysMon channel 0 is the current maximum temperature across all active
satellites.

The thermal zone has a critical trip at 125C. Passive trips and cooling
maps, voltage channels and per-satellite temperature channels depend on
the design and are left to board files.

Signed-off-by: Amit Kumar Mahapatra <amit.kumar-mahapatra@xxxxxxx>
---
arch/arm64/boot/dts/xilinx/versal-net.dtsi | 29 ++++++++++++++++++++++
1 file changed, 29 insertions(+)

diff --git a/arch/arm64/boot/dts/xilinx/versal-net.dtsi b/arch/arm64/boot/dts/xilinx/versal-net.dtsi
index 21bb917bcba1..394181c9a751 100644
--- a/arch/arm64/boot/dts/xilinx/versal-net.dtsi
+++ b/arch/arm64/boot/dts/xilinx/versal-net.dtsi
@@ -735,6 +735,28 @@ versal_fpga: versal-fpga {
compatible = "xlnx,versal-fpga";
};

+ sysmon_temp: thermal-sensor {
+ compatible = "generic-adc-thermal";
+ #thermal-sensor-cells = <0>;
+ io-channels = <&sysmon0 0>;
+ io-channel-names = "sensor-channel";
+ };
+
+ thermal-zones {
+ versal_thermal: versal-thermal {
+ polling-delay = <1000>; /* milliseconds */
+ thermal-sensors = <&sysmon_temp>;
+
+ trips {
+ ot_crit: ot-crit {
+ temperature = <125000>; /* millicelsius */
+ hysteresis = <0>; /* millicelsius */
+ type = "critical";
+ };
+ };
+ };
+ };
+
amba: axi {
compatible = "simple-bus";
bootph-all;
@@ -1033,6 +1055,13 @@ spi1: spi@f1970000 {
clock-names = "ref_clk", "pclk";
};

+ sysmon0: sysmon@f1270000 {
+ compatible = "xlnx,versal-sysmon";
+ reg = <0 0xf1270000 0 0x4000>;
+ interrupts = <0 202 4>;
+ #io-channel-cells = <1>;
+ };
+
ttc0: timer@f1dc0000 {
compatible = "cdns,ttc";
status = "disabled";
--
2.34.1