drm/tegra: Use atomic commit helpers

There's no reason not to use them, and they already get all the
semantics right, so rip out all of the custom code and replace it by the
helpers.

Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
Thierry Reding
2017-10-12 17:40:46 +02:00
parent 7116e9a802
commit 31b02caea3
4 changed files with 27 additions and 107 deletions

View File

@@ -1648,8 +1648,8 @@ static void tegra_dc_finish_page_flip(struct tegra_dc *dc)
{
struct drm_device *drm = dc->base.dev;
struct drm_crtc *crtc = &dc->base;
unsigned long flags, base;
struct tegra_bo *bo;
u64 base = 0, phys = 0;
unsigned long flags;
spin_lock_irqsave(&drm->event_lock, flags);
@@ -1658,19 +1658,24 @@ static void tegra_dc_finish_page_flip(struct tegra_dc *dc)
return;
}
bo = tegra_fb_get_plane(crtc->primary->fb, 0);
if (crtc->primary->fb) {
struct tegra_bo *bo = tegra_fb_get_plane(crtc->primary->fb, 0);
spin_lock(&dc->lock);
phys = bo->paddr + crtc->primary->fb->offsets[0];
/* check if new start address has been latched */
tegra_dc_writel(dc, WINDOW_A_SELECT, DC_CMD_DISPLAY_WINDOW_HEADER);
tegra_dc_writel(dc, READ_MUX, DC_CMD_STATE_ACCESS);
base = tegra_dc_readl(dc, DC_WINBUF_START_ADDR);
tegra_dc_writel(dc, 0, DC_CMD_STATE_ACCESS);
spin_lock(&dc->lock);
spin_unlock(&dc->lock);
/* check if new start address has been latched */
tegra_dc_writel(dc, WINDOW_A_SELECT, DC_CMD_DISPLAY_WINDOW_HEADER);
tegra_dc_writel(dc, READ_MUX, DC_CMD_STATE_ACCESS);
base = (u64)tegra_dc_readl(dc, DC_WINBUF_START_ADDR_HI) << 32;
base |= tegra_dc_readl(dc, DC_WINBUF_START_ADDR);
tegra_dc_writel(dc, 0, DC_CMD_STATE_ACCESS);
if (base == bo->paddr + crtc->primary->fb->offsets[0]) {
spin_unlock(&dc->lock);
}
if (base == phys) {
drm_crtc_send_vblank_event(crtc, dc->event);
drm_crtc_vblank_put(crtc);
dc->event = NULL;