[PATCH V1 4/9] dt-bindings: soc: xilinx: Add AI engine DT binding
Krzysztof Kozlowski
krzk at kernel.org
Thu Jul 3 06:48:44 UTC 2025
On 02/07/2025 17:56, Gregory Williams wrote:
> In the device tree, there will be device node for the AI engine device,
> and device nodes for the statically configured AI engine apertures.
No, describe the hardware, not DTS.
> Apertures are an isolated set of columns with in the AI engine device
> with their own address space and interrupt.
>
> Signed-off-by: Gregory Williams <gregory.williams at amd.com>
> ---
> .../bindings/soc/xilinx/xlnx,ai-engine.yaml | 151 ++++++++++++++++++
> 1 file changed, 151 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/soc/xilinx/xlnx,ai-engine.yaml
>
> diff --git a/Documentation/devicetree/bindings/soc/xilinx/xlnx,ai-engine.yaml b/Documentation/devicetree/bindings/soc/xilinx/xlnx,ai-engine.yaml
> new file mode 100644
> index 000000000000..7d9a36c56366
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/xilinx/xlnx,ai-engine.yaml
Filename matching compatible.
> @@ -0,0 +1,151 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/soc/xilinx/xlnx,ai-engine.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: AMD AI Engine
That's really too generic...
> +
> +maintainers:
> + - Gregory Williams <gregory.williams at amd.com>
> +
> +description:
> + The AMD AI Engine is a tile processor with many cores (up to 400) that
> + can run in parallel. The data routing between cores is configured through
> + internal switches, and shim tiles interface with external interconnect, such
> + as memory or PL. One AI engine device can have multiple apertures, each
> + has its own address space and interrupt. At runtime application can create
> + multiple partitions within an aperture which are groups of columns of AI
> + engine tiles. Each AI engine partition is the minimum resetable unit for an
> + AI engine application.
> +
> +properties:
> + compatible:
> + const: xlnx,ai-engine-v2.0
What does v2.0 stands for? Versioning is discouraged, unless mapping is
well documented.
> +
> + reg:
> + maxItems: 1
> +
> + '#address-cells':
> + const: 2
> +
> + '#size-cells':
> + const: 2
> +
> + power-domains:
Missing constraints.
> + description:
> + Platform management node id used to request power management services
> + from the firmware driver.
Drop description, redundant.
> +
> + xlnx,aie-gen:
> + $ref: /schemas/types.yaml#/definitions/uint8
Why uint8?
> + description:
> + Hardware generation of AI engine device. E.g. the current values supported
> + are 1 (AIE) and 2 (AIEML).
No clue what's that, but it is implied by compatible, isn't it?
Missing constraints.
> +
> + xlnx,shim-rows:
> + $ref: /schemas/types.yaml#/definitions/uint8-array
> + description:
> + start row and the number of rows of SHIM tiles of the AI engine device
Implied by compatible.
Missing constraints.
> +
> + xlnx,core-rows:
> + $ref: /schemas/types.yaml#/definitions/uint8-array
> + description:
> + start row and the number of rows of core tiles of the AI engine device
> +
> + xlnx,mem-rows:
> + $ref: /schemas/types.yaml#/definitions/uint8-array
> + description:
> + start row and the number of rows of memory tiles of the AI engine device
> +
Same comments everywhere.
> +required:
> + - compatible
> + - reg
> + - power-domains
> + - xlnx,aie-gen
> + - xlnx,shim-rows
> + - xlnx,core-rows
> + - xlnx,mem-rows
> +
> +patternProperties:
This goes after properties.
> + "^aperture@[0-9]+$":
> + type: object
> + description:
> + AI engine aperture which is a group of column based tiles of the
> + AI engine device. Each AI engine apertures isolated from the
> + other AI engine apertures. An AI engine aperture is defined by
> + AMD/Xilinx platform design tools.
> +
> + properties:
> + compatible:
> + const: xlnx,ai-engine-aperture
> +
> + reg:
> + description:
> + Physical base address and length of the aperture registers.
> + The AI engine address space assigned to Linux is defined by
> + Xilinx/AMD platform design tool.
Missing constraints. Description is redundant - can it be anything else?
Plus you clearly miss ranges.
> +
> + interrupts:
> + maxItems: 3
> +
> + interrupt-names:
> + items:
> + - const: interrupt1
> + - const: interrupt2
> + - const: interrupt3
Useless names, drop entirely.
> +
> + xlnx,columns:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + description:
> + It describes the location of the aperture. It specifies the start
> + column and the number of columns. E.g. an aperture starts from
> + column 0 and there are 50 columns, it will be presented as <0 50>.
Same comments as before
> +
> + xlnx,node-id:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + AI engine aperture node ID, which is defined by AMD/Xilinx platform
> + design tool to identify the AI engine aperture in the firmware.
No, you do not get node ID. Recently every day a patch comes for that...
> +
> + required:
> + - compatible
> + - reg
> + - xlnx,columns
> + - xlnx,node-id
> +
> + additionalProperties: false
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/power/xlnx-versal-power.h>
> + bus {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ai_engine: ai-engine at 20000000000 {
> + compatible = "xlnx,ai-engine-v2.0";
> + reg = <0x200 0x00 0x01 0x00>;
> + #address-cells = <2>;
> + #size-cells = <2>;
> + power-domains = <&versal_firmware PM_DEV_AI>;
> + xlnx,aie-gen = /bits/ 8 <0x1>;
> + xlnx,core-rows = /bits/ 8 <1 8>;
> + xlnx,mem-rows = /bits/ 8 <0 0>;
> + xlnx,shim-rows = /bits/ 8 <0 1>
This cannot be without ranges... I am surprised it actually works, but
for sure was not tested and produces warnings.
> +
> + aperture0: aperture at 200000000000 {
> + /* 50 columns and 8 core tile rows + 1 SHIM row */
> + compatible = "xlnx,ai-engine-aperture";
> + reg = <0x200 0x0 0x1 0x0>;
> + interrupts = <0x0 0x94 0x4>,
> + <0x0 0x95 0x4>,
> + <0x0 0x96 0x4>;
Use proper flags.
Best regards,
Krzysztof
More information about the dri-devel
mailing list