linux-stable/drivers/gpu/drm/tegra
Thierry Reding 180b46ecdc drm/tegra: sor: Reset the SOR if possible
If the SOR is already up and running when the kernel driver is probed,
setting a mode will typically fail. This can be seen for example on
Jetson TX2. Under certain circumstances the generic power domain code
will cause the SOR to be reset. However, if the power domain is never
powered off (this can happen if the HDA controller is enabled, which
is part of the same power domain as the SOR), then the SOR will end up
not getting reset and fail to properly set a mode.

To work around this, try to get the reset control and assert/deassert
it, irrespective of whether or not a generic power domain is attached
to the SOR. On platforms where the kernel implements generic power
domains (up to Tegra210) this will fail, because the power domain will
already have acquired an exclusive reference to the reset control. But
on recent platforms there the BPMP provides an ABI to control power
domains, it's possible to acquire the reset control from SOR and use
it to put the SOR into a known good state at probe time.

The proper solution for this is to make the SOR driver capable of
dealing with hardware that's already up and running (by first grace-
fully shutting it down, or perhaps by seamlessly transitioning to the
kernel driver and taking over the running display configuration). That
is fairly involved, though, so we'll go with this quickfix for now.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2018-12-06 18:58:32 +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: vic: Add Tegra194 support 2018-11-29 17:11:50 +01:00
drm.h drm/tegra: Convert drm_atomic_helper_suspend/resume() 2018-09-18 16:53:54 +02: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 drm/tegra: gem: Make __tegra_gem_mmap() available more widely 2018-03-08 14:38:30 +01:00
gr2d.c drm/tegra: gr2d: Track interface version 2018-05-18 22:00:13 +02:00
gr2d.h
gr3d.c drm/tegra: gr3d: Track interface version 2018-05-18 22:00:25 +02:00
gr3d.h
hdmi.c drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02: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: Add Tegra186 display hub support 2017-12-13 14:16:37 +01:00
mipi-phy.c
mipi-phy.h
output.c drm: drop _mode_ from update_edit_property() 2018-07-13 18:40:27 +02:00
plane.c drm/tegra: dc: Support rotation property 2018-05-18 21:56:21 +02:00
plane.h drm/tegra: dc: Support rotation property 2018-05-18 21:56:21 +02:00
rgb.c drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00
sor.c drm/tegra: sor: Reset the SOR if possible 2018-12-06 18:58:32 +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: Add Tegra194 support 2018-11-29 17:11:50 +01:00
vic.h