From patchwork Wed Feb 1 06:48:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 9548955 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 93694604A7 for ; Wed, 1 Feb 2017 06:50:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8257C27E3E for ; Wed, 1 Feb 2017 06:50:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 689802841F; Wed, 1 Feb 2017 06:50:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 22C7327E3E for ; Wed, 1 Feb 2017 06:50:21 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cYokA-0004MH-Nv; Wed, 01 Feb 2017 06:50:14 +0000 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cYok5-000348-I6 for linux-amlogic@lists.infradead.org; Wed, 01 Feb 2017 06:50:11 +0000 Received: by mail-wm0-x244.google.com with SMTP id r18so3591758wmd.3 for ; Tue, 31 Jan 2017 22:49:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:references:cc:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=YLAG4ETblprsuWSWY0drRLTwu77w70eBVHLtCg3WiSY=; b=rRf76h1J3n5dbK7K6ymP1ymBS201oocjA+zHjmj5prGFivkXQi6TwF/lkZn+8mCxnT vCcwazctHELOkIzSo0sOmeXsLYayDmtoN+Ca39mITseOhBavchOsMao/2jWWIm2W2Kjo jR3wIcHZphC7gfDjott3WkBvogdeFAwq+SUWb0UHChvRrInre0/+Hspw7TqUTUi+zpP/ DH1If3R17tkaatXP4HLfamESXTEWYCL+luRU7XrdkBrNr4D4OpshtCreNocMilabSLRf sOcT5fOtKHRfPfdKoagVrb6Rk7QHubml/MG7Y0Dom0O4PH7monDbCc4wN8rqp4uxcikf b2AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:cc:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=YLAG4ETblprsuWSWY0drRLTwu77w70eBVHLtCg3WiSY=; b=NFI76r5J9uU5rM6CPwMO4imAFQ896jxaFMYj4+OaAnDjjJxMSvsdVfMtcsL5cXE1gq RF7cCMEkN9a5R8rp8MDz98LPUBP12c7Q45PSmaxAFFNU1uxx+p/dUQfgXAF5lkKSVd8D 2fivE8hemDj8f4j54vMRPA8YMYwNJCTkO412XuDefSekBSr1L6rY9Yiu0Oy7w+WbDhAh kKJNW5EXzT87HVx92JnDzXqn0X13RkiCSaof2pRWERjagV7rwqLX4zjjsloExJlMlPnM Tip1rAKwJHIU4xgxQ3xjH0833MXWrazkhtthGXR0OHnUEh8uaFOGyyVCD7OGmHIt/rrP KOfw== X-Gm-Message-State: AIkVDXLNJ2J3K+wRnhw0ydq/K4DRN1xR+lPpKe/EbcieLNv2iZjEsuJfLOheF82i8Vuceg== X-Received: by 10.28.130.212 with SMTP id e203mr1295357wmd.104.1485931787486; Tue, 31 Jan 2017 22:49:47 -0800 (PST) Received: from ?IPv6:2003:c6:ebc5:6c00:c4cb:dab7:ab36:4977? (p200300C6EBC56C00C4CBDAB7AB364977.dip0.t-ipconnect.de. [2003:c6:ebc5:6c00:c4cb:dab7:ab36:4977]) by smtp.googlemail.com with ESMTPSA id e72sm27787374wma.16.2017.01.31.22.49.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jan 2017 22:49:47 -0800 (PST) From: Heiner Kallweit Subject: [PATCH v2 3/9] mmc: meson-gx: improve meson_mmc_clk_set To: Ulf Hansson , Carlo Caione , Kevin Hilman References: <584e5061-d359-1436-05ee-3767a5a4b10f@gmail.com> Message-ID: <6b6c81ab-a576-ca41-55df-7633dbbba8f6@gmail.com> Date: Wed, 1 Feb 2017 07:48:39 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <584e5061-d359-1436-05ee-3767a5a4b10f@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170131_225009_764584_E6ECB247 X-CRM114-Status: GOOD ( 15.62 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP The following changes are quite small, therefore I combined them in one patch. - ret doesn't need to be initialized with 0 - use standard !clk_rate notation to check for a zero value - If clk_rate is zero we return here. Therefore all further checks in this function for clk_rate != 0 are not needed. - switch from dev_warn to dev_err if the clock can't be set - If due to clock source and available divider values the requested frequency isn't matched exactly (always the case if requested frequency is 52 MHz), then just print the differing values as debug message and not as warning. - Also remove ret from the message as it is always 0. - In the case of actual frequency not exactly matching the requested one set mmc->actual_clock to the requested frequency. So far mmc->actual_clock wasn't set at all in this case. Signed-off-by: Heiner Kallweit Reviewed-by: Kevin Hilman Tested-by: Kevin Hilman --- v2: - added reviewed by, tested-by --- drivers/mmc/host/meson-gx-mmc.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 38edc60d..529a4f22 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -179,7 +179,7 @@ struct sd_emmc_desc { static int meson_mmc_clk_set(struct meson_host *host, unsigned long clk_rate) { struct mmc_host *mmc = host->mmc; - int ret = 0; + int ret; u32 cfg; if (clk_rate) { @@ -202,29 +202,31 @@ static int meson_mmc_clk_set(struct meson_host *host, unsigned long clk_rate) dev_dbg(host->dev, "change clock rate %u -> %lu\n", mmc->actual_clock, clk_rate); - if (clk_rate == 0) { + if (!clk_rate) { mmc->actual_clock = 0; return 0; } ret = clk_set_rate(host->cfg_div_clk, clk_rate); - if (ret) - dev_warn(host->dev, "Unable to set cfg_div_clk to %lu. ret=%d\n", - clk_rate, ret); - else if (clk_rate && clk_rate != clk_get_rate(host->cfg_div_clk)) - dev_warn(host->dev, "divider requested rate %lu != actual rate %lu: ret=%d\n", - clk_rate, clk_get_rate(host->cfg_div_clk), ret); - else - mmc->actual_clock = clk_rate; - - /* (re)start clock, if non-zero */ - if (!ret && clk_rate) { - cfg = readl(host->regs + SD_EMMC_CFG); - cfg &= ~CFG_STOP_CLOCK; - writel(cfg, host->regs + SD_EMMC_CFG); + if (ret) { + dev_err(host->dev, "Unable to set cfg_div_clk to %lu. ret=%d\n", + clk_rate, ret); + return ret; } - return ret; + if (clk_rate != clk_get_rate(host->cfg_div_clk)) + dev_dbg(host->dev, + "divider requested rate %lu != actual rate %lu\n", + clk_rate, clk_get_rate(host->cfg_div_clk)); + + mmc->actual_clock = clk_rate; + + /* (re)start clock */ + cfg = readl(host->regs + SD_EMMC_CFG); + cfg &= ~CFG_STOP_CLOCK; + writel(cfg, host->regs + SD_EMMC_CFG); + + return 0; } /*