drm/tegra: dc: Support memory bandwidth management
authorDmitry Osipenko <digetx@gmail.com>
Tue, 1 Jun 2021 04:21:07 +0000 (07:21 +0300)
committerThierry Reding <treding@nvidia.com>
Fri, 13 Aug 2021 10:30:33 +0000 (12:30 +0200)
commit04d5d5df9df79f9045e76404775fc8a084aac23d
treea6da54ad99589d0f23be32792103211c12a4ec20
parentef531d01663a99981c4496a53f06935bead938a8
drm/tegra: dc: Support memory bandwidth management

Display controller (DC) performs isochronous memory transfers, and thus,
has a requirement for a minimum memory bandwidth that shall be fulfilled,
otherwise framebuffer data can't be fetched fast enough and this results
in a DC's data-FIFO underflow that follows by a visual corruption.

The Memory Controller drivers provide facility for memory bandwidth
management via interconnect API. Let's wire up the interconnect API
support to the DC driver in order to fix the distorted display output
on T30 Ouya, T124 TK1 and other Tegra devices.

Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # PAZ00 T20 and TK1 T124
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
[treding@nvidia.com: unbreak Tegra186+ display support]
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/Kconfig
drivers/gpu/drm/tegra/dc.c
drivers/gpu/drm/tegra/dc.h
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/tegra/plane.c
drivers/gpu/drm/tegra/plane.h