summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/tegra/hub.h
Commit message (Collapse)AuthorAgeFilesLines
* drm/tegra: hub: Enable all required clocksThierry Reding2018-11-291-0/+3
| | | | | | | | | | | | | The display architecture on Tegra186 and Tegra194 requires that there be some valid clock on all domains before accessing any display register. A further requirement is that in addition to the host1x, hub, disp and dsc clocks, all the head clocks (pclk0-2 on Tegra186 or pclk0-3 on Tegra194) must also be enabled. Implement this logic within the display hub driver to ensure the clocks are always enabled at the right time. Signed-off-by: Thierry Reding <treding@nvidia.com>
* drm/tegra: hub: Add Tegra194 supportThierry Reding2018-09-261-0/+1
| | | | | | | | The display hub integrated into Tegra194 is almost identical to the one found on Tegra186. However, it doesn't support DSC (display stream compression) so it isn't fully compatible. Signed-off-by: Thierry Reding <treding@nvidia.com>
* drm/tegra: hub: Use private object for global stateThierry Reding2018-03-171-0/+17
| | | | | | | | Rather than subclass the global atomic state to store the hub display clock and rate, create a private object and store this data in its state. Signed-off-by: Thierry Reding <treding@nvidia.com>
* drm/tegra: dc: Use direct offset to plane registersThierry Reding2017-12-211-1/+0
| | | | | | | | | | | Traditionally, windows were accessed indirectly, through a register selection window that required a global register to be programmed with the index of the window to access. Since the global register could be written from modesetting functions as well as the interrupt handler concurrently, accesses had to be serialized using a lock. Using direct accesses to the window registers the lock can be avoided. Signed-off-by: Thierry Reding <treding@nvidia.com>
* drm/tegra: Add Tegra186 display hub supportThierry Reding2017-12-131-0/+82
The display architecture has changed in several significant ways with the new Tegra186 SoC. Shared between all display controllers is a set of common resources referred to as the display hub. The hub generates accesses to memory and feeds them into various composition pipelines, each of which being a window that can be assigned to arbitrary heads. Atomic state is subclassed in order to track the global bandwidth requirements and select and adjust the hub clocks appropriately. The plane code is shared to a large degree with earlier SoC generations, except where the programming differs. Signed-off-by: Thierry Reding <treding@nvidia.com>