dt-bindings: iio: adc: add xlnx,versal-sysmon binding

Add devicetree binding for the AMD/Xilinx Versal System Monitor (SysMon).

The Versal SysMon is the successor to the Zynq UltraScale+ AMS block,
providing on-chip voltage and temperature monitoring. The hardware
supports up to 160 supply voltage measurement points and up to 64
temperature satellites distributed across the SoC, with configurable
threshold alarms and oversampling. The device can be accessed via
memory-mapped I/O or via an I2C interface.

Supply and temperature channels are described as child nodes under
container nodes, referencing the standard adc.yaml binding for
channel properties.

Co-developed-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Salih Erim <salih.erim@amd.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
Salih Erim
2026-06-24 15:37:18 +01:00
committed by Jonathan Cameron
parent e6026ff7e6
commit bb6ea868b8

View File

@@ -0,0 +1,154 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2022 - 2026, Advanced Micro Devices, Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/xlnx,versal-sysmon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: AMD/Xilinx Versal System Monitor
maintainers:
- Salih Erim <salih.erim@amd.com>
description:
The AMD/Xilinx Versal System Monitor (SysMon) is the successor to the
Zynq UltraScale+ AMS block. It provides on-chip voltage and temperature
monitoring with up to 160 voltage measurement points and up to
64 temperature satellites distributed across the SoC. The hardware
supports configurable threshold alarms and oversampling. The device
can be accessed via memory-mapped I/O or via an I2C interface.
properties:
compatible:
const: xlnx,versal-sysmon
reg:
maxItems: 1
interrupts:
maxItems: 1
'#io-channel-cells':
const: 1
voltage-channels:
type: object
description:
Container for voltage measurement channels.
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^channel@([0-9a-f]|[1-9][0-9a-f])$':
$ref: adc.yaml
description:
Measures a voltage rail. The register index and rail
name are assigned by the hardware design tool (Vivado).
properties:
reg:
minimum: 0
maximum: 159
description:
Voltage measurement register index assigned by the hardware
design tool.
required:
- reg
- label
unevaluatedProperties: false
required:
- '#address-cells'
- '#size-cells'
additionalProperties: false
temperature-channels:
type: object
description:
Container for temperature satellite measurement channels.
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^channel@([1-9a-f]|[1-3][0-9a-f]|40)$':
$ref: adc.yaml
description:
Reads a temperature satellite sensor. Each satellite monitors
a specific region of the SoC die.
properties:
reg:
minimum: 1
maximum: 64
description:
Temperature satellite number (1-based hardware index).
required:
- reg
- label
unevaluatedProperties: false
required:
- '#address-cells'
- '#size-cells'
additionalProperties: false
required:
- compatible
- reg
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
sysmon@f1270000 {
compatible = "xlnx,versal-sysmon";
reg = <0xf1270000 0x4000>;
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
voltage-channels {
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
label = "vccaux";
};
channel@3 {
reg = <3>;
label = "vcc_ram";
bipolar;
};
};
temperature-channels {
#address-cells = <1>;
#size-cells = <0>;
channel@a {
reg = <10>;
label = "aie-temp-ch1";
};
};
};