Message ID | 20210929222805.16511-2-digetx@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | NVIDIA Tegra display driver improvements | expand |
On Thu, Sep 30, 2021 at 01:28:04AM +0300, Dmitry Osipenko wrote: > Asus TF700T tablet uses TC358768 DPI->DSI bridge that sits between Tegra's > DPI output and display panel input. Bridge requires to have stable PCLK > output before RGB encoder is enabled because it uses PCLK by itself to > clock internal logic and bridge is programmed before Tegra's encoder is > enabled. Hence the PCLK clock shifter must be programmed when CRTC is > enabled, otherwise clock is unstable and bridge hangs because of it. > Move the shifter programming from RGB encoder into CRTC. > > Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com> #TF700T > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/gpu/drm/tegra/dc.c | 6 ++++++ > drivers/gpu/drm/tegra/rgb.c | 4 ---- > 2 files changed, 6 insertions(+), 4 deletions(-) Applied, thanks. Thierry
diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index a29d64f87563..a582ce28b632 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -2107,6 +2107,12 @@ static void tegra_crtc_atomic_enable(struct drm_crtc *crtc, tegra_dc_writel(dc, value, DC_COM_RG_UNDERFLOW); } + if (dc->rgb) { + /* XXX: parameterize? */ + value = SC0_H_QUALIFIER_NONE | SC1_H_QUALIFIER_NONE; + tegra_dc_writel(dc, value, DC_DISP_SHIFT_CLOCK_OPTIONS); + } + tegra_dc_commit(dc); drm_crtc_vblank_on(crtc); diff --git a/drivers/gpu/drm/tegra/rgb.c b/drivers/gpu/drm/tegra/rgb.c index 606c78a2b988..933e14e4609f 100644 --- a/drivers/gpu/drm/tegra/rgb.c +++ b/drivers/gpu/drm/tegra/rgb.c @@ -116,10 +116,6 @@ static void tegra_rgb_encoder_enable(struct drm_encoder *encoder) DISP_ORDER_RED_BLUE; tegra_dc_writel(rgb->dc, value, DC_DISP_DISP_INTERFACE_CONTROL); - /* XXX: parameterize? */ - value = SC0_H_QUALIFIER_NONE | SC1_H_QUALIFIER_NONE; - tegra_dc_writel(rgb->dc, value, DC_DISP_SHIFT_CLOCK_OPTIONS); - tegra_dc_commit(rgb->dc); }