Skip to content

Commit

Permalink
drm/tegra: dc: Add missing call to drm_vblank_on()
Browse files Browse the repository at this point in the history
When the CRTC is enabled, make sure the VBLANK machinery is enabled.
Failure to do so will cause drm_vblank_get() to not enable the VBLANK on
the CRTC and VBLANK-synchronized page-flips won't work.

While at it, get rid of the legacy drm_vblank_pre_modeset() and
drm_vblank_post_modeset() calls that are replaced by drm_vblank_on()
and drm_vblank_off().

Reported-by: Alexandre Courbot <acourbot@nvidia.com>
Tested-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
  • Loading branch information
Thierry Reding committed Nov 13, 2014
1 parent f114040 commit 8ff64c1
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions drivers/gpu/drm/tegra/dc.c
Original file line number Diff line number Diff line change
Expand Up @@ -736,7 +736,6 @@ static const struct drm_crtc_funcs tegra_crtc_funcs = {

static void tegra_crtc_disable(struct drm_crtc *crtc)
{
struct tegra_dc *dc = to_tegra_dc(crtc);
struct drm_device *drm = crtc->dev;
struct drm_plane *plane;

Expand All @@ -752,7 +751,7 @@ static void tegra_crtc_disable(struct drm_crtc *crtc)
}
}

drm_vblank_off(drm, dc->pipe);
drm_crtc_vblank_off(crtc);
}

static bool tegra_crtc_mode_fixup(struct drm_crtc *crtc,
Expand Down Expand Up @@ -841,8 +840,6 @@ static int tegra_crtc_mode_set(struct drm_crtc *crtc,
u32 value;
int err;

drm_vblank_pre_modeset(crtc->dev, dc->pipe);

err = tegra_crtc_setup_clk(crtc, mode);
if (err) {
dev_err(dc->dev, "failed to setup clock for CRTC: %d\n", err);
Expand Down Expand Up @@ -896,6 +893,8 @@ static void tegra_crtc_prepare(struct drm_crtc *crtc)
unsigned int syncpt;
unsigned long value;

drm_crtc_vblank_off(crtc);

/* hardware initialization */
reset_control_deassert(dc->rst);
usleep_range(10000, 20000);
Expand Down Expand Up @@ -943,7 +942,7 @@ static void tegra_crtc_commit(struct drm_crtc *crtc)
value = GENERAL_ACT_REQ | WIN_A_ACT_REQ;
tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);

drm_vblank_post_modeset(crtc->dev, dc->pipe);
drm_crtc_vblank_on(crtc);
}

static void tegra_crtc_load_lut(struct drm_crtc *crtc)
Expand Down

0 comments on commit 8ff64c1

Please sign in to comment.