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

From: Michal Simek

Date: Mon Nov 02 2026 - 11:55:39 EST




On 11/2/26 13:21, Amit Kumar Mahapatra wrote:
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>;
+ };

This should have status = "disabled"; because I expect it is configuration related and it might not be available. (Or not available via MMIO access).

Pretty much this patch should be sent separately. This patch series don't have changes in dt binding. That's why it should go via my tree because there is no dependency.

Thanks,
Michal