Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp318761rwe; Wed, 24 Aug 2022 01:16:04 -0700 (PDT) X-Google-Smtp-Source: AA6agR5ZUpzHkp0zDMnfsQcX+fCp6fJdCaiF7p0DF300ZYd09wundmeuEK15AkpQjy5dKLfGBCHa X-Received: by 2002:a17:907:7f9e:b0:73c:6f39:7399 with SMTP id qk30-20020a1709077f9e00b0073c6f397399mr2129805ejc.358.1661328963836; Wed, 24 Aug 2022 01:16:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661328963; cv=none; d=google.com; s=arc-20160816; b=0KZzZOIg0ztNS4zwRw47Pj/+wQqoOPWx+ce5GtbxfriFv/9udNZI0Xqu5RxU/EzHIV IPB8T27T41ijV0+1DP5TYhtj6k1glxNZkyeNmJfZX5ghpzkZOeZjAZTsLDf4D6LF+r5e Jr5oafe28LdMvuMdR+YQ7yqsGMfEXjU6RhHoMhtmZLZo80kJyUvX1la9z+rzvm004B22 CmAi+cQ5fTBytMoM+HFVr+4fsQv7pmj+e8brrR5EHa4hqNg8r1HSL+xDGojIzBUza6ds /QUNqeF2o/KdFDsHZnwarGLgAOPN68O7I3EYeZ8/AEY0enMyzPNWA1SIRdxOvuCb0mnh H3zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=fGY/R17EOwOU9IuAJcw6e9OB+CUrxP7Pw2DtILdCA5g=; b=Z6PhCuretxqKxOHyWyqIPzcqQprE2bE9iLE9uCUdi0nLvXAVSQRT304kR5rQLRPvRc 11v3u3TVPidimup56hZdTBO+W5W7QATbLe0nEF2cLQYrKRDUnLLUKDvVn5ddSvNUUHPb bxnIcygj/nFR0Fbjcy3z6vBnx1vdGcBqZWh0Q22TB+MUXIt/tlPl9enqrBs5yMHq7mMo 0vsAKsyMsulA8gyU7Fs6RwMZkHhSjhJNHw8dMNRsBpHCsKrZdJaXvX3AwyhpAs2MzcBx tLGCF2Zti9lU6R5/3QgOPuTy79iXuoXPRslbJsBfRb99MjzIN3JCaSgbca9ZrpNBqL0Q Zx4A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y14-20020a056402358e00b004466a9af14esi4095109edc.461.2022.08.24.01.15.16; Wed, 24 Aug 2022 01:16:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235556AbiHXIGb (ORCPT + 99 others); Wed, 24 Aug 2022 04:06:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234026AbiHXIG3 (ORCPT ); Wed, 24 Aug 2022 04:06:29 -0400 Received: from smtp.smtpout.orange.fr (smtp05.smtpout.orange.fr [80.12.242.127]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F24B76564C for ; Wed, 24 Aug 2022 01:06:27 -0700 (PDT) Received: from pop-os.home ([90.11.190.129]) by smtp.orange.fr with ESMTPA id QlP5oD4V0XaejQlP5oyl50; Wed, 24 Aug 2022 10:06:26 +0200 X-ME-Helo: pop-os.home X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Wed, 24 Aug 2022 10:06:26 +0200 X-ME-IP: 90.11.190.129 From: Christophe JAILLET To: Greg Kroah-Hartman , Jiri Slaby , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET , linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org Subject: [PATCH] tty: serial: meson: Use devm_clk_get_enabled() helper Date: Wed, 24 Aug 2022 10:06:21 +0200 Message-Id: <3f18638cb3cf08ed8817addca1402ed5e3bd3602.1661328361.git.christophe.jaillet@wanadoo.fr> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The devm_clk_get_enabled() helper: - calls devm_clk_get() - calls clk_prepare_enable() and registers what is needed in order to call clk_disable_unprepare() when needed, as a managed resource. This simplifies the code, the error handling paths and avoid the need of a dedicated function used with devm_add_action_or_reset(). That said, meson_uart_probe_clock() is now more or less the same as devm_clk_get_enabled(), so use this function directly instead. This also fixes an (unlikely) unchecked devm_add_action_or_reset() error. Based on my test with allyesconfig, this reduces the .o size from: text data bss dec hex filename 16350 5016 128 21494 53f6 drivers/tty/serial/meson_uart.o down to: 15415 4784 128 20327 4f67 drivers/tty/serial/meson_uart.o Signed-off-by: Christophe JAILLET --- devm_clk_get_enabled() is new and is part of 6.0-rc1 If the message "couldn't enable clk\n" is of any use, it could be added in meson_uart_probe_clocks() with a dev_err_probe() call. It wouldn't be exactly the same meaning, but at least something would be logged. --- drivers/tty/serial/meson_uart.c | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c index 6c8db19fd572..26de08bf181e 100644 --- a/drivers/tty/serial/meson_uart.c +++ b/drivers/tty/serial/meson_uart.c @@ -667,29 +667,6 @@ static struct uart_driver meson_uart_driver = { .cons = MESON_SERIAL_CONSOLE, }; -static inline struct clk *meson_uart_probe_clock(struct device *dev, - const char *id) -{ - struct clk *clk = NULL; - int ret; - - clk = devm_clk_get(dev, id); - if (IS_ERR(clk)) - return clk; - - ret = clk_prepare_enable(clk); - if (ret) { - dev_err(dev, "couldn't enable clk\n"); - return ERR_PTR(ret); - } - - devm_add_action_or_reset(dev, - (void(*)(void *))clk_disable_unprepare, - clk); - - return clk; -} - static int meson_uart_probe_clocks(struct platform_device *pdev, struct uart_port *port) { @@ -697,15 +674,15 @@ static int meson_uart_probe_clocks(struct platform_device *pdev, struct clk *clk_pclk = NULL; struct clk *clk_baud = NULL; - clk_pclk = meson_uart_probe_clock(&pdev->dev, "pclk"); + clk_pclk = devm_clk_get_enabled(&pdev->dev, "pclk"); if (IS_ERR(clk_pclk)) return PTR_ERR(clk_pclk); - clk_xtal = meson_uart_probe_clock(&pdev->dev, "xtal"); + clk_xtal = devm_clk_get_enabled(&pdev->dev, "xtal"); if (IS_ERR(clk_xtal)) return PTR_ERR(clk_xtal); - clk_baud = meson_uart_probe_clock(&pdev->dev, "baud"); + clk_baud = devm_clk_get_enabled(&pdev->dev, "baud"); if (IS_ERR(clk_baud)) return PTR_ERR(clk_baud); -- 2.34.1