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