xref: /linux/Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-firmware.yaml (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
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
298e312baaSJay Buddhabhatti      - description: For implementations complying for Versal NET.
308e312baaSJay Buddhabhatti        items:
318e312baaSJay Buddhabhatti          - enum:
328e312baaSJay Buddhabhatti              - xlnx,versal-net-firmware
338e312baaSJay Buddhabhatti          - const: xlnx,versal-firmware
348e312baaSJay Buddhabhatti
35f8cc6d71SNava kishore Manne  method:
36f8cc6d71SNava kishore Manne    description: |
37f8cc6d71SNava kishore Manne                 The method of calling the PM-API firmware layer.
38f8cc6d71SNava kishore Manne                 Permitted values are.
39f8cc6d71SNava kishore Manne                 - "smc" : SMC #0, following the SMCCC
40f8cc6d71SNava kishore Manne                 - "hvc" : HVC #0, following the SMCCC
41f8cc6d71SNava kishore Manne
42f8cc6d71SNava kishore Manne    $ref: /schemas/types.yaml#/definitions/string-array
43f8cc6d71SNava kishore Manne    enum:
44f8cc6d71SNava kishore Manne      - smc
45f8cc6d71SNava kishore Manne      - hvc
46f8cc6d71SNava kishore Manne
47de259b7bSNaman Trivedi Manojbhai  "#power-domain-cells":
48de259b7bSNaman Trivedi Manojbhai    const: 1
49de259b7bSNaman Trivedi Manojbhai
50e83e3c55SMichal Simek  clock-controller:
51e83e3c55SMichal Simek    $ref: /schemas/clock/xlnx,versal-clk.yaml#
52e83e3c55SMichal Simek    description: The clock controller is a hardware block of Xilinx versal
53e83e3c55SMichal Simek      clock tree. It reads required input clock frequencies from the devicetree
54e83e3c55SMichal Simek      and acts as clock provider for all clock consumers of PS clocks.list of
55e83e3c55SMichal Simek      clock specifiers which are external input clocks to the given clock
56e83e3c55SMichal Simek      controller.
57e83e3c55SMichal Simek    type: object
58e83e3c55SMichal Simek
596f9c4e69SMichal Simek  gpio:
606f9c4e69SMichal Simek    $ref: /schemas/gpio/xlnx,zynqmp-gpio-modepin.yaml#
616f9c4e69SMichal Simek    description: The gpio node describes connect to PS_MODE pins via firmware
626f9c4e69SMichal Simek      interface.
636f9c4e69SMichal Simek    type: object
646f9c4e69SMichal Simek
65*d8764d34SMichal Simek  soc-nvmem:
66*d8764d34SMichal Simek    $ref: /schemas/nvmem/xlnx,zynqmp-nvmem.yaml#
67*d8764d34SMichal Simek    description: The ZynqMP MPSoC provides access to the hardware related data
68*d8764d34SMichal Simek      like SOC revision, IDCODE and specific purpose efuses.
69*d8764d34SMichal Simek    type: object
70*d8764d34SMichal Simek
716f9c4e69SMichal Simek  pcap:
726f9c4e69SMichal Simek    $ref: /schemas/fpga/xlnx,zynqmp-pcap-fpga.yaml
736f9c4e69SMichal Simek    description: The ZynqMP SoC uses the PCAP (Processor Configuration Port) to
746f9c4e69SMichal Simek      configure the Programmable Logic (PL). The configuration uses the
756f9c4e69SMichal Simek      firmware interface.
766f9c4e69SMichal Simek    type: object
776f9c4e69SMichal Simek
786f9c4e69SMichal Simek  pinctrl:
796f9c4e69SMichal Simek    $ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
806f9c4e69SMichal Simek    description: The pinctrl node provides access to pinconfig and pincontrol
816f9c4e69SMichal Simek      functionality available in firmware.
826f9c4e69SMichal Simek    type: object
836f9c4e69SMichal Simek
846f9c4e69SMichal Simek  power-management:
856f9c4e69SMichal Simek    $ref: /schemas/power/reset/xlnx,zynqmp-power.yaml#
866f9c4e69SMichal Simek    description: The zynqmp-power node describes the power management
876f9c4e69SMichal Simek      configurations. It will control remote suspend/shutdown interfaces.
886f9c4e69SMichal Simek    type: object
896f9c4e69SMichal Simek
906f9c4e69SMichal Simek  reset-controller:
916f9c4e69SMichal Simek    $ref: /schemas/reset/xlnx,zynqmp-reset.yaml#
926f9c4e69SMichal Simek    description: The reset-controller node describes connection to the reset
936f9c4e69SMichal Simek      functionality via firmware interface.
946f9c4e69SMichal Simek    type: object
956f9c4e69SMichal Simek
9693b7a95fSMichal Simek  versal-fpga:
97f8cc6d71SNava kishore Manne    $ref: /schemas/fpga/xlnx,versal-fpga.yaml#
98f8cc6d71SNava kishore Manne    description: Compatible of the FPGA device.
99f8cc6d71SNava kishore Manne    type: object
100f8cc6d71SNava kishore Manne
101f8cc6d71SNava kishore Manne  zynqmp-aes:
102f8cc6d71SNava kishore Manne    $ref: /schemas/crypto/xlnx,zynqmp-aes.yaml#
103f8cc6d71SNava kishore Manne    description: The ZynqMP AES-GCM hardened cryptographic accelerator is
104f8cc6d71SNava kishore Manne      used to encrypt or decrypt the data with provided key and initialization
105f8cc6d71SNava kishore Manne      vector.
106f8cc6d71SNava kishore Manne    type: object
107f8cc6d71SNava kishore Manne
108f8cc6d71SNava kishore Mannerequired:
109f8cc6d71SNava kishore Manne  - compatible
110f8cc6d71SNava kishore Manne
111f8cc6d71SNava kishore ManneadditionalProperties: false
112f8cc6d71SNava kishore Manne
113f8cc6d71SNava kishore Manneexamples:
114f8cc6d71SNava kishore Manne  - |
115de259b7bSNaman Trivedi Manojbhai    #include <dt-bindings/power/xlnx-zynqmp-power.h>
116de259b7bSNaman Trivedi Manojbhai    firmware {
117de259b7bSNaman Trivedi Manojbhai      zynqmp_firmware: zynqmp-firmware {
118de259b7bSNaman Trivedi Manojbhai        #power-domain-cells = <1>;
119*d8764d34SMichal Simek        soc-nvmem {
120*d8764d34SMichal Simek          compatible = "xlnx,zynqmp-nvmem-fw";
121*d8764d34SMichal Simek          nvmem-layout {
122*d8764d34SMichal Simek            compatible = "fixed-layout";
123*d8764d34SMichal Simek            #address-cells = <1>;
124*d8764d34SMichal Simek            #size-cells = <1>;
125*d8764d34SMichal Simek
126*d8764d34SMichal Simek            soc_revision: soc-revision@0 {
127*d8764d34SMichal Simek                reg = <0x0 0x4>;
128*d8764d34SMichal Simek            };
129*d8764d34SMichal Simek          };
130*d8764d34SMichal Simek        };
1316f9c4e69SMichal Simek        gpio {
1326f9c4e69SMichal Simek          compatible = "xlnx,zynqmp-gpio-modepin";
1336f9c4e69SMichal Simek          gpio-controller;
1346f9c4e69SMichal Simek          #gpio-cells = <2>;
1356f9c4e69SMichal Simek        };
1366f9c4e69SMichal Simek        pcap {
1376f9c4e69SMichal Simek          compatible = "xlnx,zynqmp-pcap-fpga";
1386f9c4e69SMichal Simek        };
1396f9c4e69SMichal Simek        pinctrl {
1406f9c4e69SMichal Simek          compatible = "xlnx,zynqmp-pinctrl";
1416f9c4e69SMichal Simek        };
1426f9c4e69SMichal Simek        power-management {
1436f9c4e69SMichal Simek          compatible = "xlnx,zynqmp-power";
1446f9c4e69SMichal Simek          interrupts = <0 35 4>;
1456f9c4e69SMichal Simek        };
1466f9c4e69SMichal Simek        reset-controller {
1476f9c4e69SMichal Simek          compatible = "xlnx,zynqmp-reset";
1486f9c4e69SMichal Simek          #reset-cells = <1>;
1496f9c4e69SMichal Simek        };
150de259b7bSNaman Trivedi Manojbhai      };
151de259b7bSNaman Trivedi Manojbhai    };
152de259b7bSNaman Trivedi Manojbhai
153de259b7bSNaman Trivedi Manojbhai    sata {
154de259b7bSNaman Trivedi Manojbhai      power-domains = <&zynqmp_firmware PD_SATA>;
155de259b7bSNaman Trivedi Manojbhai    };
156de259b7bSNaman Trivedi Manojbhai
157f8cc6d71SNava kishore Manne    versal-firmware {
158f8cc6d71SNava kishore Manne      compatible = "xlnx,versal-firmware";
159f8cc6d71SNava kishore Manne      method = "smc";
160f8cc6d71SNava kishore Manne
16193b7a95fSMichal Simek      versal_fpga: versal-fpga {
162f8cc6d71SNava kishore Manne        compatible = "xlnx,versal-fpga";
163f8cc6d71SNava kishore Manne      };
164f8cc6d71SNava kishore Manne
165f8cc6d71SNava kishore Manne      xlnx_aes: zynqmp-aes {
166f8cc6d71SNava kishore Manne        compatible = "xlnx,zynqmp-aes";
167f8cc6d71SNava kishore Manne      };
168f8cc6d71SNava kishore Manne
169f8cc6d71SNava kishore Manne      versal_clk: clock-controller {
170f8cc6d71SNava kishore Manne        #clock-cells = <1>;
171f8cc6d71SNava kishore Manne        compatible = "xlnx,versal-clk";
17239118392SShubhrajyoti Datta        clocks = <&ref>, <&pl_alt_ref>;
17339118392SShubhrajyoti Datta        clock-names = "ref", "pl_alt_ref";
174f8cc6d71SNava kishore Manne      };
175f8cc6d71SNava kishore Manne    };
176f8cc6d71SNava kishore Manne
177f8cc6d71SNava kishore Manne...
178