From patchwork Thu Jul 27 11:10:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Abhishek Sahu X-Patchwork-Id: 9866629 X-Patchwork-Delegate: sboyd@codeaurora.org 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 2B2116038C for ; Thu, 27 Jul 2017 11:12:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1DA9F28758 for ; Thu, 27 Jul 2017 11:12:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 12AE1287C8; Thu, 27 Jul 2017 11:12:44 +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=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AC8C628758 for ; Thu, 27 Jul 2017 11:12:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751616AbdG0LMm (ORCPT ); Thu, 27 Jul 2017 07:12:42 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:58526 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751535AbdG0LLF (ORCPT ); Thu, 27 Jul 2017 07:11:05 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 495A860867; Thu, 27 Jul 2017 11:11:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1501153864; bh=0ukeEpat8DUsaPpJEJkVmESqCs6DKY4LVbA5v7zIvQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eAxh3BTokioH/6yDKfSx64d0Absqsa3gZDrsQKSl8J4xEGFx8FOTylh9mU3yGCUZm 7o5H3LKGIRH1X0Zg/JEUgomBhOy1NHgBzGJGV6DNsVmgOn0Nb7CVZSgqKKH7ihOdro XbZzNN4ZrUsH1bMUmiAZVwf0qEQ63EQKebW/J6Jc= Received: from absahu-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: absahu@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id EF58C6099A; Thu, 27 Jul 2017 11:11:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1501153863; bh=0ukeEpat8DUsaPpJEJkVmESqCs6DKY4LVbA5v7zIvQU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ArEs8IYNiSZcezez8ZLmMGXumMVjQwVMFebrqE10k0R7BAFwViGlg+zIrj/dt2BSu f06SLIzSdZsFJPkxqv3Kcl4phDHIVc+TWzRa4Cmtmkacs0NpXSVa2p1S+FeUHZs0Sb x8T2nbugTKSP941wQsr11trI3jNGbFNsDm666TFs= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org EF58C6099A Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=absahu@codeaurora.org From: Abhishek Sahu To: sboyd@codeaurora.org, mturquette@baylibre.com Cc: andy.gross@linaro.org, david.brown@linaro.org, rnayak@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Abhishek Sahu Subject: [RFC 07/12] clk: qcom: add flag for VCO operation Date: Thu, 27 Jul 2017 16:40:20 +0530 Message-Id: <1501153825-5181-8-git-send-email-absahu@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1501153825-5181-1-git-send-email-absahu@codeaurora.org> References: <1501153825-5181-1-git-send-email-absahu@codeaurora.org> MIME-Version: 1.0 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some of the Alpha PLL’s does not have VCO configuration so this patch adds the flag and does not perform VCO operation if this flag is set. Signed-off-by: Abhishek Sahu --- drivers/clk/qcom/clk-alpha-pll.c | 19 ++++++++++++------- drivers/clk/qcom/clk-alpha-pll.h | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/clk/qcom/clk-alpha-pll.c b/drivers/clk/qcom/clk-alpha-pll.c index e38f4d2..0ac9f96 100644 --- a/drivers/clk/qcom/clk-alpha-pll.c +++ b/drivers/clk/qcom/clk-alpha-pll.c @@ -415,10 +415,13 @@ static int clk_alpha_pll_set_rate(struct clk_hw *hw, unsigned long rate, u64 a; rate = alpha_pll_round_rate(rate, prate, &l, &a, alpha_width); - vco = alpha_pll_find_vco(pll, rate); - if (!vco) { - pr_err("alpha pll not in a valid vco range\n"); - return -EINVAL; + + if (!(pll->flags & HAVE_NO_VCO_CONF)) { + vco = alpha_pll_find_vco(pll, rate); + if (!vco) { + pr_err("alpha pll not in a valid vco range\n"); + return -EINVAL; + } } regmap_write(pll->clkr.regmap, pll_l(pll), l); @@ -428,8 +431,10 @@ static int clk_alpha_pll_set_rate(struct clk_hw *hw, unsigned long rate, regmap_write(pll->clkr.regmap, pll_alpha(pll), a); regmap_write(pll->clkr.regmap, pll_alpha_u(pll), a >> 32); - regmap_update_bits(pll->clkr.regmap, pll_alpha(pll), - GENMASK(0, alpha_width - 1), a); + if (!(pll->flags & HAVE_NO_VCO_CONF)) + regmap_update_bits(pll->clkr.regmap, pll_user_ctl(pll), + PLL_VCO_MASK << PLL_VCO_SHIFT, + vco->val << PLL_VCO_SHIFT); regmap_update_bits(pll->clkr.regmap, pll_user_ctl(pll), PLL_ALPHA_EN, PLL_ALPHA_EN); @@ -479,7 +484,7 @@ static long clk_alpha_pll_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long min_freq, max_freq; rate = alpha_pll_round_rate(rate, *prate, &l, &a, alpha_width); - if (alpha_pll_find_vco(pll, rate)) + if ((pll->flags & HAVE_NO_VCO_CONF) || alpha_pll_find_vco(pll, rate)) return rate; min_freq = pll->vco_table[0].min_freq; diff --git a/drivers/clk/qcom/clk-alpha-pll.h b/drivers/clk/qcom/clk-alpha-pll.h index 6e40e09..01869a8 100644 --- a/drivers/clk/qcom/clk-alpha-pll.h +++ b/drivers/clk/qcom/clk-alpha-pll.h @@ -55,6 +55,7 @@ struct clk_alpha_pll { #define SUPPORTS_FSM_MODE BIT(2) #define SUPPORTS_64BIT_CONFIG_CTL BIT(3) #define SUPPORTS_DYNAMIC_UPDATE BIT(4) +#define HAVE_NO_VCO_CONF BIT(5) u8 flags; struct clk_regmap clkr;