Skip to content

Commit fd8c0b5

Browse files
committed
Merge tag 'clk-starfive-for-6.6' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into clk-starfive
Pull StarFive clk driver updates from Conor Dooley: Add support for the System-Top-Group, Image-Signal-Process, Video-Output and PLL clocks on the JH7110 SoC. These drivers come with their associate dt-bindings & the obligatory headers containing defines of clock indices. To maintain backwards compatibility, the PLL driver will fall back to using the fixed factor clocks that were merged for v6.4. The binding has been updated to only permit sourcing the PLL clocks from the PLL's clock controller. Signed-off-by: Conor Dooley <conor.dooley@microchip.com> * tag 'clk-starfive-for-6.6' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux: clk: starfive: Add StarFive JH7110 Video-Output clock driver clk: starfive: Add StarFive JH7110 Image-Signal-Process clock driver clk: starfive: Add StarFive JH7110 System-Top-Group clock driver clk: starfive: jh7110-sys: Add PLL clocks source from DTS clk: starfive: Add StarFive JH7110 PLL clock driver dt-bindings: clock: Add StarFive JH7110 Video-Output clock and reset generator dt-bindings: clock: Add StarFive JH7110 Image-Signal-Process clock and reset generator dt-bindings: clock: Add StarFive JH7110 System-Top-Group clock and reset generator dt-bindings: clock: jh7110-syscrg: Add PLL clock inputs dt-bindings: soc: starfive: Add StarFive syscon module dt-bindings: clock: Add StarFive JH7110 PLL clock generator
2 parents 06c2afb + dae5448 commit fd8c0b5

17 files changed

+1805
-24
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/starfive,jh7110-ispcrg.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: StarFive JH7110 Image-Signal-Process Clock and Reset Generator
8+
9+
maintainers:
10+
- Xingyu Wu <xingyu.wu@starfivetech.com>
11+
12+
properties:
13+
compatible:
14+
const: starfive,jh7110-ispcrg
15+
16+
reg:
17+
maxItems: 1
18+
19+
clocks:
20+
items:
21+
- description: ISP Top core
22+
- description: ISP Top Axi
23+
- description: NOC ISP Bus
24+
- description: external DVP
25+
26+
clock-names:
27+
items:
28+
- const: isp_top_core
29+
- const: isp_top_axi
30+
- const: noc_bus_isp_axi
31+
- const: dvp_clk
32+
33+
resets:
34+
items:
35+
- description: ISP Top core
36+
- description: ISP Top Axi
37+
- description: NOC ISP Bus
38+
39+
'#clock-cells':
40+
const: 1
41+
description:
42+
See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices.
43+
44+
'#reset-cells':
45+
const: 1
46+
description:
47+
See <dt-bindings/reset/starfive,jh7110-crg.h> for valid indices.
48+
49+
power-domains:
50+
maxItems: 1
51+
description:
52+
ISP domain power
53+
54+
required:
55+
- compatible
56+
- reg
57+
- clocks
58+
- clock-names
59+
- resets
60+
- '#clock-cells'
61+
- '#reset-cells'
62+
- power-domains
63+
64+
additionalProperties: false
65+
66+
examples:
67+
- |
68+
#include <dt-bindings/clock/starfive,jh7110-crg.h>
69+
#include <dt-bindings/power/starfive,jh7110-pmu.h>
70+
#include <dt-bindings/reset/starfive,jh7110-crg.h>
71+
72+
ispcrg: clock-controller@19810000 {
73+
compatible = "starfive,jh7110-ispcrg";
74+
reg = <0x19810000 0x10000>;
75+
clocks = <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
76+
<&syscrg JH7110_SYSCLK_ISP_TOP_AXI>,
77+
<&syscrg JH7110_SYSCLK_NOC_BUS_ISP_AXI>,
78+
<&dvp_clk>;
79+
clock-names = "isp_top_core", "isp_top_axi",
80+
"noc_bus_isp_axi", "dvp_clk";
81+
resets = <&syscrg JH7110_SYSRST_ISP_TOP>,
82+
<&syscrg JH7110_SYSRST_ISP_TOP_AXI>,
83+
<&syscrg JH7110_SYSRST_NOC_BUS_ISP_AXI>;
84+
#clock-cells = <1>;
85+
#reset-cells = <1>;
86+
power-domains = <&pwrc JH7110_PD_ISP>;
87+
};
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/starfive,jh7110-pll.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: StarFive JH7110 PLL Clock Generator
8+
9+
description:
10+
These PLLs are high speed, low jitter frequency synthesizers in the JH7110.
11+
Each PLL works in integer mode or fraction mode, with configuration
12+
registers in the sys syscon. So the PLLs node should be a child of
13+
SYS-SYSCON node.
14+
The formula for calculating frequency is
15+
Fvco = Fref * (NI + NF) / M / Q1
16+
17+
maintainers:
18+
- Xingyu Wu <xingyu.wu@starfivetech.com>
19+
20+
properties:
21+
compatible:
22+
const: starfive,jh7110-pll
23+
24+
clocks:
25+
maxItems: 1
26+
description: Main Oscillator (24 MHz)
27+
28+
'#clock-cells':
29+
const: 1
30+
description:
31+
See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices.
32+
33+
required:
34+
- compatible
35+
- clocks
36+
- '#clock-cells'
37+
38+
additionalProperties: false
39+
40+
examples:
41+
- |
42+
clock-controller {
43+
compatible = "starfive,jh7110-pll";
44+
clocks = <&osc>;
45+
#clock-cells = <1>;
46+
};
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/starfive,jh7110-stgcrg.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: StarFive JH7110 System-Top-Group Clock and Reset Generator
8+
9+
maintainers:
10+
- Xingyu Wu <xingyu.wu@starfivetech.com>
11+
12+
properties:
13+
compatible:
14+
const: starfive,jh7110-stgcrg
15+
16+
reg:
17+
maxItems: 1
18+
19+
clocks:
20+
items:
21+
- description: Main Oscillator (24 MHz)
22+
- description: HIFI4 core
23+
- description: STG AXI/AHB
24+
- description: USB (125 MHz)
25+
- description: CPU Bus
26+
- description: HIFI4 Axi
27+
- description: NOC STG Bus
28+
- description: APB Bus
29+
30+
clock-names:
31+
items:
32+
- const: osc
33+
- const: hifi4_core
34+
- const: stg_axiahb
35+
- const: usb_125m
36+
- const: cpu_bus
37+
- const: hifi4_axi
38+
- const: nocstg_bus
39+
- const: apb_bus
40+
41+
'#clock-cells':
42+
const: 1
43+
description:
44+
See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices.
45+
46+
'#reset-cells':
47+
const: 1
48+
description:
49+
See <dt-bindings/reset/starfive,jh7110-crg.h> for valid indices.
50+
51+
required:
52+
- compatible
53+
- reg
54+
- clocks
55+
- clock-names
56+
- '#clock-cells'
57+
- '#reset-cells'
58+
59+
additionalProperties: false
60+
61+
examples:
62+
- |
63+
#include <dt-bindings/clock/starfive,jh7110-crg.h>
64+
65+
stgcrg: clock-controller@10230000 {
66+
compatible = "starfive,jh7110-stgcrg";
67+
reg = <0x10230000 0x10000>;
68+
clocks = <&osc>,
69+
<&syscrg JH7110_SYSCLK_HIFI4_CORE>,
70+
<&syscrg JH7110_SYSCLK_STG_AXIAHB>,
71+
<&syscrg JH7110_SYSCLK_USB_125M>,
72+
<&syscrg JH7110_SYSCLK_CPU_BUS>,
73+
<&syscrg JH7110_SYSCLK_HIFI4_AXI>,
74+
<&syscrg JH7110_SYSCLK_NOCSTG_BUS>,
75+
<&syscrg JH7110_SYSCLK_APB_BUS>;
76+
clock-names = "osc", "hifi4_core",
77+
"stg_axiahb", "usb_125m",
78+
"cpu_bus", "hifi4_axi",
79+
"nocstg_bus", "apb_bus";
80+
#clock-cells = <1>;
81+
#reset-cells = <1>;
82+
};

Documentation/devicetree/bindings/clock/starfive,jh7110-syscrg.yaml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ properties:
2727
- description: External I2S RX left/right channel clock
2828
- description: External TDM clock
2929
- description: External audio master clock
30+
- description: PLL0
31+
- description: PLL1
32+
- description: PLL2
3033

3134
- items:
3235
- description: Main Oscillator (24 MHz)
@@ -38,6 +41,9 @@ properties:
3841
- description: External I2S RX left/right channel clock
3942
- description: External TDM clock
4043
- description: External audio master clock
44+
- description: PLL0
45+
- description: PLL1
46+
- description: PLL2
4147

4248
clock-names:
4349
oneOf:
@@ -52,6 +58,9 @@ properties:
5258
- const: i2srx_lrck_ext
5359
- const: tdm_ext
5460
- const: mclk_ext
61+
- const: pll0_out
62+
- const: pll1_out
63+
- const: pll2_out
5564

5665
- items:
5766
- const: osc
@@ -63,6 +72,9 @@ properties:
6372
- const: i2srx_lrck_ext
6473
- const: tdm_ext
6574
- const: mclk_ext
75+
- const: pll0_out
76+
- const: pll1_out
77+
- const: pll2_out
6678

6779
'#clock-cells':
6880
const: 1
@@ -93,12 +105,14 @@ examples:
93105
<&gmac1_rgmii_rxin>,
94106
<&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
95107
<&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
96-
<&tdm_ext>, <&mclk_ext>;
108+
<&tdm_ext>, <&mclk_ext>,
109+
<&pllclk 0>, <&pllclk 1>, <&pllclk 2>;
97110
clock-names = "osc", "gmac1_rmii_refin",
98111
"gmac1_rgmii_rxin",
99112
"i2stx_bclk_ext", "i2stx_lrck_ext",
100113
"i2srx_bclk_ext", "i2srx_lrck_ext",
101-
"tdm_ext", "mclk_ext";
114+
"tdm_ext", "mclk_ext",
115+
"pll0_out", "pll1_out", "pll2_out";
102116
#clock-cells = <1>;
103117
#reset-cells = <1>;
104118
};
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/starfive,jh7110-voutcrg.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: StarFive JH7110 Video-Output Clock and Reset Generator
8+
9+
maintainers:
10+
- Xingyu Wu <xingyu.wu@starfivetech.com>
11+
12+
properties:
13+
compatible:
14+
const: starfive,jh7110-voutcrg
15+
16+
reg:
17+
maxItems: 1
18+
19+
clocks:
20+
items:
21+
- description: Vout Top core
22+
- description: Vout Top Ahb
23+
- description: Vout Top Axi
24+
- description: Vout Top HDMI MCLK
25+
- description: I2STX0 BCLK
26+
- description: external HDMI pixel
27+
28+
clock-names:
29+
items:
30+
- const: vout_src
31+
- const: vout_top_ahb
32+
- const: vout_top_axi
33+
- const: vout_top_hdmitx0_mclk
34+
- const: i2stx0_bclk
35+
- const: hdmitx0_pixelclk
36+
37+
resets:
38+
maxItems: 1
39+
description: Vout Top core
40+
41+
'#clock-cells':
42+
const: 1
43+
description:
44+
See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices.
45+
46+
'#reset-cells':
47+
const: 1
48+
description:
49+
See <dt-bindings/reset/starfive,jh7110-crg.h> for valid indices.
50+
51+
power-domains:
52+
maxItems: 1
53+
description:
54+
Vout domain power
55+
56+
required:
57+
- compatible
58+
- reg
59+
- clocks
60+
- clock-names
61+
- resets
62+
- '#clock-cells'
63+
- '#reset-cells'
64+
- power-domains
65+
66+
additionalProperties: false
67+
68+
examples:
69+
- |
70+
#include <dt-bindings/clock/starfive,jh7110-crg.h>
71+
#include <dt-bindings/power/starfive,jh7110-pmu.h>
72+
#include <dt-bindings/reset/starfive,jh7110-crg.h>
73+
74+
voutcrg: clock-controller@295C0000 {
75+
compatible = "starfive,jh7110-voutcrg";
76+
reg = <0x295C0000 0x10000>;
77+
clocks = <&syscrg JH7110_SYSCLK_VOUT_SRC>,
78+
<&syscrg JH7110_SYSCLK_VOUT_TOP_AHB>,
79+
<&syscrg JH7110_SYSCLK_VOUT_TOP_AXI>,
80+
<&syscrg JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK>,
81+
<&syscrg JH7110_SYSCLK_I2STX0_BCLK>,
82+
<&hdmitx0_pixelclk>;
83+
clock-names = "vout_src", "vout_top_ahb",
84+
"vout_top_axi", "vout_top_hdmitx0_mclk",
85+
"i2stx0_bclk", "hdmitx0_pixelclk";
86+
resets = <&syscrg JH7110_SYSRST_VOUT_TOP_SRC>;
87+
#clock-cells = <1>;
88+
#reset-cells = <1>;
89+
power-domains = <&pwrc JH7110_PD_VOUT>;
90+
};

0 commit comments

Comments
 (0)