From patchwork Thu Jan 26 22:03:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 9540171 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 2A3AE604A0 for ; Thu, 26 Jan 2017 22:05:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 18BE92824F for ; Thu, 26 Jan 2017 22:05:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0CCA828329; Thu, 26 Jan 2017 22:05:32 +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.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_SORBS_SPAM, 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 942142824F for ; Thu, 26 Jan 2017 22:05:31 +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 1cWsAY-0003Dx-S0; Thu, 26 Jan 2017 22:05:26 +0000 Received: from mail-wm0-f67.google.com ([74.125.82.67]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cWsA1-0001iJ-Ka; Thu, 26 Jan 2017 22:04:55 +0000 Received: by mail-wm0-f67.google.com with SMTP id c85so53437276wmi.1; Thu, 26 Jan 2017 14:04:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=ideadikVOJ+SFZVchsaO7YsBF+vE8VdRYtFXgUJBuZ8=; b=YN+cEDZ+7RnjQD1mapYgCviEBFIiorbEJDsMiHJSp5/oLoZacUbYvnii9NhmClk5y2 SogUkQi2PCkm1uicFfAMD87ayCkvaDQWlS41yL3I5bFA91UG10i2S5/zQHsXWofm7K9A BwECVxyNQDnPGI9uwktqM3S1dkagvT1tBbpjlz5fkBL/qLTF4MEYr5czUmvtH9BcfA0B JGhJIlxm8GMun+v7QmtaZJJHiTdg+IK9q9FuHxggBCV19RsdF035gPyNSwnDEldLA3wK McPBkcfzS7MQRc4XyMA8f9zY99a0IEZHgFHTq4R2zW+ChEaWhakf7dZ5dHPdpHupD2DH 6EBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=ideadikVOJ+SFZVchsaO7YsBF+vE8VdRYtFXgUJBuZ8=; b=AQ6aMK21hWbMgxI2RkECwXbaX0CuXquRRnh25gJaSCJhQNB2rDmsf/eHYMMiLDHFh6 R0wQJH9SqbopZ6YMgT9PTPnjurhiJJNpC5Igv/V9pMzO601PUIn83BJ0QzjDKD5zOOtD AGetVAXy/YuGCxIBloEACQYBijkUdGWAwuJolecMM+Mn3uATCoZQXZmQEXsYQSGEihDP Thz4N9/uA2jDi7aFu/7GgN5T3xRhHWySL+1Ub37Mk2TC1BvdbTZTmJgtdR47ZbNmz9tS kimqq0OnCivXGdeqjycWGYU6zO/gJqFuWKzIns+MSyLes61ZQwXG+2wDCFyIvsnmYvVt 5uig== X-Gm-Message-State: AIkVDXJTYq1lau+Eu+7ZlnFnJ/kerfrui5Vrbg5PorKjO2G+x1ViNaAsn7vjTByG5a/XcA== X-Received: by 10.223.139.213 with SMTP id w21mr4670092wra.108.1485468212801; Thu, 26 Jan 2017 14:03:32 -0800 (PST) Received: from ?IPv6:2003:c6:ebc5:6c00:4534:522a:e499:2bef? (p200300C6EBC56C004534522AE4992BEF.dip0.t-ipconnect.de. [2003:c6:ebc5:6c00:4534:522a:e499:2bef]) by smtp.googlemail.com with ESMTPSA id 198sm596088wmn.11.2017.01.26.14.03.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Jan 2017 14:03:32 -0800 (PST) To: Ulf Hansson , Carlo Caione , Kevin Hilman From: Heiner Kallweit Subject: [PATCH 3/3] mmc: meson-gx: improve meson_mmc_clk_set Message-ID: <49d47535-6008-e1df-3baa-4f0590344a89@gmail.com> Date: Thu, 26 Jan 2017 23:03:13 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170126_140453_851478_F1EE4E1A X-CRM114-Status: GOOD ( 16.37 ) 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-arm-kernel@lists.infradead.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. If you'd prefer to separate the changes just let me know. - 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 --- 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 41c54e02..3308b5b6 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; } /*