Received: by 10.213.65.68 with SMTP id h4csp45641imn; Mon, 19 Mar 2018 19:03:04 -0700 (PDT) X-Google-Smtp-Source: AG47ELupnQMo8rAeDIn9QW8yMO+2EGO+JexCYgS+FGE3c1twTOx3kbJpBIQ3+drUCJQC1tIkqgEs X-Received: by 10.99.60.79 with SMTP id i15mr10521953pgn.399.1521511384015; Mon, 19 Mar 2018 19:03:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521511383; cv=none; d=google.com; s=arc-20160816; b=hOFWEYDXujorL4zFImUtSk2BBvdMmPqJTglY4wQPUcyE4CiCpHYUYcX6LSpL/WQ8ot u2gyHL78AacQ2CGiru+mrK+D8LAFcmzSB8xAU9P8h2CvuWTg2BUCwUqAQs8QI7QlHIkO 5Gd82m/MbItPaiiIlmUy1gNLgghnjDOpj0vSCNJVi94Xl4583ve0mET3+iLFCm+zk+Pw V2FbbUIWUI4zQfCgF3Z+I/gAJ9OcFCQrlX2VaNghwinGVtit9oxVApAJnn54e4YaXQfb 61/ijC06U5iIrdgGoabiwDpggtIIbn9EGlw/EB3oi0cZaho7ZnQPtd3j+FSxKoa+ftLl MyWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:user-agent:message-id :references:cc:in-reply-to:from:to:content-transfer-encoding :mime-version:dmarc-filter:arc-authentication-results; bh=RJnM4ZBTUhSyB5+zpFAkR3bGfWKzqiL9gQTRXJJlD5s=; b=EG+/+cjWyv6X19o4GMOSzisOjC5EEyRMRMAPuLw4Wbo44rjRvjoViJ4KWDhiy+kIn7 qDtd4q1AT6+PndrW/+Uj6aVQkrP6aOxYlxoO4DTpehtu2mQ9YuvQgP1qm4pOEAC8mY3n sYH1ndQLPJ0xtL5e1A15FMAACSnieyP4y1YN7ZcuoosHnGspDrIVdkeiZz/XWnqwZXz+ aMLsvQWzWY7PDaTcOJkM70VDALdNN+361FFXE8ngfgl7HU2cw9fUbAbt1bw1e5sh3VCy sXoRTrqVDA0Gg2Jnlbz6L2iBe54LMS4kE1BrTwNcJkZGAGbS1rXVkRWl4vcEaUeKZOPv g7Dw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a8-v6si575761plz.320.2018.03.19.19.02.50; Mon, 19 Mar 2018 19:03:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934436AbeCSXd5 convert rfc822-to-8bit (ORCPT + 99 others); Mon, 19 Mar 2018 19:33:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:45736 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932534AbeCSXdt (ORCPT ); Mon, 19 Mar 2018 19:33:49 -0400 Received: from localhost (unknown [104.132.1.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A672E21737; Mon, 19 Mar 2018 23:33:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A672E21737 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=sboyd@kernel.org Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT To: Amit Nischal , Michael Turquette , Stephen Boyd From: Stephen Boyd In-Reply-To: <1520493495-3084-4-git-send-email-anischal@codeaurora.org> Cc: Andy Gross , David Brown , Rajendra Nayak , Odelu Kukatla , Taniya Das , linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Amit Nischal References: <1520493495-3084-1-git-send-email-anischal@codeaurora.org> <1520493495-3084-4-git-send-email-anischal@codeaurora.org> Message-ID: <152150242792.254778.8044280968962039576@swboyd.mtv.corp.google.com> User-Agent: alot/0.7 Subject: Re: [PATCH v2 3/4] clk: qcom: Add support for controlling Fabia PLL Date: Mon, 19 Mar 2018 16:33:47 -0700 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Amit Nischal (2018-03-07 23:18:14) > Fabia PLL is a Digital Frequency Locked Loop (DFLL) clock > generator which has a wide range of frequency output. It > supports dynamic updating of the output frequency > ("frequency slewing") without need to turn off the PLL > before configuration. Add support for initial configuration > and programming sequence to control fabia PLLs. > > Signed-off-by: Amit Nischal > --- Applied to clk-next with a little adjustment below: diff --git a/drivers/clk/qcom/clk-alpha-pll.c b/drivers/clk/qcom/clk-alpha-pll.c index e6b8d62e5175..9722b701fbdb 100644 --- a/drivers/clk/qcom/clk-alpha-pll.c +++ b/drivers/clk/qcom/clk-alpha-pll.c @@ -891,8 +891,9 @@ static int alpha_pll_fabia_enable(struct clk_hw *hw) int ret; struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 val, opmode_val; + struct regmap *regmap = pll->clkr.regmap; - ret = regmap_read(pll->clkr.regmap, PLL_MODE(pll), &val); + ret = regmap_read(regmap, PLL_MODE(pll), &val); if (ret) return ret; @@ -904,8 +905,7 @@ static int alpha_pll_fabia_enable(struct clk_hw *hw) return wait_for_pll_enable_active(pll); } - /* Read opmode value */ - ret = regmap_read(pll->clkr.regmap, PLL_OPMODE(pll), &opmode_val); + ret = regmap_read(regmap, PLL_OPMODE(pll), &opmode_val); if (ret) return ret; @@ -913,30 +913,20 @@ static int alpha_pll_fabia_enable(struct clk_hw *hw) if ((opmode_val & FABIA_OPMODE_RUN) && (val & PLL_OUTCTRL)) return 0; - /* Disable PLL output */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_MODE(pll), - PLL_OUTCTRL, 0); + ret = regmap_update_bits(regmap, PLL_MODE(pll), PLL_OUTCTRL, 0); if (ret) return ret; - /* Set Operation mode to STANBY */ - ret = regmap_write(pll->clkr.regmap, PLL_OPMODE(pll), - FABIA_OPMODE_STANDBY); + ret = regmap_write(regmap, PLL_OPMODE(pll), FABIA_OPMODE_STANDBY); if (ret) return ret; - /* PLL should be in STANDBY mode before continuing */ - mb(); - - /* Bring PLL out of reset */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_MODE(pll), - PLL_RESET_N, PLL_RESET_N); + ret = regmap_update_bits(regmap, PLL_MODE(pll), PLL_RESET_N, + PLL_RESET_N); if (ret) return ret; - /* Set Operation mode to RUN */ - ret = regmap_write(pll->clkr.regmap, PLL_OPMODE(pll), - FABIA_OPMODE_RUN); + ret = regmap_write(regmap, PLL_OPMODE(pll), FABIA_OPMODE_RUN); if (ret) return ret; @@ -944,22 +934,13 @@ static int alpha_pll_fabia_enable(struct clk_hw *hw) if (ret) return ret; - /* Enable the main PLL output */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_USER_CTL(pll), - FABIA_PLL_OUT_MASK, FABIA_PLL_OUT_MASK); - if (ret) - return ret; - - /* Enable PLL outputs */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_MODE(pll), - PLL_OUTCTRL, PLL_OUTCTRL); + ret = regmap_update_bits(regmap, PLL_USER_CTL(pll), + FABIA_PLL_OUT_MASK, FABIA_PLL_OUT_MASK); if (ret) return ret; - /* Ensure that the write above goes through before returning. */ - mb(); - - return ret; + return regmap_update_bits(regmap, PLL_MODE(pll), PLL_OUTCTRL, + PLL_OUTCTRL); } static void alpha_pll_fabia_disable(struct clk_hw *hw) @@ -967,8 +948,9 @@ static void alpha_pll_fabia_disable(struct clk_hw *hw) int ret; struct clk_alpha_pll *pll = to_clk_alpha_pll(hw); u32 val; + struct regmap *regmap = pll->clkr.regmap; - ret = regmap_read(pll->clkr.regmap, PLL_MODE(pll), &val); + ret = regmap_read(regmap, PLL_MODE(pll), &val); if (ret) return; @@ -978,23 +960,18 @@ static void alpha_pll_fabia_disable(struct clk_hw *hw) return; } - /* Disable PLL outputs */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_MODE(pll), - PLL_OUTCTRL, 0); + ret = regmap_update_bits(regmap, PLL_MODE(pll), PLL_OUTCTRL, 0); if (ret) return; /* Disable main outputs */ - ret = regmap_update_bits(pll->clkr.regmap, PLL_USER_CTL(pll), - FABIA_PLL_OUT_MASK, 0); + ret = regmap_update_bits(regmap, PLL_USER_CTL(pll), FABIA_PLL_OUT_MASK, + 0); if (ret) return; /* Place the PLL in STANDBY */ - ret = regmap_write(pll->clkr.regmap, PLL_OPMODE(pll), - FABIA_OPMODE_STANDBY); - if (ret) - return; + regmap_write(regmap, PLL_OPMODE(pll), FABIA_OPMODE_STANDBY); } static unsigned long alpha_pll_fabia_recalc_rate(struct clk_hw *hw,