xref: /freebsd/sys/contrib/device-tree/Bindings/firmware/intel,stratix10-svc.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1*ae5de77eSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*ae5de77eSEmmanuel Vadot%YAML 1.2
3*ae5de77eSEmmanuel Vadot---
4*ae5de77eSEmmanuel Vadot$id: http://devicetree.org/schemas/firmware/intel,stratix10-svc.yaml#
5*ae5de77eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*ae5de77eSEmmanuel Vadot
7*ae5de77eSEmmanuel Vadottitle: Intel Service Layer Driver for Stratix10 SoC
8*ae5de77eSEmmanuel Vadot
9*ae5de77eSEmmanuel Vadotmaintainers:
10*ae5de77eSEmmanuel Vadot  - Dinh Nguyen <dinguyen@kernel.org>
11*ae5de77eSEmmanuel Vadot  - Mahesh Rao <mahesh.rao@altera.com>
12*ae5de77eSEmmanuel Vadot
13*ae5de77eSEmmanuel Vadotdescription: >
14*ae5de77eSEmmanuel Vadot  Intel Stratix10 SoC is composed of a 64 bit quad-core ARM Cortex A53 hard
15*ae5de77eSEmmanuel Vadot  processor system (HPS) and Secure Device Manager (SDM). When the FPGA is
16*ae5de77eSEmmanuel Vadot  configured from HPS, there needs to be a way for HPS to notify SDM the
17*ae5de77eSEmmanuel Vadot  location and size of the configuration data. Then SDM will get the
18*ae5de77eSEmmanuel Vadot  configuration data from that location and perform the FPGA configuration.
19*ae5de77eSEmmanuel Vadot
20*ae5de77eSEmmanuel Vadot  To meet the whole system security needs and support virtual machine requesting
21*ae5de77eSEmmanuel Vadot  communication with SDM, only the secure world of software (EL3, Exception
22*ae5de77eSEmmanuel Vadot  Layer 3) can interface with SDM. All software entities running on other
23*ae5de77eSEmmanuel Vadot  exception layers must channel through the EL3 software whenever it needs
24*ae5de77eSEmmanuel Vadot  service from SDM.
25*ae5de77eSEmmanuel Vadot
26*ae5de77eSEmmanuel Vadot  Intel Stratix10 service layer driver, running at privileged exception level
27*ae5de77eSEmmanuel Vadot  (EL1, Exception Layer 1), interfaces with the service providers and provides
28*ae5de77eSEmmanuel Vadot  the services for FPGA configuration, QSPI, Crypto and warm reset. Service layer
29*ae5de77eSEmmanuel Vadot  driver also manages secure monitor call (SMC) to communicate with secure monitor
30*ae5de77eSEmmanuel Vadot  code running in EL3.
31*ae5de77eSEmmanuel Vadot
32*ae5de77eSEmmanuel Vadotproperties:
33*ae5de77eSEmmanuel Vadot  compatible:
34*ae5de77eSEmmanuel Vadot    enum:
35*ae5de77eSEmmanuel Vadot      - intel,stratix10-svc
36*ae5de77eSEmmanuel Vadot      - intel,agilex-svc
37*ae5de77eSEmmanuel Vadot
38*ae5de77eSEmmanuel Vadot  method:
39*ae5de77eSEmmanuel Vadot    description: |
40*ae5de77eSEmmanuel Vadot      Supervisory call method to be used to communicate with the
41*ae5de77eSEmmanuel Vadot      secure service layer.
42*ae5de77eSEmmanuel Vadot      Permitted values are:
43*ae5de77eSEmmanuel Vadot      - "smc" : SMC #0, following the SMCCC
44*ae5de77eSEmmanuel Vadot      - "hvc" : HVC #0, following the SMCCC
45*ae5de77eSEmmanuel Vadot
46*ae5de77eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
47*ae5de77eSEmmanuel Vadot    enum:
48*ae5de77eSEmmanuel Vadot      - smc
49*ae5de77eSEmmanuel Vadot      - hvc
50*ae5de77eSEmmanuel Vadot
51*ae5de77eSEmmanuel Vadot  memory-region:
52*ae5de77eSEmmanuel Vadot    maxItems: 1
53*ae5de77eSEmmanuel Vadot    description:
54*ae5de77eSEmmanuel Vadot      reserved memory region for the service layer driver to
55*ae5de77eSEmmanuel Vadot      communicate with the secure device manager.
56*ae5de77eSEmmanuel Vadot
57*ae5de77eSEmmanuel Vadot  fpga-mgr:
58*ae5de77eSEmmanuel Vadot    $ref: /schemas/fpga/intel,stratix10-soc-fpga-mgr.yaml
59*ae5de77eSEmmanuel Vadot    description: Optional child node for fpga manager to perform fabric configuration.
60*ae5de77eSEmmanuel Vadot
61*ae5de77eSEmmanuel Vadotrequired:
62*ae5de77eSEmmanuel Vadot  - compatible
63*ae5de77eSEmmanuel Vadot  - method
64*ae5de77eSEmmanuel Vadot  - memory-region
65*ae5de77eSEmmanuel Vadot
66*ae5de77eSEmmanuel VadotadditionalProperties: false
67*ae5de77eSEmmanuel Vadot
68*ae5de77eSEmmanuel Vadotexamples:
69*ae5de77eSEmmanuel Vadot  - |
70*ae5de77eSEmmanuel Vadot    reserved-memory {
71*ae5de77eSEmmanuel Vadot      #address-cells = <2>;
72*ae5de77eSEmmanuel Vadot      #size-cells = <2>;
73*ae5de77eSEmmanuel Vadot
74*ae5de77eSEmmanuel Vadot      service_reserved: svcbuffer@0 {
75*ae5de77eSEmmanuel Vadot              compatible = "shared-dma-pool";
76*ae5de77eSEmmanuel Vadot              reg = <0x0 0x0 0x0 0x1000000>;
77*ae5de77eSEmmanuel Vadot              alignment = <0x1000>;
78*ae5de77eSEmmanuel Vadot              no-map;
79*ae5de77eSEmmanuel Vadot      };
80*ae5de77eSEmmanuel Vadot    };
81*ae5de77eSEmmanuel Vadot
82*ae5de77eSEmmanuel Vadot    firmware {
83*ae5de77eSEmmanuel Vadot      svc {
84*ae5de77eSEmmanuel Vadot        compatible = "intel,stratix10-svc";
85*ae5de77eSEmmanuel Vadot        method = "smc";
86*ae5de77eSEmmanuel Vadot        memory-region = <&service_reserved>;
87*ae5de77eSEmmanuel Vadot
88*ae5de77eSEmmanuel Vadot        fpga-mgr {
89*ae5de77eSEmmanuel Vadot          compatible = "intel,stratix10-soc-fpga-mgr";
90*ae5de77eSEmmanuel Vadot        };
91*ae5de77eSEmmanuel Vadot      };
92*ae5de77eSEmmanuel Vadot    };
93*ae5de77eSEmmanuel Vadot
94