From patchwork Tue Dec 29 14:51:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adam Ford X-Patchwork-Id: 11992449 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69214C433E0 for ; Tue, 29 Dec 2020 14:53:54 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 22057207CF for ; Tue, 29 Dec 2020 14:53:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 22057207CF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject: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=s6hYfEGBhWLbQsJ4Yxu0pGj8rj8Eupd6kMMiBIBnjWc=; b=d39wzbsvlC3kRq9U8ln22FLr+p fFVHkRwzH/F2PokiLmGJ53JxDVNASn0VqwUnX61qL8AgxOk4HGxxMN7NvOa3YIysOWdxNbqeR4DhK rq+kG2hjFb0nMYR2Z9v9z6Eh59IpuXr23SDAyLme6r7e6wdu7RzyBJ4CceMorwTbJQgZIFqJ2MX8Y Smdz5vNrfT2AxkHJngaBI+ldsB+QdQMxWmnNk1gNGXE4ah4e0JrFAPAxDVkGOBaByKyOtZtd1LnMe EEcaN4EidpwwarhqFPkFdxZQCs6BdcuHC1rI4Jd46X6Ef5t4ymv84TIsduVptY9y1vZUKN/gjVSfO XqtkmU0w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuGLk-0002Qb-JL; Tue, 29 Dec 2020 14:51:48 +0000 Received: from mail-il1-x130.google.com ([2607:f8b0:4864:20::130]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuGLh-0002PM-Ee for linux-arm-kernel@lists.infradead.org; Tue, 29 Dec 2020 14:51:46 +0000 Received: by mail-il1-x130.google.com with SMTP id r17so12296331ilo.11 for ; Tue, 29 Dec 2020 06:51:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jb+nE3BcvsGpUV61L75GL3+vz8aPHA/Rr7IXVY4Y9Sg=; b=sf1Umk4yFlzhrtePM4EaHqU2uI9dgFC1csHURywFJxLWNM6w3wjWI4FQONisuHByrm fFcI3xkTRtxiuIdrqZKXRql7YcUbWRXt3O5EHQLA3oPjLLszVx+UW2chEfMnIlgmyMTd MyWWs9D6hN0R1uTZohnHgYJ1SSy9nCGNKOLqhktgwz9h/317K1p1vi81jzbp/EQFlJ3T SfnSXILRQ3LO6FZJGKtw9DUnK+8tc+rsmxGynSVwE2fwvzLnMjP7qDG9XmcE3V3iFlDu 0ruhTQ/qiTQ2UXQkEk5DiI8IYjiUCyCkObx6wD67x8HK1y6KqgTx42i/CAkBUbIQTAwE AJ5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jb+nE3BcvsGpUV61L75GL3+vz8aPHA/Rr7IXVY4Y9Sg=; b=ANhTMdhifQl9VDajYu5919xO6eoRKALXFDvYRN26Sp9OueGXjV76lxI54Lx02HWGgC vRGweUfVLc0El/zpjPkXwcWpFls5ykP/Jxxow3GC7C04JV3XFXyoZiA8eqmpria7TOxY bHv66C5IJDDJjYX+smy2uQJT/NTGWP68YLpFNtg/sKP7f6ZyfWkmPUfso/rvr83o+mSy DecQYTWJvkH/Z9DjA7W29AKB9x87bQETj80xANUKB7YEOyBaUtuNEYKvRM93W316QXak iCJr2DhxGFsrMYYZzV1vTWy8w7yJLv5U+zsa+R2mHaeaWNBPs74cVQBXyb1a/mQ+w5/D s6iQ== X-Gm-Message-State: AOAM531Rv7T866Bohy6aw+jsWDxLNzA5LVqheyqyHsxdCz4PEYecJGNU GWB91X28OAR91gYCJIlNzZRyBcRAzSSFB0K1 X-Google-Smtp-Source: ABdhPJzFgJthD4igIhE/FqcMN7qamBnRIXe2+YhMXFNeLtl2AunejbpHDdpHNuhqZ308IxuSIX4x1Q== X-Received: by 2002:a92:91d7:: with SMTP id e84mr47894935ill.159.1609253502363; Tue, 29 Dec 2020 06:51:42 -0800 (PST) Received: from aford-IdeaCentre-A730.lan ([2601:448:8400:9e8:f45d:df49:9a4c:4914]) by smtp.gmail.com with ESMTPSA id o195sm29397219ila.38.2020.12.29.06.51.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Dec 2020 06:51:41 -0800 (PST) From: Adam Ford To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] clk: imx: enable the earlycon uart clocks by parsing from dt Date: Tue, 29 Dec 2020 08:51:28 -0600 Message-Id: <20201229145130.2680442-1-aford173@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201229_095145_526014_9E8AFE15 X-CRM114-Status: GOOD ( 15.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linus Walleij , Fabio Estevam , Fugang Duan , Stephen Boyd , Shawn Guo , Michael Turquette , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, NXP Linux Team , Pengutronix Kernel Team , Adam Ford , Sascha Hauer , Jerome Brunet Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Remove the earlycon uart clocks that are hard cord in platforms clock driver, instead of parsing the earlycon uart port from dt and enable these clocks from clock property in dt node. Fixes: 9461f7b33d11c ("clk: fix CLK_SET_RATE_GATE with clock rate protection") Signed-off-by: Fugang Duan Signed-off-by: Adam Ford Reported-by: kernel test robot --- Based on NXP's code base and adapted for 5.11-rc1. https://source.codeaurora.org/external/imx/linux-imx/commit/drivers/clk/imx/clk.c?h=imx_5.4.47_2.2.0&id=754ae82cc55b7445545fc2f092a70e0f490e9c1b The original signed-off was retained. Added the fixes tag. --- drivers/clk/imx/clk.c | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c index 47882c51cb85..c32b46890945 100644 --- a/drivers/clk/imx/clk.c +++ b/drivers/clk/imx/clk.c @@ -148,7 +148,7 @@ void imx_cscmr1_fixup(u32 *val) #ifndef MODULE static int imx_keep_uart_clocks; -static struct clk ** const *imx_uart_clocks; +static bool imx_uart_clks_on; static int __init imx_keep_uart_clocks_param(char *str) { @@ -161,25 +161,40 @@ __setup_param("earlycon", imx_keep_uart_earlycon, __setup_param("earlyprintk", imx_keep_uart_earlyprintk, imx_keep_uart_clocks_param, 0); -void imx_register_uart_clocks(struct clk ** const clks[]) +static void imx_earlycon_uart_clks_onoff(bool is_on) { - if (imx_keep_uart_clocks) { - int i; + struct clk *uart_clk; + int i = 0; - imx_uart_clocks = clks; - for (i = 0; imx_uart_clocks[i]; i++) - clk_prepare_enable(*imx_uart_clocks[i]); - } + if (!imx_keep_uart_clocks || (!is_on && !imx_uart_clks_on)) + return; + + /* only support dt */ + if (!of_stdout) + return; + + do { + uart_clk = of_clk_get(of_stdout, i++); + if (IS_ERR(uart_clk)) + break; + + if (is_on) + clk_prepare_enable(uart_clk); + else + clk_disable_unprepare(uart_clk); + } while (true); + + if (is_on) + imx_uart_clks_on = true; +} +void imx_register_uart_clocks(struct clk ** const clks[]) +{ + imx_earlycon_uart_clks_onoff(true); } static int __init imx_clk_disable_uart(void) { - if (imx_keep_uart_clocks && imx_uart_clocks) { - int i; - - for (i = 0; imx_uart_clocks[i]; i++) - clk_disable_unprepare(*imx_uart_clocks[i]); - } + imx_earlycon_uart_clks_onoff(false); return 0; }