1*c66ec88fSEmmanuel VadotIntel Service Layer Driver for Stratix10 SoC 2*c66ec88fSEmmanuel Vadot============================================ 3*c66ec88fSEmmanuel VadotIntel Stratix10 SoC is composed of a 64 bit quad-core ARM Cortex A53 hard 4*c66ec88fSEmmanuel Vadotprocessor system (HPS) and Secure Device Manager (SDM). When the FPGA is 5*c66ec88fSEmmanuel Vadotconfigured from HPS, there needs to be a way for HPS to notify SDM the 6*c66ec88fSEmmanuel Vadotlocation and size of the configuration data. Then SDM will get the 7*c66ec88fSEmmanuel Vadotconfiguration data from that location and perform the FPGA configuration. 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel VadotTo meet the whole system security needs and support virtual machine requesting 10*c66ec88fSEmmanuel Vadotcommunication with SDM, only the secure world of software (EL3, Exception 11*c66ec88fSEmmanuel VadotLayer 3) can interface with SDM. All software entities running on other 12*c66ec88fSEmmanuel Vadotexception layers must channel through the EL3 software whenever it needs 13*c66ec88fSEmmanuel Vadotservice from SDM. 14*c66ec88fSEmmanuel Vadot 15*c66ec88fSEmmanuel VadotIntel Stratix10 service layer driver, running at privileged exception level 16*c66ec88fSEmmanuel Vadot(EL1, Exception Layer 1), interfaces with the service providers and provides 17*c66ec88fSEmmanuel Vadotthe services for FPGA configuration, QSPI, Crypto and warm reset. Service layer 18*c66ec88fSEmmanuel Vadotdriver also manages secure monitor call (SMC) to communicate with secure monitor 19*c66ec88fSEmmanuel Vadotcode running in EL3. 20*c66ec88fSEmmanuel Vadot 21*c66ec88fSEmmanuel VadotRequired properties: 22*c66ec88fSEmmanuel Vadot------------------- 23*c66ec88fSEmmanuel VadotThe svc node has the following mandatory properties, must be located under 24*c66ec88fSEmmanuel Vadotthe firmware node. 25*c66ec88fSEmmanuel Vadot 26*c66ec88fSEmmanuel Vadot- compatible: "intel,stratix10-svc" or "intel,agilex-svc" 27*c66ec88fSEmmanuel Vadot- method: smc or hvc 28*c66ec88fSEmmanuel Vadot smc - Secure Monitor Call 29*c66ec88fSEmmanuel Vadot hvc - Hypervisor Call 30*c66ec88fSEmmanuel Vadot- memory-region: 31*c66ec88fSEmmanuel Vadot phandle to the reserved memory node. See 32*c66ec88fSEmmanuel Vadot Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 33*c66ec88fSEmmanuel Vadot for details 34*c66ec88fSEmmanuel Vadot 35*c66ec88fSEmmanuel VadotExample: 36*c66ec88fSEmmanuel Vadot------- 37*c66ec88fSEmmanuel Vadot 38*c66ec88fSEmmanuel Vadot reserved-memory { 39*c66ec88fSEmmanuel Vadot #address-cells = <2>; 40*c66ec88fSEmmanuel Vadot #size-cells = <2>; 41*c66ec88fSEmmanuel Vadot ranges; 42*c66ec88fSEmmanuel Vadot 43*c66ec88fSEmmanuel Vadot service_reserved: svcbuffer@0 { 44*c66ec88fSEmmanuel Vadot compatible = "shared-dma-pool"; 45*c66ec88fSEmmanuel Vadot reg = <0x0 0x0 0x0 0x1000000>; 46*c66ec88fSEmmanuel Vadot alignment = <0x1000>; 47*c66ec88fSEmmanuel Vadot no-map; 48*c66ec88fSEmmanuel Vadot }; 49*c66ec88fSEmmanuel Vadot }; 50*c66ec88fSEmmanuel Vadot 51*c66ec88fSEmmanuel Vadot firmware { 52*c66ec88fSEmmanuel Vadot svc { 53*c66ec88fSEmmanuel Vadot compatible = "intel,stratix10-svc"; 54*c66ec88fSEmmanuel Vadot method = "smc"; 55*c66ec88fSEmmanuel Vadot memory-region = <&service_reserved>; 56*c66ec88fSEmmanuel Vadot }; 57*c66ec88fSEmmanuel Vadot }; 58