]> git.baikalelectronics.ru Git - kernel.git/commit
drm/tegra: dc: Don't set PLL clock to 0Hz
authorDmitry Osipenko <digetx@gmail.com>
Tue, 2 Mar 2021 13:15:06 +0000 (16:15 +0300)
committerThierry Reding <treding@nvidia.com>
Tue, 30 Mar 2021 17:37:20 +0000 (19:37 +0200)
commit6fca974a539b482881d83ed54eb96e32e026bc2a
treeb9409ee37de4ba274c863f43a7e20e5ea93c7bd0
parent219c9076286fd92026e818ab1375558e5b20649f
drm/tegra: dc: Don't set PLL clock to 0Hz

RGB output doesn't allow to change parent clock rate of the display and
PCLK rate is set to 0Hz in this case. The tegra_dc_commit_state() shall
not set the display clock to 0Hz since this change propagates to the
parent clock. The DISP clock is defined as a NODIV clock by the tegra-clk
driver and all NODIV clocks use the CLK_SET_RATE_PARENT flag.

This bug stayed unnoticed because by default PLLP is used as the parent
clock for the display controller and PLLP silently skips the erroneous 0Hz
rate changes because it always has active child clocks that don't permit
rate changes. The PLLP isn't acceptable for some devices that we want to
upstream (like Samsung Galaxy Tab and ASUS TF700T) due to a display panel
clock rate requirements that can't be fulfilled by using PLLP and then the
bug pops up in this case since parent clock is set to 0Hz, killing the
display output.

Don't touch DC clock if pclk=0 in order to fix the problem.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/dc.c