diff options
author | Thierry Reding <treding@nvidia.com> | 2019-02-08 13:09:49 +0100 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2019-10-28 11:18:35 +0100 |
commit | dd631e8ac90f08c37636fe9e6d12fc7bdf7f429a (patch) | |
tree | 753f9159e034385ca31aac974992c555edc9702f /drivers/gpu/drm/tegra/vic.c | |
parent | 0301196b5719341ba98223eed9a0e6ea4eab615a (diff) |
drm/tegra: vic: Skip stream ID programming without IOMMU
If VIC is not behind an IOMMU, don't touch any of the registers related
to stream ID programming.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/gpu/drm/tegra/vic.c')
-rw-r--r-- | drivers/gpu/drm/tegra/vic.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/tegra/vic.c b/drivers/gpu/drm/tegra/vic.c index 8d98b0cfc47b..748798f2cdc8 100644 --- a/drivers/gpu/drm/tegra/vic.c +++ b/drivers/gpu/drm/tegra/vic.c @@ -97,6 +97,9 @@ static int vic_runtime_suspend(struct device *dev) static int vic_boot(struct vic *vic) { +#ifdef CONFIG_IOMMU_API + struct iommu_fwspec *spec = dev_iommu_fwspec_get(vic->dev); +#endif u32 fce_ucode_size, fce_bin_data_offset; void *hdr; int err = 0; @@ -105,15 +108,14 @@ static int vic_boot(struct vic *vic) return 0; #ifdef CONFIG_IOMMU_API - if (vic->config->supports_sid) { - struct iommu_fwspec *spec = dev_iommu_fwspec_get(vic->dev); + if (vic->config->supports_sid && spec) { u32 value; value = TRANSCFG_ATT(1, TRANSCFG_SID_FALCON) | TRANSCFG_ATT(0, TRANSCFG_SID_HW); vic_writel(vic, value, VIC_TFBIF_TRANSCFG); - if (spec && spec->num_ids > 0) { + if (spec->num_ids > 0) { value = spec->ids[0] & 0xffff; vic_writel(vic, value, VIC_THI_STREAMID0); |