1*f8cc6d71SNava kishore Manne# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*f8cc6d71SNava kishore Manne%YAML 1.2
3*f8cc6d71SNava kishore Manne---
4*f8cc6d71SNava kishore Manne$id: http://devicetree.org/schemas/firmware/xilinx/xlnx,zynqmp-firmware.yaml#
5*f8cc6d71SNava kishore Manne$schema: http://devicetree.org/meta-schemas/core.yaml#
6*f8cc6d71SNava kishore Manne
7*f8cc6d71SNava kishore Mannetitle: Xilinx firmware driver
8*f8cc6d71SNava kishore Manne
9*f8cc6d71SNava kishore Mannemaintainers:
10*f8cc6d71SNava kishore Manne  - Nava kishore Manne <nava.manne@xilinx.com>
11*f8cc6d71SNava kishore Manne
12*f8cc6d71SNava kishore Mannedescription: The zynqmp-firmware node describes the interface to platform
13*f8cc6d71SNava kishore Manne  firmware. ZynqMP has an interface to communicate with secure firmware.
14*f8cc6d71SNava kishore Manne  Firmware driver provides an interface to firmware APIs. Interface APIs
15*f8cc6d71SNava kishore Manne  can be used by any driver to communicate to PMUFW(Platform Management Unit).
16*f8cc6d71SNava kishore Manne  These requests include clock management, pin control, device control,
17*f8cc6d71SNava kishore Manne  power management service, FPGA service and other platform management
18*f8cc6d71SNava kishore Manne  services.
19*f8cc6d71SNava kishore Manne
20*f8cc6d71SNava kishore Manneproperties:
21*f8cc6d71SNava kishore Manne  compatible:
22*f8cc6d71SNava kishore Manne    oneOf:
23*f8cc6d71SNava kishore Manne      - description: For implementations complying for Zynq Ultrascale+ MPSoC.
24*f8cc6d71SNava kishore Manne        const: xlnx,zynqmp-firmware
25*f8cc6d71SNava kishore Manne
26*f8cc6d71SNava kishore Manne      - description: For implementations complying for Versal.
27*f8cc6d71SNava kishore Manne        const: xlnx,versal-firmware
28*f8cc6d71SNava kishore Manne
29*f8cc6d71SNava kishore Manne  method:
30*f8cc6d71SNava kishore Manne    description: |
31*f8cc6d71SNava kishore Manne                 The method of calling the PM-API firmware layer.
32*f8cc6d71SNava kishore Manne                 Permitted values are.
33*f8cc6d71SNava kishore Manne                 - "smc" : SMC #0, following the SMCCC
34*f8cc6d71SNava kishore Manne                 - "hvc" : HVC #0, following the SMCCC
35*f8cc6d71SNava kishore Manne
36*f8cc6d71SNava kishore Manne    $ref: /schemas/types.yaml#/definitions/string-array
37*f8cc6d71SNava kishore Manne    enum:
38*f8cc6d71SNava kishore Manne      - smc
39*f8cc6d71SNava kishore Manne      - hvc
40*f8cc6d71SNava kishore Manne
41*f8cc6d71SNava kishore Manne  versal_fpga:
42*f8cc6d71SNava kishore Manne    $ref: /schemas/fpga/xlnx,versal-fpga.yaml#
43*f8cc6d71SNava kishore Manne    description: Compatible of the FPGA device.
44*f8cc6d71SNava kishore Manne    type: object
45*f8cc6d71SNava kishore Manne
46*f8cc6d71SNava kishore Manne  zynqmp-aes:
47*f8cc6d71SNava kishore Manne    $ref: /schemas/crypto/xlnx,zynqmp-aes.yaml#
48*f8cc6d71SNava kishore Manne    description: The ZynqMP AES-GCM hardened cryptographic accelerator is
49*f8cc6d71SNava kishore Manne      used to encrypt or decrypt the data with provided key and initialization
50*f8cc6d71SNava kishore Manne      vector.
51*f8cc6d71SNava kishore Manne    type: object
52*f8cc6d71SNava kishore Manne
53*f8cc6d71SNava kishore Manne  clock-controller:
54*f8cc6d71SNava kishore Manne    $ref: /schemas/clock/xlnx,versal-clk.yaml#
55*f8cc6d71SNava kishore Manne    description: The clock controller is a hardware block of Xilinx versal
56*f8cc6d71SNava kishore Manne      clock tree. It reads required input clock frequencies from the devicetree
57*f8cc6d71SNava kishore Manne      and acts as clock provider for all clock consumers of PS clocks.list of
58*f8cc6d71SNava kishore Manne      clock specifiers which are external input clocks to the given clock
59*f8cc6d71SNava kishore Manne      controller.
60*f8cc6d71SNava kishore Manne    type: object
61*f8cc6d71SNava kishore Manne
62*f8cc6d71SNava kishore Mannerequired:
63*f8cc6d71SNava kishore Manne  - compatible
64*f8cc6d71SNava kishore Manne
65*f8cc6d71SNava kishore ManneadditionalProperties: false
66*f8cc6d71SNava kishore Manne
67*f8cc6d71SNava kishore Manneexamples:
68*f8cc6d71SNava kishore Manne  - |
69*f8cc6d71SNava kishore Manne    versal-firmware {
70*f8cc6d71SNava kishore Manne      compatible = "xlnx,versal-firmware";
71*f8cc6d71SNava kishore Manne      method = "smc";
72*f8cc6d71SNava kishore Manne
73*f8cc6d71SNava kishore Manne      versal_fpga: versal_fpga {
74*f8cc6d71SNava kishore Manne        compatible = "xlnx,versal-fpga";
75*f8cc6d71SNava kishore Manne      };
76*f8cc6d71SNava kishore Manne
77*f8cc6d71SNava kishore Manne      xlnx_aes: zynqmp-aes {
78*f8cc6d71SNava kishore Manne        compatible = "xlnx,zynqmp-aes";
79*f8cc6d71SNava kishore Manne      };
80*f8cc6d71SNava kishore Manne
81*f8cc6d71SNava kishore Manne      versal_clk: clock-controller {
82*f8cc6d71SNava kishore Manne        #clock-cells = <1>;
83*f8cc6d71SNava kishore Manne        compatible = "xlnx,versal-clk";
84*f8cc6d71SNava kishore Manne        clocks = <&ref>, <&alt_ref>, <&pl_alt_ref>;
85*f8cc6d71SNava kishore Manne        clock-names = "ref", "alt_ref", "pl_alt_ref";
86*f8cc6d71SNava kishore Manne      };
87*f8cc6d71SNava kishore Manne    };
88*f8cc6d71SNava kishore Manne
89*f8cc6d71SNava kishore Manne...
90