162306a36Sopenharmony_ciIntel Service Layer Driver for Stratix10 SoC
262306a36Sopenharmony_ci============================================
362306a36Sopenharmony_ciIntel Stratix10 SoC is composed of a 64 bit quad-core ARM Cortex A53 hard
462306a36Sopenharmony_ciprocessor system (HPS) and Secure Device Manager (SDM). When the FPGA is
562306a36Sopenharmony_ciconfigured from HPS, there needs to be a way for HPS to notify SDM the
662306a36Sopenharmony_cilocation and size of the configuration data. Then SDM will get the
762306a36Sopenharmony_ciconfiguration data from that location and perform the FPGA configuration.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciTo meet the whole system security needs and support virtual machine requesting
1062306a36Sopenharmony_cicommunication with SDM, only the secure world of software (EL3, Exception
1162306a36Sopenharmony_ciLayer 3) can interface with SDM. All software entities running on other
1262306a36Sopenharmony_ciexception layers must channel through the EL3 software whenever it needs
1362306a36Sopenharmony_ciservice from SDM.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciIntel Stratix10 service layer driver, running at privileged exception level
1662306a36Sopenharmony_ci(EL1, Exception Layer 1), interfaces with the service providers and provides
1762306a36Sopenharmony_cithe services for FPGA configuration, QSPI, Crypto and warm reset. Service layer
1862306a36Sopenharmony_cidriver also manages secure monitor call (SMC) to communicate with secure monitor
1962306a36Sopenharmony_cicode running in EL3.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciRequired properties:
2262306a36Sopenharmony_ci-------------------
2362306a36Sopenharmony_ciThe svc node has the following mandatory properties, must be located under
2462306a36Sopenharmony_cithe firmware node.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci- compatible: "intel,stratix10-svc" or "intel,agilex-svc"
2762306a36Sopenharmony_ci- method: smc or hvc
2862306a36Sopenharmony_ci        smc - Secure Monitor Call
2962306a36Sopenharmony_ci        hvc - Hypervisor Call
3062306a36Sopenharmony_ci- memory-region:
3162306a36Sopenharmony_ci	phandle to the reserved memory node. See
3262306a36Sopenharmony_ci	Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
3362306a36Sopenharmony_ci	for details
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciExample:
3662306a36Sopenharmony_ci-------
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	reserved-memory {
3962306a36Sopenharmony_ci                #address-cells = <2>;
4062306a36Sopenharmony_ci                #size-cells = <2>;
4162306a36Sopenharmony_ci                ranges;
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci                service_reserved: svcbuffer@0 {
4462306a36Sopenharmony_ci                        compatible = "shared-dma-pool";
4562306a36Sopenharmony_ci                        reg = <0x0 0x0 0x0 0x1000000>;
4662306a36Sopenharmony_ci                        alignment = <0x1000>;
4762306a36Sopenharmony_ci                        no-map;
4862306a36Sopenharmony_ci                };
4962306a36Sopenharmony_ci        };
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	firmware {
5262306a36Sopenharmony_ci		svc {
5362306a36Sopenharmony_ci			compatible = "intel,stratix10-svc";
5462306a36Sopenharmony_ci			method = "smc";
5562306a36Sopenharmony_ci			memory-region = <&service_reserved>;
5662306a36Sopenharmony_ci		};
5762306a36Sopenharmony_ci	};
58