162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/firmware/xilinx/xlnx,zynqmp-firmware.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Xilinx firmware driver
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Nava kishore Manne <nava.kishore.manne@amd.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: The zynqmp-firmware node describes the interface to platform
1362306a36Sopenharmony_ci  firmware. ZynqMP has an interface to communicate with secure firmware.
1462306a36Sopenharmony_ci  Firmware driver provides an interface to firmware APIs. Interface APIs
1562306a36Sopenharmony_ci  can be used by any driver to communicate to PMUFW(Platform Management Unit).
1662306a36Sopenharmony_ci  These requests include clock management, pin control, device control,
1762306a36Sopenharmony_ci  power management service, FPGA service and other platform management
1862306a36Sopenharmony_ci  services.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciproperties:
2162306a36Sopenharmony_ci  compatible:
2262306a36Sopenharmony_ci    oneOf:
2362306a36Sopenharmony_ci      - description: For implementations complying for Zynq Ultrascale+ MPSoC.
2462306a36Sopenharmony_ci        const: xlnx,zynqmp-firmware
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci      - description: For implementations complying for Versal.
2762306a36Sopenharmony_ci        const: xlnx,versal-firmware
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  method:
3062306a36Sopenharmony_ci    description: |
3162306a36Sopenharmony_ci                 The method of calling the PM-API firmware layer.
3262306a36Sopenharmony_ci                 Permitted values are.
3362306a36Sopenharmony_ci                 - "smc" : SMC #0, following the SMCCC
3462306a36Sopenharmony_ci                 - "hvc" : HVC #0, following the SMCCC
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
3762306a36Sopenharmony_ci    enum:
3862306a36Sopenharmony_ci      - smc
3962306a36Sopenharmony_ci      - hvc
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  "#power-domain-cells":
4262306a36Sopenharmony_ci    const: 1
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  versal_fpga:
4562306a36Sopenharmony_ci    $ref: /schemas/fpga/xlnx,versal-fpga.yaml#
4662306a36Sopenharmony_ci    description: Compatible of the FPGA device.
4762306a36Sopenharmony_ci    type: object
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  zynqmp-aes:
5062306a36Sopenharmony_ci    $ref: /schemas/crypto/xlnx,zynqmp-aes.yaml#
5162306a36Sopenharmony_ci    description: The ZynqMP AES-GCM hardened cryptographic accelerator is
5262306a36Sopenharmony_ci      used to encrypt or decrypt the data with provided key and initialization
5362306a36Sopenharmony_ci      vector.
5462306a36Sopenharmony_ci    type: object
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  clock-controller:
5762306a36Sopenharmony_ci    $ref: /schemas/clock/xlnx,versal-clk.yaml#
5862306a36Sopenharmony_ci    description: The clock controller is a hardware block of Xilinx versal
5962306a36Sopenharmony_ci      clock tree. It reads required input clock frequencies from the devicetree
6062306a36Sopenharmony_ci      and acts as clock provider for all clock consumers of PS clocks.list of
6162306a36Sopenharmony_ci      clock specifiers which are external input clocks to the given clock
6262306a36Sopenharmony_ci      controller.
6362306a36Sopenharmony_ci    type: object
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_cirequired:
6662306a36Sopenharmony_ci  - compatible
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciadditionalProperties: false
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciexamples:
7162306a36Sopenharmony_ci  - |
7262306a36Sopenharmony_ci    #include <dt-bindings/power/xlnx-zynqmp-power.h>
7362306a36Sopenharmony_ci    firmware {
7462306a36Sopenharmony_ci      zynqmp_firmware: zynqmp-firmware {
7562306a36Sopenharmony_ci        #power-domain-cells = <1>;
7662306a36Sopenharmony_ci        };
7762306a36Sopenharmony_ci    };
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci    sata {
8062306a36Sopenharmony_ci      power-domains = <&zynqmp_firmware PD_SATA>;
8162306a36Sopenharmony_ci    };
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci    versal-firmware {
8462306a36Sopenharmony_ci      compatible = "xlnx,versal-firmware";
8562306a36Sopenharmony_ci      method = "smc";
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci      versal_fpga: versal_fpga {
8862306a36Sopenharmony_ci        compatible = "xlnx,versal-fpga";
8962306a36Sopenharmony_ci      };
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci      xlnx_aes: zynqmp-aes {
9262306a36Sopenharmony_ci        compatible = "xlnx,zynqmp-aes";
9362306a36Sopenharmony_ci      };
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci      versal_clk: clock-controller {
9662306a36Sopenharmony_ci        #clock-cells = <1>;
9762306a36Sopenharmony_ci        compatible = "xlnx,versal-clk";
9862306a36Sopenharmony_ci        clocks = <&ref>, <&alt_ref>, <&pl_alt_ref>;
9962306a36Sopenharmony_ci        clock-names = "ref", "alt_ref", "pl_alt_ref";
10062306a36Sopenharmony_ci      };
10162306a36Sopenharmony_ci    };
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci...
104