All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Taniya Das <tdas@codeaurora.org>
Cc: Jorge Ramirez <jorge.ramirez-ortiz@linaro.org>,
	robh+dt@kernel.org, mark.rutland@arm.com, andy.gross@linaro.org,
	david.brown@linaro.org, sboyd@kernel.org, will.deacon@arm.com,
	mturquette@baylibre.com, jassisinghbrar@gmail.com,
	vkoul@kernel.org, niklas.cassel@linaro.org, sibis@codeaurora.org,
	georgi.djakov@linaro.org, arnd@arndb.de,
	horms+renesas@verge.net.au, heiko@sntech.de,
	enric.balletbo@collabora.com, jagan@amarulasolutions.com,
	olof@lixom.net, amit.kucheria@linaro.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org
Subject: Re: [PATCH 01/13] clk: qcom: gcc: limit GPLL0_AO_OUT operating frequency
Date: Fri, 21 Dec 2018 11:28:23 -0800	[thread overview]
Message-ID: <20181221192823.GA9704@minitux> (raw)
In-Reply-To: <874ce15d-67f5-8e55-8b62-73071fe6ae06@codeaurora.org>

On Fri 21 Dec 09:58 PST 2018, Taniya Das wrote:

> Hello,
> 
> On 12/21/2018 6:06 PM, Jorge Ramirez wrote:
> > On 12/21/18 12:19, Taniya Das wrote:
> > > 
> > > 
> > > On 12/17/2018 3:16 PM, Jorge Ramirez-Ortiz wrote:
> > > > Limit the GPLL0_AO_OUT_MAIN operating frequency as per its hardware
> > > > specifications.
> > > > 
> > > > Co-developed-by: Niklas Cassel <niklas.cassel@linaro.org>
> > > > Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
> > > > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > > > ---
> > > >   drivers/clk/qcom/gcc-qcs404.c | 6 ++++++
> > > >   1 file changed, 6 insertions(+)
> > > > 
> > > > diff --git a/drivers/clk/qcom/gcc-qcs404.c
> > > > b/drivers/clk/qcom/gcc-qcs404.c
> > > > index 64da032..833436a 100644
> > > > --- a/drivers/clk/qcom/gcc-qcs404.c
> > > > +++ b/drivers/clk/qcom/gcc-qcs404.c
> > > > @@ -304,10 +304,16 @@ static struct clk_alpha_pll gpll0_out_main = {
> > > >       },
> > > >   };
> > > >   +static const struct pll_vco gpll0_ao_out_vco[] = {
> > > > +    { 800000000, 800000000, 0 },
> > > > +};
> > > > +
> > > >   static struct clk_alpha_pll gpll0_ao_out_main = {
> > > >       .offset = 0x21000,
> > > >       .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
> > > >       .flags = SUPPORTS_FSM_MODE,
> > > > +    .vco_table = gpll0_ao_out_vco,
> > > > +    .num_vco = ARRAY_SIZE(gpll0_ao_out_vco),
> > > 
> > > Could you please help as to why this is required? This is a fixed
> > > PLL and we do not require a VCO table for it.
> > 
> > Hi Taniya,
> > 
> > this patch - the additional information that it provides about the
> > hardware - helps to select the right parent clock for a given frequency.
> > 
> > On the qcs404 this clock is one of the two parent clocks of the apcs
> > clock controller (the other one being the high frequency pll)
> > When cpufreq sets a target frequency, there is an iteration through the
> > list of parents to select the one that delivers the best match.
> > 
> > When attempting to set the clock for an alpha_pll, the operation does a
> > sanity check to validate that the requested frequency is in fact
> > reachable using the vco range: trying to set a value that is not in
> > range will fail.
> > 
> > This patch makes sure that its range is explicitly defined.
> > 
> > It also helps making sure there are no rounding issues when setting its
> > value: without it the clock was being read at 799MHz
> > 
> > 
> 
> If the PLL is being read as 799MHz it would because not all the 40 bits of
> the ALPHA_VAL being programmed by the bootloaders(which are the original
> owners of this PLL). So we should go with the way they are being set by
> bootloaders and read by HLOS driver.
> 
> And a VCO range you have considered is wrong from a PLL perspective. As
> these are fixed PLLs and VCO range really does not matter here, so please
> drop this change.
> 

The problem here is that the PLL should be fixed at 800MHz, but the
alpha PLL is defined such that it can change. So when the mux-div is
looking for a suitable parent and divider for our CPU clock it concludes
that the best way to reach certain frequencies is to change the rate of
GPLL0.

Adding the vco_table limits the available frequencies for GPLL0 in
QCS404, without modifying the implementation of the alpha PLL.

Perhaps there's a better way to define that this particular clock
hardware can change rate, but in this implementation it must not?

Regards,
Bjorn

WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Taniya Das <tdas@codeaurora.org>
Cc: mark.rutland@arm.com, heiko@sntech.de, mturquette@baylibre.com,
	will.deacon@arm.com, david.brown@linaro.org,
	linux-clk@vger.kernel.org, jassisinghbrar@gmail.com,
	jagan@amarulasolutions.com, andy.gross@linaro.org,
	sibis@codeaurora.org, devicetree@vger.kernel.org, arnd@arndb.de,
	niklas.cassel@linaro.org, robh+dt@kernel.org,
	horms+renesas@verge.net.au, linux-arm-kernel@lists.infradead.org,
	olof@lixom.net, sboyd@kernel.org, linux-kernel@vger.kernel.org,
	amit.kucheria@linaro.org, vkoul@kernel.org,
	enric.balletbo@collabora.com,
	Jorge Ramirez <jorge.ramirez-ortiz@linaro.org>,
	georgi.djakov@linaro.org
Subject: Re: [PATCH 01/13] clk: qcom: gcc: limit GPLL0_AO_OUT operating frequency
Date: Fri, 21 Dec 2018 11:28:23 -0800	[thread overview]
Message-ID: <20181221192823.GA9704@minitux> (raw)
In-Reply-To: <874ce15d-67f5-8e55-8b62-73071fe6ae06@codeaurora.org>

On Fri 21 Dec 09:58 PST 2018, Taniya Das wrote:

> Hello,
> 
> On 12/21/2018 6:06 PM, Jorge Ramirez wrote:
> > On 12/21/18 12:19, Taniya Das wrote:
> > > 
> > > 
> > > On 12/17/2018 3:16 PM, Jorge Ramirez-Ortiz wrote:
> > > > Limit the GPLL0_AO_OUT_MAIN operating frequency as per its hardware
> > > > specifications.
> > > > 
> > > > Co-developed-by: Niklas Cassel <niklas.cassel@linaro.org>
> > > > Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
> > > > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > > > ---
> > > >   drivers/clk/qcom/gcc-qcs404.c | 6 ++++++
> > > >   1 file changed, 6 insertions(+)
> > > > 
> > > > diff --git a/drivers/clk/qcom/gcc-qcs404.c
> > > > b/drivers/clk/qcom/gcc-qcs404.c
> > > > index 64da032..833436a 100644
> > > > --- a/drivers/clk/qcom/gcc-qcs404.c
> > > > +++ b/drivers/clk/qcom/gcc-qcs404.c
> > > > @@ -304,10 +304,16 @@ static struct clk_alpha_pll gpll0_out_main = {
> > > >       },
> > > >   };
> > > >   +static const struct pll_vco gpll0_ao_out_vco[] = {
> > > > +    { 800000000, 800000000, 0 },
> > > > +};
> > > > +
> > > >   static struct clk_alpha_pll gpll0_ao_out_main = {
> > > >       .offset = 0x21000,
> > > >       .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
> > > >       .flags = SUPPORTS_FSM_MODE,
> > > > +    .vco_table = gpll0_ao_out_vco,
> > > > +    .num_vco = ARRAY_SIZE(gpll0_ao_out_vco),
> > > 
> > > Could you please help as to why this is required? This is a fixed
> > > PLL and we do not require a VCO table for it.
> > 
> > Hi Taniya,
> > 
> > this patch - the additional information that it provides about the
> > hardware - helps to select the right parent clock for a given frequency.
> > 
> > On the qcs404 this clock is one of the two parent clocks of the apcs
> > clock controller (the other one being the high frequency pll)
> > When cpufreq sets a target frequency, there is an iteration through the
> > list of parents to select the one that delivers the best match.
> > 
> > When attempting to set the clock for an alpha_pll, the operation does a
> > sanity check to validate that the requested frequency is in fact
> > reachable using the vco range: trying to set a value that is not in
> > range will fail.
> > 
> > This patch makes sure that its range is explicitly defined.
> > 
> > It also helps making sure there are no rounding issues when setting its
> > value: without it the clock was being read at 799MHz
> > 
> > 
> 
> If the PLL is being read as 799MHz it would because not all the 40 bits of
> the ALPHA_VAL being programmed by the bootloaders(which are the original
> owners of this PLL). So we should go with the way they are being set by
> bootloaders and read by HLOS driver.
> 
> And a VCO range you have considered is wrong from a PLL perspective. As
> these are fixed PLLs and VCO range really does not matter here, so please
> drop this change.
> 

The problem here is that the PLL should be fixed at 800MHz, but the
alpha PLL is defined such that it can change. So when the mux-div is
looking for a suitable parent and divider for our CPU clock it concludes
that the best way to reach certain frequencies is to change the rate of
GPLL0.

Adding the vco_table limits the available frequencies for GPLL0 in
QCS404, without modifying the implementation of the alpha PLL.

Perhaps there's a better way to define that this particular clock
hardware can change rate, but in this implementation it must not?

Regards,
Bjorn

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2018-12-21 19:28 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-17  9:46 [PATCH 00/13] Support CPU frequency scaling on QCS404 Jorge Ramirez-Ortiz
2018-12-17  9:46 ` Jorge Ramirez-Ortiz
2018-12-17  9:46 ` [PATCH 01/13] clk: qcom: gcc: limit GPLL0_AO_OUT operating frequency Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2018-12-21 11:19   ` Taniya Das
2018-12-21 11:19     ` Taniya Das
2018-12-21 12:36     ` Jorge Ramirez
2018-12-21 12:36       ` Jorge Ramirez
2018-12-21 17:58       ` Taniya Das
2018-12-21 17:58         ` Taniya Das
2018-12-21 19:28         ` Bjorn Andersson [this message]
2018-12-21 19:28           ` Bjorn Andersson
2018-12-21 19:45           ` Jorge Ramirez
2018-12-21 19:45             ` Jorge Ramirez
2018-12-21 21:40             ` Stephen Boyd
2018-12-21 21:40               ` Stephen Boyd
2018-12-21 21:45               ` Jorge Ramirez
2018-12-21 21:45                 ` Jorge Ramirez
2018-12-21 21:51                 ` Stephen Boyd
2018-12-21 21:51                   ` Stephen Boyd
2018-12-17  9:46 ` [PATCH 02/13] mbox: qcom: add APCS child device for QCS404 Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:25   ` Bjorn Andersson
2019-01-17  6:25     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 03/13] mbox: qcom: replace integer with valid macro Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:25   ` Bjorn Andersson
2019-01-17  6:25     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 04/13] dt-bindings: mailbox: qcom: Add clock-name optional property Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2018-12-20 21:37   ` Rob Herring
2018-12-20 21:37     ` Rob Herring
2018-12-20 21:37     ` Rob Herring
2019-01-17  6:44   ` Bjorn Andersson
2019-01-17  6:44     ` Bjorn Andersson
2019-01-17  6:44     ` Bjorn Andersson
2019-01-28 16:57     ` Jorge Ramirez
2019-01-28 16:57       ` Jorge Ramirez
2019-01-28 17:46       ` Jorge Ramirez
2019-01-28 17:46         ` Jorge Ramirez
2018-12-17  9:46 ` [PATCH 05/13] clk: qcom: apcs-msm8916: get parent clock names from DT Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2018-12-17 23:37   ` Stephen Boyd
2018-12-17 23:37     ` Stephen Boyd
2018-12-18  8:37     ` Jorge Ramirez
2018-12-18  8:37       ` Jorge Ramirez
2018-12-18 14:35     ` Niklas Cassel
2018-12-18 14:35       ` Niklas Cassel
2018-12-26  9:20       ` Jorge Ramirez
2018-12-26  9:20         ` Jorge Ramirez
2018-12-28 22:28         ` Stephen Boyd
2018-12-28 22:28           ` Stephen Boyd
2018-12-31  8:42           ` Jorge Ramirez
2018-12-31  8:42             ` Jorge Ramirez
2018-12-31  8:42             ` Jorge Ramirez
2019-01-17  6:54             ` Bjorn Andersson
2019-01-17  6:54               ` Bjorn Andersson
2018-12-28 22:27       ` Stephen Boyd
2018-12-28 22:27         ` Stephen Boyd
2018-12-17  9:46 ` [PATCH 06/13] clk: qcom: hfpll: " Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:27   ` Bjorn Andersson
2019-01-17  6:27     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 07/13] clk: qcom: hfpll: register as clock provider Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:28   ` Bjorn Andersson
2019-01-17  6:28     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 08/13] clk: qcom: hfpll: CLK_IGNORE_UNUSED Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:33   ` Bjorn Andersson
2019-01-17  6:33     ` Bjorn Andersson
2019-01-17  8:38     ` Jorge Ramirez
2019-01-17  8:38       ` Jorge Ramirez
2019-01-17 10:08       ` Viresh Kumar
2019-01-17 10:08         ` Viresh Kumar
2019-01-17 10:46         ` Jorge Ramirez
2019-01-17 10:46           ` Jorge Ramirez
2019-01-22 18:47           ` Stephen Boyd
2019-01-22 18:47             ` Stephen Boyd
2019-01-22 19:35             ` Jorge Ramirez
2019-01-22 19:35               ` Jorge Ramirez
2018-12-17  9:46 ` [PATCH 09/13] arm64: dts: qcom: qcs404: Add OPP table Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:35   ` Bjorn Andersson
2019-01-17  6:35     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 10/13] arm64: dts: qcom: qcs404: Add HFPLL node Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2018-12-17 19:39   ` Stephen Boyd
2018-12-17 19:39     ` Stephen Boyd
2019-01-17  6:38     ` Bjorn Andersson
2019-01-17  6:38       ` Bjorn Andersson
2019-01-22 18:49       ` Stephen Boyd
2019-01-22 18:49         ` Stephen Boyd
2018-12-17  9:46 ` [PATCH 11/13] arm64: dts: qcom: qcs404: Add the clocks for APCS mux/divider Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:35   ` Bjorn Andersson
2019-01-17  6:35     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 12/13] arm64: dts: qcom: qcs404: Add cpufreq support Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:36   ` Bjorn Andersson
2019-01-17  6:36     ` Bjorn Andersson
2018-12-17  9:46 ` [PATCH 13/13] arm64: defconfig: Enable HFPLL Jorge Ramirez-Ortiz
2018-12-17  9:46   ` Jorge Ramirez-Ortiz
2019-01-17  6:36   ` Bjorn Andersson
2019-01-17  6:36     ` Bjorn Andersson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181221192823.GA9704@minitux \
    --to=bjorn.andersson@linaro.org \
    --cc=amit.kucheria@linaro.org \
    --cc=andy.gross@linaro.org \
    --cc=arnd@arndb.de \
    --cc=david.brown@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=enric.balletbo@collabora.com \
    --cc=georgi.djakov@linaro.org \
    --cc=heiko@sntech.de \
    --cc=horms+renesas@verge.net.au \
    --cc=jagan@amarulasolutions.com \
    --cc=jassisinghbrar@gmail.com \
    --cc=jorge.ramirez-ortiz@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mturquette@baylibre.com \
    --cc=niklas.cassel@linaro.org \
    --cc=olof@lixom.net \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=sibis@codeaurora.org \
    --cc=tdas@codeaurora.org \
    --cc=vkoul@kernel.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.