diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2018-03-23 10:44:40 -0700 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2020-01-23 09:02:29 -0800 |
commit | db891f32f6c2100beb6c7d8eedcab2df57df632f (patch) | |
tree | 59db68cb28a53c34e6678dd9f1b6281fddbc8955 | |
parent | ceb12020fb05001777b0868b5e064dd26fd4895a (diff) | |
download | platform_external_arm-trusted-firmware-db891f32f6c2100beb6c7d8eedcab2df57df632f.tar.gz platform_external_arm-trusted-firmware-db891f32f6c2100beb6c7d8eedcab2df57df632f.tar.bz2 platform_external_arm-trusted-firmware-db891f32f6c2100beb6c7d8eedcab2df57df632f.zip |
Tegra194: access XUSB_PADCTL registers on Si/FPGA platforms
Many simulation/emulation platforms do not support this hardware block
leading to SErrors during register accesses.
This patch conditionally accesses the registers from this block only
on actual Si and FPGA platforms.
Change-Id: Ic22817a8c9f81978ba88c5362bfd734a0040d35d
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
-rw-r--r-- | plat/nvidia/tegra/soc/t194/plat_psci_handlers.c | 27 | ||||
-rw-r--r-- | plat/nvidia/tegra/soc/t194/plat_setup.c | 27 |
2 files changed, 30 insertions, 24 deletions
diff --git a/plat/nvidia/tegra/soc/t194/plat_psci_handlers.c b/plat/nvidia/tegra/soc/t194/plat_psci_handlers.c index 5e27455ec..cc8be128a 100644 --- a/plat/nvidia/tegra/soc/t194/plat_psci_handlers.c +++ b/plat/nvidia/tegra/soc/t194/plat_psci_handlers.c @@ -430,18 +430,21 @@ int32_t tegra_soc_pwr_domain_on_finish(const psci_power_state_t *target_state) * in above registers to support both virtualization and * non-virtualization platforms */ - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_HOST); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_0, TEGRA_SID_XUSB_VF0); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_1, TEGRA_SID_XUSB_VF1); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_2, TEGRA_SID_XUSB_VF2); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_3, TEGRA_SID_XUSB_VF3); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_DEV_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_DEV); + if (tegra_platform_is_silicon() || tegra_platform_is_fpga()) { + + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_HOST); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_0, TEGRA_SID_XUSB_VF0); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_1, TEGRA_SID_XUSB_VF1); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_2, TEGRA_SID_XUSB_VF2); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_3, TEGRA_SID_XUSB_VF3); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_DEV_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_DEV); + } /* * Reset power state info for the last core doing SC7 diff --git a/plat/nvidia/tegra/soc/t194/plat_setup.c b/plat/nvidia/tegra/soc/t194/plat_setup.c index d4918d2e2..c064bdf77 100644 --- a/plat/nvidia/tegra/soc/t194/plat_setup.c +++ b/plat/nvidia/tegra/soc/t194/plat_setup.c @@ -233,18 +233,21 @@ void plat_early_platform_setup(void) * above registers to support both virtualization and * non-virtualization platforms */ - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_HOST); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_0, TEGRA_SID_XUSB_VF0); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_1, TEGRA_SID_XUSB_VF1); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_2, TEGRA_SID_XUSB_VF2); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_HOST_AXI_STREAMID_VF_3, TEGRA_SID_XUSB_VF3); - mmio_write_32(TEGRA_XUSB_PADCTL_BASE + - XUSB_PADCTL_DEV_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_DEV); + if (tegra_platform_is_silicon() || tegra_platform_is_fpga()) { + + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_HOST); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_0, TEGRA_SID_XUSB_VF0); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_1, TEGRA_SID_XUSB_VF1); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_2, TEGRA_SID_XUSB_VF2); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_HOST_AXI_STREAMID_VF_3, TEGRA_SID_XUSB_VF3); + mmio_write_32(TEGRA_XUSB_PADCTL_BASE + + XUSB_PADCTL_DEV_AXI_STREAMID_PF_0, TEGRA_SID_XUSB_DEV); + } } /* Secure IRQs for Tegra194 */ |