Skip to content

Commit c7183ff

Browse files
committed
Merge branches 'clk-assigned-rates', 'clk-renesas' and 'clk-scmi' into clk-next
* clk-assigned-rates: clk: clk-conf: support assigned-clock-rates-u64 * clk-renesas: (34 commits) clk: renesas: r9a09g057: Add clock and reset entries for GTM/RIIC/SDHI/WDT clk: renesas: rzv2h: Add support for dynamic switching divider clocks clk: renesas: r9a08g045: Add clocks, resets and power domains for USB dt-bindings: clock: renesas,cpg-clocks: Add top-level constraints clk: renesas: r8a779h0: Add CANFD clock clk: renesas: Add RZ/V2H(P) CPG driver clk: renesas: Add family-specific clock driver for RZ/V2H(P) dt-bindings: clock: renesas: Document RZ/V2H(P) SoC CPG clk: renesas: r8a779h0: Add PWM clock dt-bindings: clock: renesas,cpg-mssr: Document RZ/G2M v3.0 (r8a774a3) clock clk: renesas: rcar-gen4: Remove unused default PLL2/3/4/6 configs clk: renesas: rcar-gen4: Remove unused fixed PLL clock types clk: renesas: rcar-gen4: Remove unused variable PLL2 clock type clk: renesas: r8a779h0: Model PLL1/2/3/4/6 as fractional PLLs clk: renesas: r8a779g0: Model PLL1/3/4/6 as fractional PLLs clk: renesas: r8a779f0: Model PLL1/2/3/6 as fractional PLLs clk: renesas: r8a779a0: Use defines for PLL control registers clk: renesas: rcar-gen4: Add support for fractional 9.24 PLLs clk: renesas: rcar-gen4: Add support for fixed variable PLLs clk: renesas: rcar-gen4: Add support for variable fractional PLLs ... * clk-scmi: clk: scmi: add is_prepared hook
4 parents a2b8802 + 965e063 + f372131 + fc953d4 commit c7183ff

20 files changed

+1686
-196
lines changed

Documentation/devicetree/bindings/clock/renesas,cpg-clocks.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,16 @@ properties:
3232
reg:
3333
maxItems: 1
3434

35-
clocks: true
35+
clocks:
36+
minItems: 1
37+
maxItems: 3
3638

3739
'#clock-cells':
3840
const: 1
3941

40-
clock-output-names: true
42+
clock-output-names:
43+
minItems: 3
44+
maxItems: 17
4145

4246
renesas,mode:
4347
description: Board-specific settings of the MD_CK* bits on R-Mobile A1

Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ properties:
3131
- renesas,r8a7745-cpg-mssr # RZ/G1E
3232
- renesas,r8a77470-cpg-mssr # RZ/G1C
3333
- renesas,r8a774a1-cpg-mssr # RZ/G2M
34+
- renesas,r8a774a3-cpg-mssr # RZ/G2M v3.0
3435
- renesas,r8a774b1-cpg-mssr # RZ/G2N
3536
- renesas,r8a774c0-cpg-mssr # RZ/G2E
3637
- renesas,r8a774e1-cpg-mssr # RZ/G2H
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/renesas,rzv2h-cpg.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Renesas RZ/V2H(P) Clock Pulse Generator (CPG)
8+
9+
maintainers:
10+
- Lad Prabhakar <[email protected]>
11+
12+
description:
13+
On Renesas RZ/V2H(P) SoCs, the CPG (Clock Pulse Generator) handles generation
14+
and control of clock signals for the IP modules, generation and control of resets,
15+
and control over booting, low power consumption and power supply domains.
16+
17+
properties:
18+
compatible:
19+
const: renesas,r9a09g057-cpg
20+
21+
reg:
22+
maxItems: 1
23+
24+
clocks:
25+
items:
26+
- description: AUDIO_EXTAL clock input
27+
- description: RTXIN clock input
28+
- description: QEXTAL clock input
29+
30+
clock-names:
31+
items:
32+
- const: audio_extal
33+
- const: rtxin
34+
- const: qextal
35+
36+
'#clock-cells':
37+
description: |
38+
- For CPG core clocks, the two clock specifier cells must be "CPG_CORE"
39+
and a core clock reference, as defined in
40+
<dt-bindings/clock/renesas,r9a09g057-cpg.h>,
41+
- For module clocks, the two clock specifier cells must be "CPG_MOD" and
42+
a module number. The module number is calculated as the CLKON register
43+
offset index multiplied by 16, plus the actual bit in the register
44+
used to turn the CLK ON. For example, for CGC_GIC_0_GICCLK, the
45+
calculation is (1 * 16 + 3) = 0x13.
46+
const: 2
47+
48+
'#power-domain-cells':
49+
const: 0
50+
51+
'#reset-cells':
52+
description:
53+
The single reset specifier cell must be the reset number. The reset number
54+
is calculated as the reset register offset index multiplied by 16, plus the
55+
actual bit in the register used to reset the specific IP block. For example,
56+
for SYS_0_PRESETN, the calculation is (3 * 16 + 0) = 0x30.
57+
const: 1
58+
59+
required:
60+
- compatible
61+
- reg
62+
- clocks
63+
- clock-names
64+
- '#clock-cells'
65+
- '#power-domain-cells'
66+
- '#reset-cells'
67+
68+
additionalProperties: false
69+
70+
examples:
71+
- |
72+
clock-controller@10420000 {
73+
compatible = "renesas,r9a09g057-cpg";
74+
reg = <0x10420000 0x10000>;
75+
clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
76+
clock-names = "audio_extal", "rtxin", "qextal";
77+
#clock-cells = <2>;
78+
#power-domain-cells = <0>;
79+
#reset-cells = <1>;
80+
};

drivers/clk/clk-conf.c

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <linux/device.h>
1111
#include <linux/of.h>
1212
#include <linux/printk.h>
13+
#include <linux/slab.h>
1314

1415
static int __set_clk_parents(struct device_node *node, bool clk_supplier)
1516
{
@@ -81,11 +82,44 @@ static int __set_clk_parents(struct device_node *node, bool clk_supplier)
8182
static int __set_clk_rates(struct device_node *node, bool clk_supplier)
8283
{
8384
struct of_phandle_args clkspec;
84-
int rc, index = 0;
85+
int rc, count, count_64, index;
8586
struct clk *clk;
86-
u32 rate;
87+
u64 *rates_64 __free(kfree) = NULL;
88+
u32 *rates __free(kfree) = NULL;
89+
90+
count = of_property_count_u32_elems(node, "assigned-clock-rates");
91+
count_64 = of_property_count_u64_elems(node, "assigned-clock-rates-u64");
92+
if (count_64 > 0) {
93+
count = count_64;
94+
rates_64 = kcalloc(count, sizeof(*rates_64), GFP_KERNEL);
95+
if (!rates_64)
96+
return -ENOMEM;
97+
98+
rc = of_property_read_u64_array(node,
99+
"assigned-clock-rates-u64",
100+
rates_64, count);
101+
} else if (count > 0) {
102+
rates = kcalloc(count, sizeof(*rates), GFP_KERNEL);
103+
if (!rates)
104+
return -ENOMEM;
105+
106+
rc = of_property_read_u32_array(node, "assigned-clock-rates",
107+
rates, count);
108+
} else {
109+
return 0;
110+
}
111+
112+
if (rc)
113+
return rc;
114+
115+
for (index = 0; index < count; index++) {
116+
unsigned long rate;
117+
118+
if (rates_64)
119+
rate = rates_64[index];
120+
else
121+
rate = rates[index];
87122

88-
of_property_for_each_u32(node, "assigned-clock-rates", rate) {
89123
if (rate) {
90124
rc = of_parse_phandle_with_args(node, "assigned-clocks",
91125
"#clock-cells", index, &clkspec);
@@ -112,12 +146,11 @@ static int __set_clk_rates(struct device_node *node, bool clk_supplier)
112146

113147
rc = clk_set_rate(clk, rate);
114148
if (rc < 0)
115-
pr_err("clk: couldn't set %s clk rate to %u (%d), current rate: %lu\n",
149+
pr_err("clk: couldn't set %s clk rate to %lu (%d), current rate: %lu\n",
116150
__clk_get_name(clk), rate, rc,
117151
clk_get_rate(clk));
118152
clk_put(clk);
119153
}
120-
index++;
121154
}
122155
return 0;
123156
}

drivers/clk/clk-scmi.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,20 +156,30 @@ static void scmi_clk_atomic_disable(struct clk_hw *hw)
156156
scmi_proto_clk_ops->disable(clk->ph, clk->id, ATOMIC);
157157
}
158158

159-
static int scmi_clk_atomic_is_enabled(struct clk_hw *hw)
159+
static int __scmi_clk_is_enabled(struct clk_hw *hw, bool atomic)
160160
{
161161
int ret;
162162
bool enabled = false;
163163
struct scmi_clk *clk = to_scmi_clk(hw);
164164

165-
ret = scmi_proto_clk_ops->state_get(clk->ph, clk->id, &enabled, ATOMIC);
165+
ret = scmi_proto_clk_ops->state_get(clk->ph, clk->id, &enabled, atomic);
166166
if (ret)
167167
dev_warn(clk->dev,
168168
"Failed to get state for clock ID %d\n", clk->id);
169169

170170
return !!enabled;
171171
}
172172

173+
static int scmi_clk_atomic_is_enabled(struct clk_hw *hw)
174+
{
175+
return __scmi_clk_is_enabled(hw, ATOMIC);
176+
}
177+
178+
static int scmi_clk_is_enabled(struct clk_hw *hw)
179+
{
180+
return __scmi_clk_is_enabled(hw, NOT_ATOMIC);
181+
}
182+
173183
static int scmi_clk_get_duty_cycle(struct clk_hw *hw, struct clk_duty *duty)
174184
{
175185
int ret;
@@ -285,6 +295,8 @@ scmi_clk_ops_alloc(struct device *dev, unsigned long feats_key)
285295

286296
if (feats_key & BIT(SCMI_CLK_ATOMIC_SUPPORTED))
287297
ops->is_enabled = scmi_clk_atomic_is_enabled;
298+
else
299+
ops->is_prepared = scmi_clk_is_enabled;
288300

289301
/* Rate ops */
290302
ops->recalc_rate = scmi_clk_recalc_rate;

drivers/clk/renesas/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ config CLK_RENESAS
4040
select CLK_R9A07G054 if ARCH_R9A07G054
4141
select CLK_R9A08G045 if ARCH_R9A08G045
4242
select CLK_R9A09G011 if ARCH_R9A09G011
43+
select CLK_R9A09G057 if ARCH_R9A09G057
4344
select CLK_SH73A0 if ARCH_SH73A0
4445

4546
if CLK_RENESAS
@@ -193,6 +194,10 @@ config CLK_R9A09G011
193194
bool "RZ/V2M clock support" if COMPILE_TEST
194195
select CLK_RZG2L
195196

197+
config CLK_R9A09G057
198+
bool "RZ/V2H(P) clock support" if COMPILE_TEST
199+
select CLK_RZV2H
200+
196201
config CLK_SH73A0
197202
bool "SH-Mobile AG5 clock support" if COMPILE_TEST
198203
select CLK_RENESAS_CPG_MSTP
@@ -228,6 +233,10 @@ config CLK_RZG2L
228233
bool "RZ/{G2L,G2UL,G3S,V2L} family clock support" if COMPILE_TEST
229234
select RESET_CONTROLLER
230235

236+
config CLK_RZV2H
237+
bool "RZ/V2H(P) family clock support" if COMPILE_TEST
238+
select RESET_CONTROLLER
239+
231240
# Generic
232241
config CLK_RENESAS_CPG_MSSR
233242
bool "CPG/MSSR clock support" if COMPILE_TEST

drivers/clk/renesas/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ obj-$(CONFIG_CLK_R9A07G044) += r9a07g044-cpg.o
3737
obj-$(CONFIG_CLK_R9A07G054) += r9a07g044-cpg.o
3838
obj-$(CONFIG_CLK_R9A08G045) += r9a08g045-cpg.o
3939
obj-$(CONFIG_CLK_R9A09G011) += r9a09g011-cpg.o
40+
obj-$(CONFIG_CLK_R9A09G057) += r9a09g057-cpg.o
4041
obj-$(CONFIG_CLK_SH73A0) += clk-sh73a0.o
4142

4243
# Family
@@ -46,6 +47,7 @@ obj-$(CONFIG_CLK_RCAR_GEN3_CPG) += rcar-gen3-cpg.o
4647
obj-$(CONFIG_CLK_RCAR_GEN4_CPG) += rcar-gen4-cpg.o
4748
obj-$(CONFIG_CLK_RCAR_USB2_CLOCK_SEL) += rcar-usb2-clock-sel.o
4849
obj-$(CONFIG_CLK_RZG2L) += rzg2l-cpg.o
50+
obj-$(CONFIG_CLK_RZV2H) += rzv2h-cpg.o
4951

5052
# Generic
5153
obj-$(CONFIG_CLK_RENESAS_CPG_MSSR) += renesas-cpg-mssr.o

drivers/clk/renesas/r8a779a0-cpg-mssr.c

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ enum clk_ids {
6161
DEF_BASE(_name, _id, CLK_TYPE_GEN4_PLL2X_3X, CLK_MAIN, \
6262
.offset = _offset)
6363

64+
#define CPG_PLL20CR 0x0834 /* PLL20 Control Register */
65+
#define CPG_PLL21CR 0x0838 /* PLL21 Control Register */
66+
#define CPG_PLL30CR 0x083c /* PLL30 Control Register */
67+
#define CPG_PLL31CR 0x0840 /* PLL31 Control Register */
68+
6469
static const struct cpg_core_clk r8a779a0_core_clks[] __initconst = {
6570
/* External Clock Inputs */
6671
DEF_INPUT("extal", CLK_EXTAL),
@@ -70,10 +75,10 @@ static const struct cpg_core_clk r8a779a0_core_clks[] __initconst = {
7075
DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
7176
DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN4_PLL1, CLK_MAIN),
7277
DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
73-
DEF_PLL(".pll20", CLK_PLL20, 0x0834),
74-
DEF_PLL(".pll21", CLK_PLL21, 0x0838),
75-
DEF_PLL(".pll30", CLK_PLL30, 0x083c),
76-
DEF_PLL(".pll31", CLK_PLL31, 0x0840),
78+
DEF_PLL(".pll20", CLK_PLL20, CPG_PLL20CR),
79+
DEF_PLL(".pll21", CLK_PLL21, CPG_PLL21CR),
80+
DEF_PLL(".pll30", CLK_PLL30, CPG_PLL30CR),
81+
DEF_PLL(".pll31", CLK_PLL31, CPG_PLL31CR),
7782

7883
DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
7984
DEF_FIXED(".pll20_div2", CLK_PLL20_DIV2, CLK_PLL20, 2, 1),
@@ -116,17 +121,17 @@ static const struct cpg_core_clk r8a779a0_core_clks[] __initconst = {
116121
DEF_FIXED("cp", R8A779A0_CLK_CP, CLK_EXTAL, 2, 1),
117122
DEF_FIXED("cl16mck", R8A779A0_CLK_CL16MCK, CLK_PLL1_DIV2, 64, 1),
118123

119-
DEF_GEN4_SDH("sd0h", R8A779A0_CLK_SD0H, CLK_SDSRC, 0x870),
120-
DEF_GEN4_SD("sd0", R8A779A0_CLK_SD0, R8A779A0_CLK_SD0H, 0x870),
124+
DEF_GEN4_SDH("sd0h", R8A779A0_CLK_SD0H, CLK_SDSRC, CPG_SD0CKCR),
125+
DEF_GEN4_SD("sd0", R8A779A0_CLK_SD0, R8A779A0_CLK_SD0H, CPG_SD0CKCR),
121126

122127
DEF_BASE("rpc", R8A779A0_CLK_RPC, CLK_TYPE_GEN4_RPC, CLK_RPCSRC),
123128
DEF_BASE("rpcd2", R8A779A0_CLK_RPCD2, CLK_TYPE_GEN4_RPCD2,
124129
R8A779A0_CLK_RPC),
125130

126-
DEF_DIV6P1("mso", R8A779A0_CLK_MSO, CLK_PLL5_DIV4, 0x87c),
127-
DEF_DIV6P1("canfd", R8A779A0_CLK_CANFD, CLK_PLL5_DIV4, 0x878),
128-
DEF_DIV6P1("csi0", R8A779A0_CLK_CSI0, CLK_PLL5_DIV4, 0x880),
129-
DEF_DIV6P1("dsi", R8A779A0_CLK_DSI, CLK_PLL5_DIV4, 0x884),
131+
DEF_DIV6P1("mso", R8A779A0_CLK_MSO, CLK_PLL5_DIV4, CPG_MSOCKCR),
132+
DEF_DIV6P1("canfd", R8A779A0_CLK_CANFD, CLK_PLL5_DIV4, CPG_CANFDCKCR),
133+
DEF_DIV6P1("csi0", R8A779A0_CLK_CSI0, CLK_PLL5_DIV4, CPG_CSICKCR),
134+
DEF_DIV6P1("dsi", R8A779A0_CLK_DSI, CLK_PLL5_DIV4, CPG_DSIEXTCKCR),
130135

131136
DEF_GEN4_OSC("osc", R8A779A0_CLK_OSC, CLK_EXTAL, 8),
132137
DEF_GEN4_MDSEL("r", R8A779A0_CLK_R, 29, CLK_EXTALR, 1, CLK_OCO, 1),
@@ -253,12 +258,12 @@ static const unsigned int r8a779a0_crit_mod_clks[] __initconst = {
253258
*/
254259
#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 13) | \
255260
(((md) & BIT(13)) >> 13))
256-
static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] = {
257-
/* EXTAL div PLL1 mult/div PLL2 mult/div PLL3 mult/div PLL4 mult/div PLL5 mult/div PLL6 mult/div OSC prediv */
258-
{ 1, 128, 1, 0, 0, 0, 0, 144, 1, 192, 1, 0, 0, 16, },
259-
{ 1, 106, 1, 0, 0, 0, 0, 120, 1, 160, 1, 0, 0, 19, },
260-
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
261-
{ 2, 128, 1, 0, 0, 0, 0, 144, 1, 192, 1, 0, 0, 32, },
261+
static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] __initconst = {
262+
/* EXTAL div PLL1 mult/div PLL5 mult/div OSC prediv */
263+
{ 1, 128, 1, 192, 1, 16, },
264+
{ 1, 106, 1, 160, 1, 19, },
265+
{ 0, 0, 0, 0, 0, 0, },
266+
{ 2, 128, 1, 192, 1, 32, },
262267
};
263268

264269

drivers/clk/renesas/r8a779f0-cpg-mssr.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ static const struct cpg_core_clk r8a779f0_core_clks[] __initconst = {
5757
DEF_INPUT("extalr", CLK_EXTALR),
5858

5959
/* Internal Core Clocks */
60-
DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
61-
DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN4_PLL1, CLK_MAIN),
62-
DEF_BASE(".pll2", CLK_PLL2, CLK_TYPE_GEN4_PLL2, CLK_MAIN),
63-
DEF_BASE(".pll3", CLK_PLL3, CLK_TYPE_GEN4_PLL3, CLK_MAIN),
64-
DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
65-
DEF_BASE(".pll6", CLK_PLL6, CLK_TYPE_GEN4_PLL6, CLK_MAIN),
60+
DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
61+
DEF_GEN4_PLL_F9_24(".pll1", 1, CLK_PLL1, CLK_MAIN),
62+
DEF_GEN4_PLL_V9_24(".pll2", 2, CLK_PLL2, CLK_MAIN),
63+
DEF_GEN4_PLL_V9_24(".pll3", 3, CLK_PLL3, CLK_MAIN),
64+
DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
65+
DEF_GEN4_PLL_V9_24(".pll6", 6, CLK_PLL6, CLK_MAIN),
6666

6767
DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
6868
DEF_FIXED(".pll2_div2", CLK_PLL2_DIV2, CLK_PLL2, 2, 1),
@@ -115,13 +115,13 @@ static const struct cpg_core_clk r8a779f0_core_clks[] __initconst = {
115115
DEF_FIXED("sasyncperd2",R8A779F0_CLK_SASYNCPERD2, CLK_SASYNCPER,2, 1),
116116
DEF_FIXED("sasyncperd4",R8A779F0_CLK_SASYNCPERD4, CLK_SASYNCPER,4, 1),
117117

118-
DEF_GEN4_SDH("sd0h", R8A779F0_CLK_SD0H, CLK_SDSRC, 0x870),
119-
DEF_GEN4_SD("sd0", R8A779F0_CLK_SD0, R8A779F0_CLK_SD0H, 0x870),
118+
DEF_GEN4_SDH("sd0h", R8A779F0_CLK_SD0H, CLK_SDSRC, CPG_SD0CKCR),
119+
DEF_GEN4_SD("sd0", R8A779F0_CLK_SD0, R8A779F0_CLK_SD0H, CPG_SD0CKCR),
120120

121121
DEF_BASE("rpc", R8A779F0_CLK_RPC, CLK_TYPE_GEN4_RPC, CLK_RPCSRC),
122122
DEF_BASE("rpcd2", R8A779F0_CLK_RPCD2, CLK_TYPE_GEN4_RPCD2, R8A779F0_CLK_RPC),
123123

124-
DEF_DIV6P1("mso", R8A779F0_CLK_MSO, CLK_PLL5_DIV4, 0x87c),
124+
DEF_DIV6P1("mso", R8A779F0_CLK_MSO, CLK_PLL5_DIV4, CPG_MSOCKCR),
125125

126126
DEF_GEN4_OSC("osc", R8A779F0_CLK_OSC, CLK_EXTAL, 8),
127127
DEF_GEN4_MDSEL("r", R8A779F0_CLK_R, 29, CLK_EXTALR, 1, CLK_OCO, 1),
@@ -187,12 +187,12 @@ static const unsigned int r8a779f0_crit_mod_clks[] __initconst = {
187187
#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 13) | \
188188
(((md) & BIT(13)) >> 13))
189189

190-
static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] = {
191-
/* EXTAL div PLL1 mult/div PLL2 mult/div PLL3 mult/div PLL4 mult/div PLL5 mult/div PLL6 mult/div OSC prediv */
192-
{ 1, 200, 1, 150, 1, 200, 1, 0, 0, 200, 1, 134, 1, 15, },
193-
{ 1, 160, 1, 120, 1, 160, 1, 0, 0, 160, 1, 106, 1, 19, },
194-
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
195-
{ 2, 160, 1, 120, 1, 160, 1, 0, 0, 160, 1, 106, 1, 38, },
190+
static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] __initconst = {
191+
/* EXTAL div PLL1 mult/div PLL5 mult/div OSC prediv */
192+
{ 1, 200, 1, 200, 1, 15, },
193+
{ 1, 160, 1, 160, 1, 19, },
194+
{ 0, 0, 0, 0, 0, 0, },
195+
{ 2, 160, 1, 160, 1, 38, },
196196
};
197197

198198
static int __init r8a779f0_cpg_mssr_init(struct device *dev)

0 commit comments

Comments
 (0)