* [PATCH v3 0/7] add Amlogic A1 clock controller driver
@ 2019-11-29 14:45 Jian Hu
2019-11-29 14:45 ` [PATCH v3 1/7] dt-bindings: clock: meson: add A1 PLL clock controller bindings Jian Hu
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jian Hu @ 2019-11-29 14:45 UTC (permalink / raw)
To: Jerome Brunet, Neil Armstrong
Cc: Jian Hu, Kevin Hilman, Rob Herring, Martin Blumenstingl,
Michael Turquette, Stephen Boyd, Qiufang Dai, Jianxin Pan,
Victor Wan, Chandle Zou, linux-clk, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
add support for Amlogic A1 clock driver, the clock includes
three parts: peripheral clocks, pll clocks, CPU clocks.
sys pll and CPU clocks will be sent in next patch.
Changes since v1 at [2]:
-add probe function for A1
-seperate the clock driver into two patch
-change some clock flags and ops
-add support for a1 PLL ops
-add A1 clock node
Changes since v1 at [1]:
-place A1 config alphabetically
-add actual reason for RO ops, CLK_IS_CRITICAL, CLK_IGNORE_UNUSED
-separate the driver into two driver: peripheral and pll driver
-delete CLK_IGNORE_UNUSED flag for pwm b/c/d/e/f clock, dsp clock
-delete the change in Kconfig.platforms, address to Kevin alone
-remove the useless comments
-modify the meson pll driver to support A1 PLLs
[1] https://lkml.kernel.org/r/1569411888-98116-1-git-send-email-jian.hu@amlogic.com
[2] https://lkml.kernel.org/r/1571382865-41978-1-git-send-email-jian.hu@amlogic.com
Jian Hu (7):
dt-bindings: clock: meson: add A1 PLL clock controller bindings
clk: meson: add support for A1 PLL clock ops
clk: meson: eeclk: refactor eeclk common driver to support A1
clk: meson: a1: add support for Amlogic A1 PLL clock driver
dt-bindings: clock: meson: add A1 peripheral clock controller bindings
clk: meson: a1: add support for Amlogic A1 Peripheral clock driver
arm64: dts: meson: add A1 PLL and periphs clock controller
.../bindings/clock/amlogic,a1-clkc.yaml | 70 +
.../bindings/clock/amlogic,a1-pll-clkc.yaml | 56 +
arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 26 +
drivers/clk/meson/Kconfig | 20 +
drivers/clk/meson/Makefile | 2 +
drivers/clk/meson/a1-pll.c | 334 +++
drivers/clk/meson/a1-pll.h | 56 +
drivers/clk/meson/a1.c | 2309 +++++++++++++++++
drivers/clk/meson/a1.h | 120 +
drivers/clk/meson/clk-pll.c | 21 +
drivers/clk/meson/clk-pll.h | 1 +
drivers/clk/meson/meson-eeclk.c | 59 +-
drivers/clk/meson/meson-eeclk.h | 2 +
drivers/clk/meson/parm.h | 1 +
include/dt-bindings/clock/a1-clkc.h | 98 +
include/dt-bindings/clock/a1-pll-clkc.h | 16 +
16 files changed, 3181 insertions(+), 10 deletions(-)
create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-clkc.yaml
create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
create mode 100644 drivers/clk/meson/a1-pll.c
create mode 100644 drivers/clk/meson/a1-pll.h
create mode 100644 drivers/clk/meson/a1.c
create mode 100644 drivers/clk/meson/a1.h
create mode 100644 include/dt-bindings/clock/a1-clkc.h
create mode 100644 include/dt-bindings/clock/a1-pll-clkc.h
--
2.24.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/7] dt-bindings: clock: meson: add A1 PLL clock controller bindings
2019-11-29 14:45 [PATCH v3 0/7] add Amlogic A1 clock controller driver Jian Hu
@ 2019-11-29 14:45 ` Jian Hu
2019-11-29 14:46 ` [PATCH v3 2/7] clk: meson: add support for A1 PLL clock ops Jian Hu
2019-11-29 15:28 ` [PATCH v3 0/7] add Amlogic A1 clock controller driver Jerome Brunet
2 siblings, 0 replies; 5+ messages in thread
From: Jian Hu @ 2019-11-29 14:45 UTC (permalink / raw)
To: Jerome Brunet, Neil Armstrong
Cc: Jian Hu, Kevin Hilman, Rob Herring, Martin Blumenstingl,
Michael Turquette, Stephen Boyd, Qiufang Dai, Jianxin Pan,
Victor Wan, Chandle Zou, linux-clk, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
Add the documentation to support Amlogic A1 PLL clock driver,
and add A1 PLL clock controller bindings.
Signed-off-by: Jian Hu <jian.hu@amlogic.com>
---
.../bindings/clock/amlogic,a1-pll-clkc.yaml | 56 +++++++++++++++++++
include/dt-bindings/clock/a1-pll-clkc.h | 16 ++++++
2 files changed, 72 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
create mode 100644 include/dt-bindings/clock/a1-pll-clkc.h
diff --git a/Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
new file mode 100644
index 000000000000..d008bfeb3c3a
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/clock/amlogic,a1-pll-clkc.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Amlogic Meson A/C serials PLL Clock Control Unit Device Tree Bindings
+
+maintainers:
+ - Neil Armstrong <narmstrong@baylibre.com>
+ - Jerome Brunet <jbrunet@baylibre.com>
+ - Jian Hu <jian.hu@jian.hu.com>
+
+properties:
+ compatible:
+ - enum:
+ - amlogic,a1-pll-clkc
+ "#clock-cells":
+ const: 1
+
+ reg:
+ maxItems: 1
+
+clocks:
+ minItems: 2
+ maxItems: 2
+ items:
+ - description: Input xtal_fixpll
+ - description: Input xtal_hifipll
+
+clock-names:
+ minItems: 2
+ maxItems: 2
+ items:
+ - const: xtal_fixpll
+ - const: xtal_hifipll
+
+required:
+ - compatible
+ - "#clock-cells"
+ - reg
+ - clocks
+ - clock-names
+
+additionalProperties: false
+
+examples:
+ - |
+ clkc_pll: pll-clock-controller {
+ compatible = "amlogic,a1-pll-clkc";
+ reg = <0 0x7c80 0 0x18c>;
+ #clock-cells = <1>;
+ };
diff --git a/include/dt-bindings/clock/a1-pll-clkc.h b/include/dt-bindings/clock/a1-pll-clkc.h
new file mode 100644
index 000000000000..58eae237e503
--- /dev/null
+++ b/include/dt-bindings/clock/a1-pll-clkc.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+#ifndef __A1_PLL_CLKC_H
+#define __A1_PLL_CLKC_H
+
+#define CLKID_FIXED_PLL 1
+#define CLKID_FCLK_DIV2 6
+#define CLKID_FCLK_DIV3 7
+#define CLKID_FCLK_DIV5 8
+#define CLKID_FCLK_DIV7 9
+#define CLKID_HIFI_PLL 10
+
+#endif /* __A1_PLL_CLKC_H */
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 2/7] clk: meson: add support for A1 PLL clock ops
2019-11-29 14:45 [PATCH v3 0/7] add Amlogic A1 clock controller driver Jian Hu
2019-11-29 14:45 ` [PATCH v3 1/7] dt-bindings: clock: meson: add A1 PLL clock controller bindings Jian Hu
@ 2019-11-29 14:46 ` Jian Hu
2019-11-29 15:28 ` [PATCH v3 0/7] add Amlogic A1 clock controller driver Jerome Brunet
2 siblings, 0 replies; 5+ messages in thread
From: Jian Hu @ 2019-11-29 14:46 UTC (permalink / raw)
To: Jerome Brunet, Neil Armstrong
Cc: Jian Hu, Kevin Hilman, Rob Herring, Martin Blumenstingl,
Michael Turquette, Stephen Boyd, Qiufang Dai, Jianxin Pan,
Victor Wan, Chandle Zou, linux-clk, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
The A1 PLL design is different with previous SoCs. The PLL
internal analog modules Power-on sequence is different
with previous, and thus requires a strict register sequence to
enable the PLL.
Signed-off-by: Jian Hu <jian.hu@amlogic.com>
---
drivers/clk/meson/clk-pll.c | 21 +++++++++++++++++++++
drivers/clk/meson/clk-pll.h | 1 +
drivers/clk/meson/parm.h | 1 +
3 files changed, 23 insertions(+)
diff --git a/drivers/clk/meson/clk-pll.c b/drivers/clk/meson/clk-pll.c
index ddb1e5634739..4aff31a51589 100644
--- a/drivers/clk/meson/clk-pll.c
+++ b/drivers/clk/meson/clk-pll.c
@@ -318,6 +318,23 @@ static int meson_clk_pll_enable(struct clk_hw *hw)
struct clk_regmap *clk = to_clk_regmap(hw);
struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
+ /*
+ * The A1 design is different with previous SoCs.The PLL
+ * internal analog modules Power-on sequence is different with
+ * previous, and thus requires a strict register sequence to
+ * enable the PLL.
+ */
+ if (MESON_PARM_APPLICABLE(&pll->current_en)) {
+ /* Enable the pll */
+ meson_parm_write(clk->map, &pll->en, 1);
+ udelay(10);
+ /* Enable the pll self-adaption module current */
+ meson_parm_write(clk->map, &pll->current_en, 1);
+ udelay(40);
+ meson_parm_write(clk->map, &pll->rst, 1);
+ meson_parm_write(clk->map, &pll->rst, 0);
+ }
+
/* do nothing if the PLL is already enabled */
if (clk_hw_is_enabled(hw))
return 0;
@@ -347,6 +364,10 @@ static void meson_clk_pll_disable(struct clk_hw *hw)
/* Disable the pll */
meson_parm_write(clk->map, &pll->en, 0);
+
+ /* Disable PLL internal self-adaption module current */
+ if (MESON_PARM_APPLICABLE(&pll->current_en))
+ meson_parm_write(clk->map, &pll->current_en, 0);
}
static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
diff --git a/drivers/clk/meson/clk-pll.h b/drivers/clk/meson/clk-pll.h
index 367efd0f6410..30f039242a65 100644
--- a/drivers/clk/meson/clk-pll.h
+++ b/drivers/clk/meson/clk-pll.h
@@ -36,6 +36,7 @@ struct meson_clk_pll_data {
struct parm frac;
struct parm l;
struct parm rst;
+ struct parm current_en;
const struct reg_sequence *init_regs;
unsigned int init_count;
const struct pll_params_table *table;
diff --git a/drivers/clk/meson/parm.h b/drivers/clk/meson/parm.h
index 3c9ef1b505ce..c53fb26577e3 100644
--- a/drivers/clk/meson/parm.h
+++ b/drivers/clk/meson/parm.h
@@ -20,6 +20,7 @@
(((reg) & CLRPMASK(width, shift)) | ((val) << (shift)))
#define MESON_PARM_APPLICABLE(p) (!!((p)->width))
+#define MESON_PARM_CURRENT(p) (!!((p)->width))
struct parm {
u16 reg_off;
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 0/7] add Amlogic A1 clock controller driver
2019-11-29 14:45 [PATCH v3 0/7] add Amlogic A1 clock controller driver Jian Hu
2019-11-29 14:45 ` [PATCH v3 1/7] dt-bindings: clock: meson: add A1 PLL clock controller bindings Jian Hu
2019-11-29 14:46 ` [PATCH v3 2/7] clk: meson: add support for A1 PLL clock ops Jian Hu
@ 2019-11-29 15:28 ` Jerome Brunet
2019-12-02 6:01 ` Jian Hu
2 siblings, 1 reply; 5+ messages in thread
From: Jerome Brunet @ 2019-11-29 15:28 UTC (permalink / raw)
To: Jian Hu, Neil Armstrong
Cc: Kevin Hilman, Rob Herring, Martin Blumenstingl,
Michael Turquette, Stephen Boyd, Qiufang Dai, Jianxin Pan,
Victor Wan, Chandle Zou, linux-clk, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
On Fri 29 Nov 2019 at 15:45, Jian Hu <jian.hu@amlogic.com> wrote:
> add support for Amlogic A1 clock driver, the clock includes
> three parts: peripheral clocks, pll clocks, CPU clocks.
> sys pll and CPU clocks will be sent in next patch.
>
> Changes since v1 at [2]:
v2 or v1 ??
> -add probe function for A1
> -seperate the clock driver into two patch
> -change some clock flags and ops
> -add support for a1 PLL ops
> -add A1 clock node
>
> Changes since v1 at [1]:
> -place A1 config alphabetically
> -add actual reason for RO ops, CLK_IS_CRITICAL, CLK_IGNORE_UNUSED
> -separate the driver into two driver: peripheral and pll driver
> -delete CLK_IGNORE_UNUSED flag for pwm b/c/d/e/f clock, dsp clock
> -delete the change in Kconfig.platforms, address to Kevin alone
> -remove the useless comments
> -modify the meson pll driver to support A1 PLLs
>
> [1] https://lkml.kernel.org/r/1569411888-98116-1-git-send-email-jian.hu@amlogic.com
> [2] https://lkml.kernel.org/r/1571382865-41978-1-git-send-email-jian.hu@amlogic.com
>
> Jian Hu (7):
> dt-bindings: clock: meson: add A1 PLL clock controller bindings
> clk: meson: add support for A1 PLL clock ops
> clk: meson: eeclk: refactor eeclk common driver to support A1
> clk: meson: a1: add support for Amlogic A1 PLL clock driver
> dt-bindings: clock: meson: add A1 peripheral clock controller bindings
> clk: meson: a1: add support for Amlogic A1 Peripheral clock driver
> arm64: dts: meson: add A1 PLL and periphs clock controller
The arm64 is for the DT maintainer. Please send it separately after this
series is applied (if it gets applied)
> Please fix the underlying issue, then you can post your series again.
This was a comment on your v2. Did you fix the orphan/ordering issue ?
If you did, you probably should mention it here.
If you did not, I'm probably not going to review this further until you do.
>
> .../bindings/clock/amlogic,a1-clkc.yaml | 70 +
> .../bindings/clock/amlogic,a1-pll-clkc.yaml | 56 +
> arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 26 +
> drivers/clk/meson/Kconfig | 20 +
> drivers/clk/meson/Makefile | 2 +
> drivers/clk/meson/a1-pll.c | 334 +++
> drivers/clk/meson/a1-pll.h | 56 +
> drivers/clk/meson/a1.c | 2309 +++++++++++++++++
> drivers/clk/meson/a1.h | 120 +
> drivers/clk/meson/clk-pll.c | 21 +
> drivers/clk/meson/clk-pll.h | 1 +
> drivers/clk/meson/meson-eeclk.c | 59 +-
> drivers/clk/meson/meson-eeclk.h | 2 +
> drivers/clk/meson/parm.h | 1 +
> include/dt-bindings/clock/a1-clkc.h | 98 +
> include/dt-bindings/clock/a1-pll-clkc.h | 16 +
> 16 files changed, 3181 insertions(+), 10 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-clkc.yaml
> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
> create mode 100644 drivers/clk/meson/a1-pll.c
> create mode 100644 drivers/clk/meson/a1-pll.h
> create mode 100644 drivers/clk/meson/a1.c
> create mode 100644 drivers/clk/meson/a1.h
> create mode 100644 include/dt-bindings/clock/a1-clkc.h
> create mode 100644 include/dt-bindings/clock/a1-pll-clkc.h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 0/7] add Amlogic A1 clock controller driver
2019-11-29 15:28 ` [PATCH v3 0/7] add Amlogic A1 clock controller driver Jerome Brunet
@ 2019-12-02 6:01 ` Jian Hu
0 siblings, 0 replies; 5+ messages in thread
From: Jian Hu @ 2019-12-02 6:01 UTC (permalink / raw)
To: Jerome Brunet, Neil Armstrong
Cc: Kevin Hilman, Rob Herring, Martin Blumenstingl,
Michael Turquette, Stephen Boyd, Qiufang Dai, Jianxin Pan,
Victor Wan, Chandle Zou, linux-clk, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
On 2019/11/29 23:28, Jerome Brunet wrote:
>
> On Fri 29 Nov 2019 at 15:45, Jian Hu <jian.hu@amlogic.com> wrote:
>
>> add support for Amlogic A1 clock driver, the clock includes
>> three parts: peripheral clocks, pll clocks, CPU clocks.
>> sys pll and CPU clocks will be sent in next patch.
>>
>> Changes since v1 at [2]:
>
> v2 or v1 ??
It is v2 here, I will fix it in next version.
>
>> -add probe function for A1
>> -seperate the clock driver into two patch
>> -change some clock flags and ops
>> -add support for a1 PLL ops
>> -add A1 clock node
>>
>> Changes since v1 at [1]:
>> -place A1 config alphabetically
>> -add actual reason for RO ops, CLK_IS_CRITICAL, CLK_IGNORE_UNUSED
>> -separate the driver into two driver: peripheral and pll driver
>> -delete CLK_IGNORE_UNUSED flag for pwm b/c/d/e/f clock, dsp clock
>> -delete the change in Kconfig.platforms, address to Kevin alone
>> -remove the useless comments
>> -modify the meson pll driver to support A1 PLLs
>>
>> [1] https://lkml.kernel.org/r/1569411888-98116-1-git-send-email-jian.hu@amlogic.com
>> [2] https://lkml.kernel.org/r/1571382865-41978-1-git-send-email-jian.hu@amlogic.com
>>
>> Jian Hu (7):
>> dt-bindings: clock: meson: add A1 PLL clock controller bindings
>> clk: meson: add support for A1 PLL clock ops
>> clk: meson: eeclk: refactor eeclk common driver to support A1
>> clk: meson: a1: add support for Amlogic A1 PLL clock driver
>> dt-bindings: clock: meson: add A1 peripheral clock controller bindings
>> clk: meson: a1: add support for Amlogic A1 Peripheral clock driver
>> arm64: dts: meson: add A1 PLL and periphs clock controller
>
> The arm64 is for the DT maintainer. Please send it separately after this
> series is applied (if it gets applied)
>
>> Please fix the underlying issue, then you can post your series again.
>
> This was a comment on your v2. Did you fix the orphan/ordering issue ?
> If you did, you probably should mention it here.
Yes, I have fixed it in A1 periphs driver, not fixed it in CCF.
I have realised a probe function for A1 periphs driver, Not using the
common probe interface in meson-eeclk.c. Skip registering xtal_fixedpll
and xtal_hifipll clocks when register all periphs clocks. And after the
provider registration. Registering xtal_fixedpll and xtal_hifipll clock
alone.
I will add some comments here about orphan issue.
And I have noticed you have fixed it in CCF, I will update the A1
periphs driver, drop the probe function in the next vertion.
Could I send the v4 after your patch 'clk: walk orphan list on clock
provider registration' is applied? Or I can send v4 based on your patch now.
> If you did not, I'm probably not going to review this further until you do.
>
>>
>> .../bindings/clock/amlogic,a1-clkc.yaml | 70 +
>> .../bindings/clock/amlogic,a1-pll-clkc.yaml | 56 +
>> arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 26 +
>> drivers/clk/meson/Kconfig | 20 +
>> drivers/clk/meson/Makefile | 2 +
>> drivers/clk/meson/a1-pll.c | 334 +++
>> drivers/clk/meson/a1-pll.h | 56 +
>> drivers/clk/meson/a1.c | 2309 +++++++++++++++++
>> drivers/clk/meson/a1.h | 120 +
>> drivers/clk/meson/clk-pll.c | 21 +
>> drivers/clk/meson/clk-pll.h | 1 +
>> drivers/clk/meson/meson-eeclk.c | 59 +-
>> drivers/clk/meson/meson-eeclk.h | 2 +
>> drivers/clk/meson/parm.h | 1 +
>> include/dt-bindings/clock/a1-clkc.h | 98 +
>> include/dt-bindings/clock/a1-pll-clkc.h | 16 +
>> 16 files changed, 3181 insertions(+), 10 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-clkc.yaml
>> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,a1-pll-clkc.yaml
>> create mode 100644 drivers/clk/meson/a1-pll.c
>> create mode 100644 drivers/clk/meson/a1-pll.h
>> create mode 100644 drivers/clk/meson/a1.c
>> create mode 100644 drivers/clk/meson/a1.h
>> create mode 100644 include/dt-bindings/clock/a1-clkc.h
>> create mode 100644 include/dt-bindings/clock/a1-pll-clkc.h
>
> .
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-12-02 6:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-29 14:45 [PATCH v3 0/7] add Amlogic A1 clock controller driver Jian Hu
2019-11-29 14:45 ` [PATCH v3 1/7] dt-bindings: clock: meson: add A1 PLL clock controller bindings Jian Hu
2019-11-29 14:46 ` [PATCH v3 2/7] clk: meson: add support for A1 PLL clock ops Jian Hu
2019-11-29 15:28 ` [PATCH v3 0/7] add Amlogic A1 clock controller driver Jerome Brunet
2019-12-02 6:01 ` Jian Hu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).