From 363541e8eeed16fdf696252008ddee823730f82c Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Thu, 14 Dec 2017 13:50:19 +0100 Subject: [PATCH] drm/tegra: dc: Remove redundant spinlock The spinlock is only used to serialize accesses to the DC_CMD_INT_MASK register. However, this register is accesses either with interrupts masked (in tegra_crtc_atomic_enable()) or protected by the vbl_lock and vblank_time_lock spinlocks of the DRM device. Therefore, these accesses don't need any extra serialization and the lock can be removed. Signed-off-by: Thierry Reding --- drivers/gpu/drm/tegra/dc.c | 13 ++----------- drivers/gpu/drm/tegra/dc.h | 1 - 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index edae21197fc6..cd84d8514d48 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1261,31 +1261,23 @@ static u32 tegra_dc_get_vblank_counter(struct drm_crtc *crtc) static int tegra_dc_enable_vblank(struct drm_crtc *crtc) { struct tegra_dc *dc = to_tegra_dc(crtc); - unsigned long value, flags; - - spin_lock_irqsave(&dc->lock, flags); + u32 value; value = tegra_dc_readl(dc, DC_CMD_INT_MASK); value |= VBLANK_INT; tegra_dc_writel(dc, value, DC_CMD_INT_MASK); - spin_unlock_irqrestore(&dc->lock, flags); - return 0; } static void tegra_dc_disable_vblank(struct drm_crtc *crtc) { struct tegra_dc *dc = to_tegra_dc(crtc); - unsigned long value, flags; - - spin_lock_irqsave(&dc->lock, flags); + u32 value; value = tegra_dc_readl(dc, DC_CMD_INT_MASK); value &= ~VBLANK_INT; tegra_dc_writel(dc, value, DC_CMD_INT_MASK); - - spin_unlock_irqrestore(&dc->lock, flags); } static const struct drm_crtc_funcs tegra_crtc_funcs = { @@ -2033,7 +2025,6 @@ static int tegra_dc_probe(struct platform_device *pdev) dc->soc = of_device_get_match_data(&pdev->dev); - spin_lock_init(&dc->lock); INIT_LIST_HEAD(&dc->list); dc->dev = &pdev->dev; diff --git a/drivers/gpu/drm/tegra/dc.h b/drivers/gpu/drm/tegra/dc.h index d680027fa272..7dd02f07244f 100644 --- a/drivers/gpu/drm/tegra/dc.h +++ b/drivers/gpu/drm/tegra/dc.h @@ -71,7 +71,6 @@ struct tegra_dc { struct host1x_client client; struct host1x_syncpt *syncpt; struct device *dev; - spinlock_t lock; struct drm_crtc base; unsigned int powergate;