From patchwork Thu Sep 28 11:36:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 13402853 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0E409E732C8 for ; Thu, 28 Sep 2023 11:37:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FvtjdDz9m/QS8gEwMu4hKZk52BxzkdIoTBWNsNBCIy4=; b=yg548aIkB243xT wWXyMNPU7ChzcwVMmHVzj9aVBiNMBPuwig6KRAmcOAVqaK3WO5hvXys8+t7fzLXh9M6dekHzRa28i DzOJ8oC1xMLsJLtV6NMvJL6g9pKcZHMGKDWnx5/RmK0VkJWa0YZumEH7ImV2f2G+oDxxBGeJfrtPm 8UpCkrACow8mM0+cg0pB45BaH3dlUn0FrzaCV+OYkhZyqEZeWupx6AWEmYzb3ruRLTtdaGC6MHc2X own0LkYz/tCZKA7/RLRNB0fs1+h23oybaFMHcJxbcJcOZ0nX2F5oxkBaRQzgMMw7uucti8K7gT5J3 Hxq3HxL0Xn1hiGretdbQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qlpKF-003H48-2W; Thu, 28 Sep 2023 11:36:59 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qlpJq-003GhS-2v for linux-arm-kernel@lists.infradead.org; Thu, 28 Sep 2023 11:36:37 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qlpJm-0001s1-4n; Thu, 28 Sep 2023 13:36:30 +0200 Received: from [2a0a:edc0:0:1101:1d::28] (helo=dude02.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1qlpJl-009Z8S-N2; Thu, 28 Sep 2023 13:36:29 +0200 From: Lucas Stach To: Marek Vasut , Liu Ying Cc: Pengutronix Kernel Team , NXP Linux Team , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, patchwork-lst@pengutronix.de Subject: [PATCH v3 4/8] drm: lcdif: control display clock from CRTC enable/disable Date: Thu, 28 Sep 2023 13:36:25 +0200 Message-Id: <20230928113629.103188-4-l.stach@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230928113629.103188-1-l.stach@pengutronix.de> References: <20230928113629.103188-1-l.stach@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230928_043634_945003_639DE304 X-CRM114-Status: GOOD ( 12.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The display clock only required to be running when the CRTC is enabled, so we have well defined points in the DRM atomic sequence when this clock should be enabled or disabled. Signed-off-by: Lucas Stach --- v3: new patch --- drivers/gpu/drm/mxsfb/lcdif_drv.c | 4 ---- drivers/gpu/drm/mxsfb/lcdif_kms.c | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c b/drivers/gpu/drm/mxsfb/lcdif_drv.c index 18de2f17e249..38dfd307adc1 100644 --- a/drivers/gpu/drm/mxsfb/lcdif_drv.c +++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c @@ -306,8 +306,6 @@ static int __maybe_unused lcdif_rpm_suspend(struct device *dev) struct drm_device *drm = dev_get_drvdata(dev); struct lcdif_drm_private *lcdif = drm->dev_private; - /* These clock supply the DISPLAY CLOCK Domain */ - clk_disable_unprepare(lcdif->clk); /* These clock supply the System Bus, AXI, Write Path, LFIFO */ clk_disable_unprepare(lcdif->clk_disp_axi); /* These clock supply the Control Bus, APB, APBH Ctrl Registers */ @@ -325,8 +323,6 @@ static int __maybe_unused lcdif_rpm_resume(struct device *dev) clk_prepare_enable(lcdif->clk_axi); /* These clock supply the System Bus, AXI, Write Path, LFIFO */ clk_prepare_enable(lcdif->clk_disp_axi); - /* These clock supply the DISPLAY CLOCK Domain */ - clk_prepare_enable(lcdif->clk); return 0; } diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c b/drivers/gpu/drm/mxsfb/lcdif_kms.c index 6a292f4b332b..d43e3633bce0 100644 --- a/drivers/gpu/drm/mxsfb/lcdif_kms.c +++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c @@ -545,6 +545,9 @@ static void lcdif_crtc_atomic_enable(struct drm_crtc *crtc, writel(CTRLDESCL_HIGH0_4_ADDR_HIGH(upper_32_bits(paddr)), lcdif->base + LCDC_V8_CTRLDESCL_HIGH0_4); } + + clk_prepare_enable(lcdif->clk); + lcdif_enable_controller(lcdif); drm_crtc_vblank_on(crtc); @@ -561,6 +564,8 @@ static void lcdif_crtc_atomic_disable(struct drm_crtc *crtc, lcdif_disable_controller(lcdif); + clk_disable_unprepare(lcdif->clk); + spin_lock_irq(&drm->event_lock); event = crtc->state->event; if (event) {