From patchwork Fri Dec 22 22:11:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Christoph Niedermaier X-Patchwork-Id: 13503809 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 59D9EC46CD2 for ; Fri, 22 Dec 2023 22:13:39 +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: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:In-Reply-To:References: List-Owner; bh=SiV5EYki82F8w/SCAbIFnW2RhiRy7fUyqm3GYnYtWr4=; b=sNe+Rnwqc2zBB5 urgmdWCXyW5a0NGx5FrNE8P3eInvIN3thDt0Y5LKoX3R5gZ1KPYyXzK70pRsKK0g79oko/QzaPqDV N266KXU5JZtt6j7QDInIUWBw7vesC7GTLcPgPHYnnmGKXHJG5cV9UlC4N6cv5HQMJSVSL5ammCj1O aVx0ZEHY4iz2ZVc3UjSCkM9Rg1reAQ1HmDdFycXyFXxKsVc3pA+Ik1bp15L+lB3/0QuN9vhju3RBv HvxUOsn3HLg6ch5BCOoCQimFE3nNXz0P3oDd3WhIXRJ/JgG+2uNZfy+UnsiggVfTFv3bxne6AemKb yJCMc/Gi1KxOl94kSUqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rGnld-006ujF-0o; Fri, 22 Dec 2023 22:13:17 +0000 Received: from mx3.securetransport.de ([116.203.31.6]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rGnlY-006uiP-3C for linux-arm-kernel@lists.infradead.org; Fri, 22 Dec 2023 22:13:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dh-electronics.com; s=dhelectronicscom; t=1703283149; bh=aatfAjsSNUO7y7Q9Wy1AUoT3DISwI/m0IEd0eo5O/3w=; h=From:To:CC:Subject:Date:From; b=MOmpJC8r+ae4DEp09PmzqQf6VA99+5xettRkl4RmSkkXXjQbPDdVbrWnibWKdBrKr m+5dYThDsrqW9yTyXUvqQls11wTtBzTFzMAZ3uLAIOLUowKQSRC9br2dt2OPhjfw4B xEixqSK8XFUsZiinWrmvaiYVZV4vLBJK0EVGWBDPyhNG50hSnDAW93g7aVPSATqq22 h0tbl95/md/Cunwp+wNKo+V/Jra+gWDLRZYBCX1UyuaxmEBGqaQfAZspmsLOV26ujd NPF99u6rW9rGgfN45a4wRVcyQE0WhIgkarg+dQUUdvMqEhwIdVqQyhunEeX89jc0EX rI6y7KwtZ6Azw== From: Christoph Niedermaier To: , CC: Christoph Niedermaier , "Greg Kroah-Hartman" , Jiri Slaby , Shawn Guo , Marek Vasut , Fabio Estevam , Sascha Hauer , Pengutronix Kernel Team , NXP Linux Team , Sergey Organov , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , "Rob Herring" , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Tom Rix , Thomas Gleixner , Lukas Wunner Subject: [PATCH] serial: imx: Ensure that imx_uart_rs485_config() is called with enabled clock Date: Fri, 22 Dec 2023 23:11:01 +0100 Message-ID: <20231222221101.2380-1-cniedermaier@dh-electronics.com> X-klartext: yes MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231222_141313_267521_C52AFDFF X-CRM114-Status: GOOD ( 14.62 ) 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 There are register accesses in the function imx_uart_rs485_config(). The clock must be enabled for these accesses. This was ensured by calling it via the function uart_rs485_config() in the probe() function within the range where the clock is enabled. With the commit 7c7f9bc986e6 ("serial: Deassert Transmit Enable on probe in driver-specific way") it was removed from the probe() function and is now only called through the function uart_add_one_port() which is located at the end of the probe() function. But the clock is already switched off in this area. To ensure that the clock is enabled during register access, move the disabling of the clock to the very end of the probe() function. Fixes: 7c7f9bc986e6 ("serial: Deassert Transmit Enable on probe in driver-specific way") Signed-off-by: Christoph Niedermaier --- Cc: Greg Kroah-Hartman Cc: Jiri Slaby Cc: Shawn Guo Cc: Marek Vasut Cc: Fabio Estevam Cc: Sascha Hauer Cc: Pengutronix Kernel Team Cc: NXP Linux Team Cc: Sergey Organov Cc: "Uwe Kleine-König" Cc: Rob Herring Cc: "Ilpo Järvinen" Cc: Tom Rix Cc: Thomas Gleixner Cc: Lukas Wunner To: linux-serial@vger.kernel.org To: linux-arm-kernel@lists.infradead.org --- drivers/tty/serial/imx.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index e7e952bb7bb8..2ec2e8a55884 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -2419,8 +2419,6 @@ static int imx_uart_probe(struct platform_device *pdev) imx_uart_writel(sport, ucr3, UCR3); } - clk_disable_unprepare(sport->clk_ipg); - hrtimer_init(&sport->trigger_start_tx, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hrtimer_init(&sport->trigger_stop_tx, CLOCK_MONOTONIC, HRTIMER_MODE_REL); sport->trigger_start_tx.function = imx_trigger_start_tx; @@ -2467,7 +2465,11 @@ static int imx_uart_probe(struct platform_device *pdev) platform_set_drvdata(pdev, sport); - return uart_add_one_port(&imx_uart_uart_driver, &sport->port); + ret = uart_add_one_port(&imx_uart_uart_driver, &sport->port); + + clk_disable_unprepare(sport->clk_ipg); + + return ret; } static void imx_uart_remove(struct platform_device *pdev)