| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/firmware/xilinx/xlnx,zynqmp-firmware.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Xilinx firmware driver |
| |
| maintainers: |
| - Nava kishore Manne <nava.kishore.manne@amd.com> |
| |
| description: The zynqmp-firmware node describes the interface to platform |
| firmware. ZynqMP has an interface to communicate with secure firmware. |
| Firmware driver provides an interface to firmware APIs. Interface APIs |
| can be used by any driver to communicate to PMUFW(Platform Management Unit). |
| These requests include clock management, pin control, device control, |
| power management service, FPGA service and other platform management |
| services. |
| |
| properties: |
| compatible: |
| oneOf: |
| - description: For implementations complying for Zynq Ultrascale+ MPSoC. |
| const: xlnx,zynqmp-firmware |
| |
| - description: For implementations complying for Versal. |
| const: xlnx,versal-firmware |
| |
| - description: For implementations complying for Versal NET. |
| items: |
| - enum: |
| - xlnx,versal-net-firmware |
| - const: xlnx,versal-firmware |
| |
| method: |
| description: | |
| The method of calling the PM-API firmware layer. |
| Permitted values are. |
| - "smc" : SMC #0, following the SMCCC |
| - "hvc" : HVC #0, following the SMCCC |
| |
| $ref: /schemas/types.yaml#/definitions/string-array |
| enum: |
| - smc |
| - hvc |
| |
| "#power-domain-cells": |
| const: 1 |
| |
| clock-controller: |
| $ref: /schemas/clock/xlnx,versal-clk.yaml# |
| description: The clock controller is a hardware block of Xilinx versal |
| clock tree. It reads required input clock frequencies from the devicetree |
| and acts as clock provider for all clock consumers of PS clocks.list of |
| clock specifiers which are external input clocks to the given clock |
| controller. |
| type: object |
| |
| gpio: |
| $ref: /schemas/gpio/xlnx,zynqmp-gpio-modepin.yaml# |
| description: The gpio node describes connect to PS_MODE pins via firmware |
| interface. |
| type: object |
| |
| soc-nvmem: |
| $ref: /schemas/nvmem/xlnx,zynqmp-nvmem.yaml# |
| description: The ZynqMP MPSoC provides access to the hardware related data |
| like SOC revision, IDCODE and specific purpose efuses. |
| type: object |
| |
| pcap: |
| $ref: /schemas/fpga/xlnx,zynqmp-pcap-fpga.yaml |
| description: The ZynqMP SoC uses the PCAP (Processor Configuration Port) to |
| configure the Programmable Logic (PL). The configuration uses the |
| firmware interface. |
| type: object |
| |
| pinctrl: |
| $ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml# |
| description: The pinctrl node provides access to pinconfig and pincontrol |
| functionality available in firmware. |
| type: object |
| |
| power-management: |
| $ref: /schemas/power/reset/xlnx,zynqmp-power.yaml# |
| description: The zynqmp-power node describes the power management |
| configurations. It will control remote suspend/shutdown interfaces. |
| type: object |
| |
| reset-controller: |
| $ref: /schemas/reset/xlnx,zynqmp-reset.yaml# |
| description: The reset-controller node describes connection to the reset |
| functionality via firmware interface. |
| type: object |
| |
| versal-fpga: |
| $ref: /schemas/fpga/xlnx,versal-fpga.yaml# |
| description: Compatible of the FPGA device. |
| type: object |
| |
| zynqmp-aes: |
| $ref: /schemas/crypto/xlnx,zynqmp-aes.yaml# |
| description: The ZynqMP AES-GCM hardened cryptographic accelerator is |
| used to encrypt or decrypt the data with provided key and initialization |
| vector. |
| type: object |
| |
| required: |
| - compatible |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/power/xlnx-zynqmp-power.h> |
| firmware { |
| zynqmp_firmware: zynqmp-firmware { |
| #power-domain-cells = <1>; |
| soc-nvmem { |
| compatible = "xlnx,zynqmp-nvmem-fw"; |
| nvmem-layout { |
| compatible = "fixed-layout"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| soc_revision: soc-revision@0 { |
| reg = <0x0 0x4>; |
| }; |
| }; |
| }; |
| gpio { |
| compatible = "xlnx,zynqmp-gpio-modepin"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| pcap { |
| compatible = "xlnx,zynqmp-pcap-fpga"; |
| }; |
| pinctrl { |
| compatible = "xlnx,zynqmp-pinctrl"; |
| }; |
| power-management { |
| compatible = "xlnx,zynqmp-power"; |
| interrupts = <0 35 4>; |
| }; |
| reset-controller { |
| compatible = "xlnx,zynqmp-reset"; |
| #reset-cells = <1>; |
| }; |
| }; |
| }; |
| |
| sata { |
| power-domains = <&zynqmp_firmware PD_SATA>; |
| }; |
| |
| versal-firmware { |
| compatible = "xlnx,versal-firmware"; |
| method = "smc"; |
| |
| versal_fpga: versal-fpga { |
| compatible = "xlnx,versal-fpga"; |
| }; |
| |
| xlnx_aes: zynqmp-aes { |
| compatible = "xlnx,zynqmp-aes"; |
| }; |
| |
| versal_clk: clock-controller { |
| #clock-cells = <1>; |
| compatible = "xlnx,versal-clk"; |
| clocks = <&ref>, <&pl_alt_ref>; |
| clock-names = "ref", "pl_alt_ref"; |
| }; |
| }; |
| |
| ... |