Skip to content

Commit 6b0e34a

Browse files
committed
Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
Pull clk updates from Stephen Boyd: "Mainly driver updates this time around. There's a single patch to the core clk framework that simplifies a runtime PM call. Otherwise the majority of the diff falls to a few SoC drivers: Qualcomm, STM32 and MediaTek. Those SoCs gain some new hardware support and what comes along with that is quite a few lines of data and some clk_ops code. Beyond the new hardware support we have the usual pile of driver updates that add missing clks on already supported SoCs or fix up problems like bad clk tree descriptions. It's nice to see that more drivers are moving to clk_hw based APIs too. New Drivers: - Add STM32MP13 RCC driver (Reset Clock Controller) - MediaTek MT8186 SoC clk support - Airoha EN7523 SoC system clocks - Clock driver for exynosautov9 SoC - Renesas R-Car V4H and RZ/V2M SoCs - Renesas RZ/G2UL SoC - LPASS clk driver for Qualcomm sc7280 SoC - GCC clk driver for Qualcomm SC8280XP SoC Updates: - SDCC uses floor clk ops on Qualcomm MSM8976 - Add modem reset and fix RPM clks on Qualcomm MSM8976 - Add the two missing CLKOUT clocks for U8500/DB8500 SoC - Mark some clks critical on Ingenic X1000 - Convert ux500 to clk_hw - Move MediaTek driver to clk_hw provider APIs - Use i2c driver probe_new to avoid id scans - Convert a number of Rockchip dt bindings to YAML - Mark hclk_vo critical on Rockchip rk3568 - Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage - Various cleanups like memory allocation error checks and plugged leaks - Allwinner H6 RTC clock support - Allwinner H616 32 kHz clock support - Add the Universal Flash Storage clock on Renesas R-Car S4-8 - Add I2C, SSIF-2 (sound), USB, CANFD, OSTM (timer), WDT, SPI Multi I/O Bus, RSPI, TSU (thermal), and ADC clocks and resets on Renesas RZ/G2UL - Add display clock support on Renesas RZ/G2L - Add RPC (QSPI/HyperFlash) clocks on Renesas R-Car E3 and D3 - Add 27 MHz phy PLL ref clock on i.MX - Add mcore_booted module parameter to tell kernel M core has already booted for i.MX - Remove snvs clock on i.MX because it was for secure world only - Add dt bindings for i.MX8MN GPT - Add DISP2 pixel clock for i.MX8MP - Add clkout1/2 for i.MX8MP - Fix parent clock of ubs_root_clk for i.MX8MP - Implement better RCG parking on Qualcomm SoCs using the shared RCG clk ops - Kerneldoc fixes - Switch Tegra BPMP to determine_rate clk op - Add a pointer to dt schema for generic clock bindings" * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (168 commits) Revert "clk: qcom: regmap-mux: add pipe clk implementation" Revert "clk: qcom: gcc-sc7280: use new clk_regmap_mux_safe_ops for PCIe pipe clocks" Revert "clk: qcom: gcc-sm8450: use new clk_regmap_mux_safe_ops for PCIe pipe clocks" clk: bcm: rpi: Use correct order for the parameters of devm_kcalloc() clk: stm32mp13: add safe mux management clk: stm32mp13: add multi mux function clk: stm32mp13: add all STM32MP13 kernel clocks clk: stm32mp13: add all STM32MP13 peripheral clocks clk: stm32mp13: manage secured clocks clk: stm32mp13: add composite clock clk: stm32mp13: add stm32 divider clock clk: stm32mp13: add stm32_gate management clk: stm32mp13: add stm32_mux clock management clk: stm32: Introduce STM32MP13 RCC drivers (Reset Clock Controller) dt-bindings: rcc: stm32: add new compatible for STM32MP13 SoC clk: ti: clkctrl: replace usage of found with dedicated list iterator variable clk: ti: composite: Prefer kcalloc over open coded arithmetic dt-bindings: clock: exynosautov9: correct count of NR_CLK clk: mediatek: mt8173: Switch to clk_hw provider APIs clk: mediatek: Switch to clk_hw provider APIs ...
2 parents 3cc3014 + 71cc785 commit 6b0e34a

File tree

249 files changed

+22752
-2050
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

249 files changed

+22752
-2050
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: "http://devicetree.org/schemas/arm/mediatek/mediatek,mt8186-clock.yaml#"
5+
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6+
7+
title: MediaTek Functional Clock Controller for MT8186
8+
9+
maintainers:
10+
- Chun-Jie Chen <[email protected]>
11+
12+
description: |
13+
The clock architecture in MediaTek like below
14+
PLLs -->
15+
dividers -->
16+
muxes
17+
-->
18+
clock gate
19+
20+
The devices provide clock gate control in different IP blocks.
21+
22+
properties:
23+
compatible:
24+
items:
25+
- enum:
26+
- mediatek,mt8186-imp_iic_wrap
27+
- mediatek,mt8186-mfgsys
28+
- mediatek,mt8186-wpesys
29+
- mediatek,mt8186-imgsys1
30+
- mediatek,mt8186-imgsys2
31+
- mediatek,mt8186-vdecsys
32+
- mediatek,mt8186-vencsys
33+
- mediatek,mt8186-camsys
34+
- mediatek,mt8186-camsys_rawa
35+
- mediatek,mt8186-camsys_rawb
36+
- mediatek,mt8186-mdpsys
37+
- mediatek,mt8186-ipesys
38+
reg:
39+
maxItems: 1
40+
41+
'#clock-cells':
42+
const: 1
43+
44+
required:
45+
- compatible
46+
- reg
47+
48+
additionalProperties: false
49+
50+
examples:
51+
- |
52+
imp_iic_wrap: clock-controller@11017000 {
53+
compatible = "mediatek,mt8186-imp_iic_wrap";
54+
reg = <0x11017000 0x1000>;
55+
#clock-cells = <1>;
56+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: "http://devicetree.org/schemas/arm/mediatek/mediatek,mt8186-sys-clock.yaml#"
5+
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6+
7+
title: MediaTek System Clock Controller for MT8186
8+
9+
maintainers:
10+
- Chun-Jie Chen <[email protected]>
11+
12+
description: |
13+
The clock architecture in MediaTek like below
14+
PLLs -->
15+
dividers -->
16+
muxes
17+
-->
18+
clock gate
19+
20+
The apmixedsys provides most of PLLs which generated from SoC 26m.
21+
The topckgen provides dividers and muxes which provide the clock source to other IP blocks.
22+
The infracfg_ao provides clock gate in peripheral and infrastructure IP blocks.
23+
The mcusys provides mux control to select the clock source in AP MCU.
24+
The device nodes also provide the system control capacity for configuration.
25+
26+
properties:
27+
compatible:
28+
items:
29+
- enum:
30+
- mediatek,mt8186-mcusys
31+
- mediatek,mt8186-topckgen
32+
- mediatek,mt8186-infracfg_ao
33+
- mediatek,mt8186-apmixedsys
34+
- const: syscon
35+
36+
reg:
37+
maxItems: 1
38+
39+
'#clock-cells':
40+
const: 1
41+
42+
required:
43+
- compatible
44+
- reg
45+
46+
additionalProperties: false
47+
48+
examples:
49+
- |
50+
topckgen: syscon@10000000 {
51+
compatible = "mediatek,mt8186-topckgen", "syscon";
52+
reg = <0x10000000 0x1000>;
53+
#clock-cells = <1>;
54+
};
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/airoha,en7523-scu.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: EN7523 Clock Device Tree Bindings
8+
9+
maintainers:
10+
- Felix Fietkau <[email protected]>
11+
- John Crispin <[email protected]>
12+
13+
description: |
14+
This node defines the System Control Unit of the EN7523 SoC,
15+
a collection of registers configuring many different aspects of the SoC.
16+
17+
The clock driver uses it to read and configure settings of the
18+
PLL controller, which provides clocks for the CPU, the bus and
19+
other SoC internal peripherals.
20+
21+
Each clock is assigned an identifier and client nodes use this identifier
22+
to specify which clock they consume.
23+
24+
All these identifiers can be found in:
25+
[1]: <include/dt-bindings/clock/en7523-clk.h>.
26+
27+
The clocks are provided inside a system controller node.
28+
29+
properties:
30+
compatible:
31+
items:
32+
- const: airoha,en7523-scu
33+
34+
reg:
35+
maxItems: 2
36+
37+
"#clock-cells":
38+
description:
39+
The first cell indicates the clock number, see [1] for available
40+
clocks.
41+
const: 1
42+
43+
required:
44+
- compatible
45+
- reg
46+
- '#clock-cells'
47+
48+
additionalProperties: false
49+
50+
examples:
51+
- |
52+
#include <dt-bindings/clock/en7523-clk.h>
53+
scu: system-controller@1fa20000 {
54+
compatible = "airoha,en7523-scu";
55+
reg = <0x1fa20000 0x400>,
56+
<0x1fb00000 0x1000>;
57+
#clock-cells = <1>;
58+
};
Lines changed: 2 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -1,186 +1,2 @@
1-
This binding is a work-in-progress, and are based on some experimental
2-
work by benh[1].
3-
4-
Sources of clock signal can be represented by any node in the device
5-
tree. Those nodes are designated as clock providers. Clock consumer
6-
nodes use a phandle and clock specifier pair to connect clock provider
7-
outputs to clock inputs. Similar to the gpio specifiers, a clock
8-
specifier is an array of zero, one or more cells identifying the clock
9-
output on a device. The length of a clock specifier is defined by the
10-
value of a #clock-cells property in the clock provider node.
11-
12-
[1] https://patchwork.ozlabs.org/patch/31551/
13-
14-
==Clock providers==
15-
16-
Required properties:
17-
#clock-cells: Number of cells in a clock specifier; Typically 0 for nodes
18-
with a single clock output and 1 for nodes with multiple
19-
clock outputs.
20-
21-
Optional properties:
22-
clock-output-names: Recommended to be a list of strings of clock output signal
23-
names indexed by the first cell in the clock specifier.
24-
However, the meaning of clock-output-names is domain
25-
specific to the clock provider, and is only provided to
26-
encourage using the same meaning for the majority of clock
27-
providers. This format may not work for clock providers
28-
using a complex clock specifier format. In those cases it
29-
is recommended to omit this property and create a binding
30-
specific names property.
31-
32-
Clock consumer nodes must never directly reference
33-
the provider's clock-output-names property.
34-
35-
For example:
36-
37-
oscillator {
38-
#clock-cells = <1>;
39-
clock-output-names = "ckil", "ckih";
40-
};
41-
42-
- this node defines a device with two clock outputs, the first named
43-
"ckil" and the second named "ckih". Consumer nodes always reference
44-
clocks by index. The names should reflect the clock output signal
45-
names for the device.
46-
47-
clock-indices: If the identifying number for the clocks in the node
48-
is not linear from zero, then this allows the mapping of
49-
identifiers into the clock-output-names array.
50-
51-
For example, if we have two clocks <&oscillator 1> and <&oscillator 3>:
52-
53-
oscillator {
54-
compatible = "myclocktype";
55-
#clock-cells = <1>;
56-
clock-indices = <1>, <3>;
57-
clock-output-names = "clka", "clkb";
58-
}
59-
60-
This ensures we do not have any empty strings in clock-output-names
61-
62-
63-
==Clock consumers==
64-
65-
Required properties:
66-
clocks: List of phandle and clock specifier pairs, one pair
67-
for each clock input to the device. Note: if the
68-
clock provider specifies '0' for #clock-cells, then
69-
only the phandle portion of the pair will appear.
70-
71-
Optional properties:
72-
clock-names: List of clock input name strings sorted in the same
73-
order as the clocks property. Consumers drivers
74-
will use clock-names to match clock input names
75-
with clocks specifiers.
76-
clock-ranges: Empty property indicating that child nodes can inherit named
77-
clocks from this node. Useful for bus nodes to provide a
78-
clock to their children.
79-
80-
For example:
81-
82-
device {
83-
clocks = <&osc 1>, <&ref 0>;
84-
clock-names = "baud", "register";
85-
};
86-
87-
88-
This represents a device with two clock inputs, named "baud" and "register".
89-
The baud clock is connected to output 1 of the &osc device, and the register
90-
clock is connected to output 0 of the &ref.
91-
92-
==Example==
93-
94-
/* external oscillator */
95-
osc: oscillator {
96-
compatible = "fixed-clock";
97-
#clock-cells = <0>;
98-
clock-frequency = <32678>;
99-
clock-output-names = "osc";
100-
};
101-
102-
/* phase-locked-loop device, generates a higher frequency clock
103-
* from the external oscillator reference */
104-
pll: pll@4c000 {
105-
compatible = "vendor,some-pll-interface"
106-
#clock-cells = <1>;
107-
clocks = <&osc 0>;
108-
clock-names = "ref";
109-
reg = <0x4c000 0x1000>;
110-
clock-output-names = "pll", "pll-switched";
111-
};
112-
113-
/* UART, using the low frequency oscillator for the baud clock,
114-
* and the high frequency switched PLL output for register
115-
* clocking */
116-
uart@a000 {
117-
compatible = "fsl,imx-uart";
118-
reg = <0xa000 0x1000>;
119-
interrupts = <33>;
120-
clocks = <&osc 0>, <&pll 1>;
121-
clock-names = "baud", "register";
122-
};
123-
124-
This DT fragment defines three devices: an external oscillator to provide a
125-
low-frequency reference clock, a PLL device to generate a higher frequency
126-
clock signal, and a UART.
127-
128-
* The oscillator is fixed-frequency, and provides one clock output, named "osc".
129-
* The PLL is both a clock provider and a clock consumer. It uses the clock
130-
signal generated by the external oscillator, and provides two output signals
131-
("pll" and "pll-switched").
132-
* The UART has its baud clock connected the external oscillator and its
133-
register clock connected to the PLL clock (the "pll-switched" signal)
134-
135-
==Assigned clock parents and rates==
136-
137-
Some platforms may require initial configuration of default parent clocks
138-
and clock frequencies. Such a configuration can be specified in a device tree
139-
node through assigned-clocks, assigned-clock-parents and assigned-clock-rates
140-
properties. The assigned-clock-parents property should contain a list of parent
141-
clocks in the form of a phandle and clock specifier pair and the
142-
assigned-clock-rates property should contain a list of frequencies in Hz. Both
143-
these properties should correspond to the clocks listed in the assigned-clocks
144-
property.
145-
146-
To skip setting parent or rate of a clock its corresponding entry should be
147-
set to 0, or can be omitted if it is not followed by any non-zero entry.
148-
149-
uart@a000 {
150-
compatible = "fsl,imx-uart";
151-
reg = <0xa000 0x1000>;
152-
...
153-
clocks = <&osc 0>, <&pll 1>;
154-
clock-names = "baud", "register";
155-
156-
assigned-clocks = <&clkcon 0>, <&pll 2>;
157-
assigned-clock-parents = <&pll 2>;
158-
assigned-clock-rates = <0>, <460800>;
159-
};
160-
161-
In this example the <&pll 2> clock is set as parent of clock <&clkcon 0> and
162-
the <&pll 2> clock is assigned a frequency value of 460800 Hz.
163-
164-
Configuring a clock's parent and rate through the device node that consumes
165-
the clock can be done only for clocks that have a single user. Specifying
166-
conflicting parent or rate configuration in multiple consumer nodes for
167-
a shared clock is forbidden.
168-
169-
Configuration of common clocks, which affect multiple consumer devices can
170-
be similarly specified in the clock provider node.
171-
172-
==Protected clocks==
173-
174-
Some platforms or firmwares may not fully expose all the clocks to the OS, such
175-
as in situations where those clks are used by drivers running in ARM secure
176-
execution levels. Such a configuration can be specified in device tree with the
177-
protected-clocks property in the form of a clock specifier list. This property should
178-
only be specified in the node that is providing the clocks being protected:
179-
180-
clock-controller@a000f000 {
181-
compatible = "vendor,clk95;
182-
reg = <0xa000f000 0x1000>
183-
#clocks-cells = <1>;
184-
...
185-
protected-clocks = <UART3_CLK>, <SPI5_CLK>;
186-
};
1+
This file has moved to the clock binding schema:
2+
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml

Documentation/devicetree/bindings/clock/qcom,gcc-apq8064.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ description: |
2020
See also:
2121
- dt-bindings/clock/qcom,gcc-msm8960.h
2222
- dt-bindings/reset/qcom,gcc-msm8960.h
23-
- dt-bindings/clock/qcom,gcc-apq8084.h
24-
- dt-bindings/reset/qcom,gcc-apq8084.h
2523
2624
properties:
2725
compatible:
28-
const: qcom,gcc-apq8084
26+
const: qcom,gcc-apq8064
2927

3028
nvmem-cells:
3129
minItems: 1

0 commit comments

Comments
 (0)