| * Firewall and privilege register settings in device tree |
| |
| Required properties: |
| -------------------- |
| |
| - compatible: should contain "intel,socfpga-dtreg" |
| - reg: Physical base address and size of block register. |
| - intel,offset-settings: 32-bit offset address of block register, |
| followed by 32-bit value settings and |
| the masking bits, only masking bit |
| set to 1 allows modification. |
| |
| The device tree node which describes secure and privilege register access |
| configuration in compile time. |
| |
| Most of these registers are expected to work except for the case which some |
| registers configuration are required for granting access to some other |
| registers, for example CCU registers have to be properly configured before |
| allowing register configuration access to fpga2sdram firewall as shown in |
| below example. |
| |
| Some registers depend on runtime data for proper configuration are expected |
| to be part of driver that generating these data for example configuration for |
| soc_noc_fw_ddr_mpu_inst_0_ddr_scr block register depend on DDR size parsed from |
| memory device tree node. |
| |
| Please refer details of tested examples below for both fpga2sdram and QoS |
| configuration with default reset value and the comments. |
| |
| Example: |
| -------- |
| |
| Configuration for multiple dtreg node support in device tree: |
| |
| socfpga_dtreg0: socfpga-dtreg0 { |
| compatible = "intel,socfpga-dtreg"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| bootph-all; |
| |
| coh_cpu0_bypass_OC_Firewall_main_Firewall@f7100200 { |
| reg = <0xf7100200 0x00000014>; |
| intel,offset-settings = |
| /* |
| * Disable ocram security at CCU for |
| * non secure access |
| */ |
| <0x0000004 0x8000ffff 0xe007ffff>, |
| <0x0000008 0x8000ffff 0xe007ffff>, |
| <0x000000c 0x8000ffff 0xe007ffff>, |
| <0x0000010 0x8000ffff 0xe007ffff>; |
| bootph-all; |
| }; |
| }; |
| |
| socfpga_dtreg1: socfpga-dtreg1 { |
| compatible = "intel,socfpga-dtreg"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| bootph-all; |
| |
| soc_noc_fw_mpfe_csr_inst_0_mpfe_scr@f8020000 { |
| reg = <0xf8020000 0x0000001c>; |
| intel,offset-settings = |
| /* Disable MPFE firewall for SMMU */ |
| <0x00000000 0x00010101 0x00010101>, |
| /* |
| * Disable MPFE firewall for HMC |
| * adapter |
| */ |
| <0x00000004 0x00000001 0x00010101>; |
| bootph-all; |
| }; |
| }; |
| |
| To call the nodes use: |
| |
| ret = uclass_get_device_by_name(UCLASS_NOP, "socfpga-dtreg0", &dev); |
| ret = uclass_get_device_by_name(UCLASS_NOP, "socfpga-dtreg1", &dev); |
| |