Star64_linux/drivers/gpu/drm/tegra
Thierry Reding 77a0b09dd9 drm/tegra: vic: Load firmware on demand
Loading the firmware requires an allocation of IOVA space to make sure
that the VIC's Falcon microcontroller can read the firmware if address
translation via the SMMU is enabled.

However, the allocation currently happens at a time where the geometry
of an IOMMU domain may not have been initialized yet. This happens for
example on Tegra186 and later where an ARM SMMU is used. Domains which
are created by the ARM SMMU driver postpone the geometry setup until a
device is attached to the domain. This is because IOMMU domains aren't
attached to a specific IOMMU instance at allocation time and hence the
input address space, which defines the geometry, is not known yet.

Work around this by postponing the firmware load until it is needed at
the time where a channel is opened to the VIC. At this time the shared
IOMMU domain's geometry has been properly initialized.

As a byproduct this allows the Tegra DRM to be created in the absence
of VIC firmware, since the VIC initialization no longer fails if the
firmware can't be found.

Based on an earlier patch by Dmitry Osipenko <digetx@gmail.com>.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
2019-02-07 18:28:59 +01:00
..
dc.c drm/tegra: dc: Don't clean up unused display controller 2018-11-29 17:25:32 +01:00
dc.h drm/tegra: dc: Add Tegra194 support 2018-09-26 16:04:39 +02:00
dpaux.c drm/tegra: dpaux: Add Tegra194 support 2018-09-26 16:04:56 +02:00
dpaux.h
drm.c drm/tegra: Store parent pointer in Tegra DRM clients 2019-02-07 18:28:59 +01:00
drm.h drm/tegra: Store parent pointer in Tegra DRM clients 2019-02-07 18:28:59 +01:00
dsi.c drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00
dsi.h
falcon.c drm/tegra: falcon: Wait for memory scrubbing to complete 2018-11-29 17:11:49 +01:00
falcon.h
fb.c drm/tegra: Convert drm_atomic_helper_suspend/resume() 2018-09-18 16:53:54 +02:00
gem.c Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
gem.h
gr2d.c
gr2d.h
gr3d.c
gr3d.h
hda.c drm/tegra: hda: Extract HDA format parsing code 2019-01-16 13:10:20 +01:00
hda.h drm/tegra: hda: Extract HDA format parsing code 2019-01-16 13:10:20 +01:00
hdmi.c drm/tegra: hdmi: Fix audio to work with any pixel clock rate 2019-01-16 13:11:45 +01:00
hdmi.h
hub.c drm/tegra: hub: Enable all required clocks 2018-11-29 17:25:21 +01:00
hub.h drm/tegra: hub: Enable all required clocks 2018-11-29 17:25:21 +01:00
Kconfig
Makefile drm/tegra: hda: Extract HDA format parsing code 2019-01-16 13:10:20 +01:00
mipi-phy.c
mipi-phy.h
output.c drm/tegra: Refactor CEC support 2019-01-16 13:09:32 +01:00
plane.c
plane.h
rgb.c drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00
sor.c drm/tegra: hda: Extract HDA format parsing code 2019-01-16 13:10:20 +01:00
sor.h drm/tegra: sor: Support for audio over HDMI 2018-12-03 16:37:26 +01:00
trace.c
trace.h
vic.c drm/tegra: vic: Load firmware on demand 2019-02-07 18:28:59 +01:00
vic.h