aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2018-03-23 10:44:40 -0700
committerVarun Wadekar <vwadekar@nvidia.com>2020-01-23 09:02:29 -0800
commitdb891f32f6c2100beb6c7d8eedcab2df57df632f (patch)
tree59db68cb28a53c34e6678dd9f1b6281fddbc8955
parentceb12020fb05001777b0868b5e064dd26fd4895a (diff)
downloadplatform_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.c27
-rw-r--r--plat/nvidia/tegra/soc/t194/plat_setup.c27
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 */