[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAPLW+4=zjqHreRW83Ag_g0zdNYMfU06JWjmJGm1nkT=Th45whg@mail.gmail.com>
Date: Thu, 29 Feb 2024 18:33:56 -0600
From: Sam Protsenko <semen.protsenko@...aro.org>
To: Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>
Cc: Sylwester Nawrocki <s.nawrocki@...sung.com>, Chanwoo Choi <cw00.choi@...sung.com>,
Alim Akhtar <alim.akhtar@...sung.com>, Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>, Rob Herring <robh@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
Tomasz Figa <tomasz.figa@...il.com>, linux-samsung-soc@...r.kernel.org,
linux-clk@...r.kernel.org, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 13/15] clk: samsung: Implement manual PLL control for
ARM64 SoCs
On Sun, Feb 25, 2024 at 10:09 AM Krzysztof Kozlowski
<krzysztof.kozlowski@...aro.org> wrote:
>
> On 24/02/2024 21:20, Sam Protsenko wrote:
> > Some ARM64 Exynos chips are capable to control PLL clocks automatically.
> > For those chips, whether the PLL is controlled automatically or manually
> > is chosen in PLL_CON1 register with next bits:
> >
> > [28] ENABLE_AUTOMATIC_CLKGATING
> > [1] MANUAL_PLL_CTRL
> > [0] AUTO_PLL_CTRL
> >
> > The bl2 bootloader sets 0x10000001 value for some PLL_CON1 registers,
> > which means any attempt to control those PLLs manually (e.g.
> > disabling/enabling those PLLs or changing MUX parent clocks) would lead
> > to PLL lock timeout with error message like this:
> >
> > Could not lock PLL ...
> >
> > At the moment, all Samsung clock drivers implement manual clock control.
> > So in order to make it possible to control PLLs, corresponding PLL_CON1
> > registers should be set to 0x2 first.
> >
> > Some older ARM64 chips don't implement the automatic clock control
> > though. It also might be desirable to configure some PLLs for manual
> > control, while keeping the default configuration for the rest. So it'd
> > convenient to choose this PLL mode for each CMU separately. Introduce
> > .manual_plls field to CMU structure to choose the PLL control mode.
> > Because it'll be initialized with "false" in all existing CMU
> > structures by default, it won't affect any existing clock drivers,
> > allowing for this feature to be enabled gradually when it's needed with
> > no change for the rest of users. In case .manual_plls is set, set
> > PLL_CON1 registers to manual control, akin to what's already done for
> > gate clocks in exynos_arm64_init_clocks(). Of course, PLL_CON1 registers
> > should be added to corresponding struct samsung_cmu_info::clk_regs array
> > to make sure they get initialized.
> >
> > No functional change. This patch adds a feature, but doesn't enable it
> > for any users.
> >
> > Signed-off-by: Sam Protsenko <semen.protsenko@...aro.org>
> > ---
> > Changes in v3:
> > - none
> >
> > Changes in v2:
> > - none
> >
> > drivers/clk/samsung/clk-exynos-arm64.c | 44 +++++++++++++++++---------
> > drivers/clk/samsung/clk.h | 4 +++
> > 2 files changed, 33 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/clk/samsung/clk-exynos-arm64.c b/drivers/clk/samsung/clk-exynos-arm64.c
> > index 6fb7194df7ab..55490209b9a9 100644
> > --- a/drivers/clk/samsung/clk-exynos-arm64.c
> > +++ b/drivers/clk/samsung/clk-exynos-arm64.c
> > @@ -25,6 +25,19 @@
> > #define GATE_OFF_START 0x2000
> > #define GATE_OFF_END 0x2fff
> >
> > +/* PLL CON register offsets range */
> > +#define PLL_CON_START 0x100
> > +#define PLL_CON_END 0x600
> > +
> > +/* PLL register bits */
> > +#define PLL_CON1_MANUAL BIT(1)
> > +
> > +/* Helper macros to check for particular clock regiter by its offset */
> > +#define IS_GATE_REG(o) ((o) >= GATE_OFF_START && (o) <= GATE_OFF_END)
> > +#define IS_PLL_CONx_REG(o) ((o) >= PLL_CON_START && (o) <= PLL_CON_END)
> > +#define IS_PLL_CON1_REG(o) \
> > + (IS_PLL_CONx_REG(o) && ((o) & 0xf) == 0x4 && !((o) & 0x10))
>
> These should be static functions, because it leads to trickier code. See
> also checkpatch warning.
>
For my taste macros are more compact in this particular case. But I
don't mind, will send out the reworked patches soon.
> Best regards,
> Krzysztof
>
Powered by blists - more mailing lists