Skip to content

Commit 3e4d618

Browse files
Gabriel-Fernandez-stmbebarino
authored andcommitted
clk: stm32h7: Add stm32h743 clock driver
This patch enables clocks for STM32H743 boards. Signed-off-by: Gabriel Fernandez <[email protected]> for MFD changes: Acked-by: Lee Jones <[email protected]> for DT-Bindings Acked-by: Rob Herring <[email protected]> Signed-off-by: Stephen Boyd <[email protected]>
1 parent 0a9c869 commit 3e4d618

File tree

5 files changed

+1783
-0
lines changed

5 files changed

+1783
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
STMicroelectronics STM32H7 Reset and Clock Controller
2+
=====================================================
3+
4+
The RCC IP is both a reset and a clock controller.
5+
6+
Please refer to clock-bindings.txt for common clock controller binding usage.
7+
Please also refer to reset.txt for common reset controller binding usage.
8+
9+
Required properties:
10+
- compatible: Should be:
11+
"st,stm32h743-rcc"
12+
13+
- reg: should be register base and length as documented in the
14+
datasheet
15+
16+
- #reset-cells: 1, see below
17+
18+
- #clock-cells : from common clock binding; shall be set to 1
19+
20+
- clocks: External oscillator clock phandle
21+
- high speed external clock signal (HSE)
22+
- low speed external clock signal (LSE)
23+
- external I2S clock (I2S_CKIN)
24+
25+
Optional properties:
26+
- st,syscfg: phandle for pwrcfg, mandatory to disable/enable backup domain
27+
write protection (RTC clock).
28+
29+
Example:
30+
31+
rcc: reset-clock-controller@58024400 {
32+
compatible = "st,stm32h743-rcc", "st,stm32-rcc";
33+
reg = <0x58024400 0x400>;
34+
#reset-cells = <1>;
35+
#clock-cells = <2>;
36+
clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s_ckin>;
37+
38+
st,syscfg = <&pwrcfg>;
39+
};
40+
41+
The peripheral clock consumer should specify the desired clock by
42+
having the clock ID in its "clocks" phandle cell.
43+
44+
Example:
45+
46+
timer5: timer@40000c00 {
47+
compatible = "st,stm32-timer";
48+
reg = <0x40000c00 0x400>;
49+
interrupts = <50>;
50+
clocks = <&rcc TIM5_CK>;
51+
};
52+
53+
Specifying softreset control of devices
54+
=======================================
55+
56+
Device nodes should specify the reset channel required in their "resets"
57+
property, containing a phandle to the reset device node and an index specifying
58+
which channel to use.
59+
The index is the bit number within the RCC registers bank, starting from RCC
60+
base address.
61+
It is calculated as: index = register_offset / 4 * 32 + bit_offset.
62+
Where bit_offset is the bit offset within the register.
63+
64+
For example, for CRC reset:
65+
crc = AHB4RSTR_offset / 4 * 32 + CRCRST_bit_offset = 0x88 / 4 * 32 + 19 = 1107
66+
67+
Example:
68+
69+
timer2 {
70+
resets = <&rcc STM32H7_APB1L_RESET(TIM2)>;
71+
};

drivers/clk/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ obj-$(CONFIG_COMMON_CLK_SI5351) += clk-si5351.o
4545
obj-$(CONFIG_COMMON_CLK_SI514) += clk-si514.o
4646
obj-$(CONFIG_COMMON_CLK_SI570) += clk-si570.o
4747
obj-$(CONFIG_ARCH_STM32) += clk-stm32f4.o
48+
obj-$(CONFIG_ARCH_STM32) += clk-stm32h7.o
4849
obj-$(CONFIG_ARCH_TANGO) += clk-tango4.o
4950
obj-$(CONFIG_CLK_TWL6040) += clk-twl6040.o
5051
obj-$(CONFIG_ARCH_U300) += clk-u300.o

0 commit comments

Comments
 (0)