]>
Commit | Line | Data |
---|---|---|
41655239 DT |
1 | STMicroelectronics STM32 Reset and Clock Controller |
2 | =================================================== | |
3 | ||
57bd63a4 | 4 | The RCC IP is both a reset and a clock controller. |
41655239 | 5 | |
57bd63a4 MC |
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. | |
41655239 DT |
8 | |
9 | Required properties: | |
a064a07f GF |
10 | - compatible: Should be: |
11 | "st,stm32f42xx-rcc" | |
12 | "st,stm32f469-rcc" | |
41655239 DT |
13 | - reg: should be register base and length as documented in the |
14 | datasheet | |
57bd63a4 | 15 | - #reset-cells: 1, see below |
41655239 DT |
16 | - #clock-cells: 2, device nodes should specify the clock in their "clocks" |
17 | property, containing a phandle to the clock device node, an index selecting | |
18 | between gated clocks and other clocks and an index specifying the clock to | |
19 | use. | |
20 | ||
21 | Example: | |
22 | ||
23 | rcc: rcc@40023800 { | |
57bd63a4 | 24 | #reset-cells = <1>; |
41655239 DT |
25 | #clock-cells = <2> |
26 | compatible = "st,stm32f42xx-rcc", "st,stm32-rcc"; | |
27 | reg = <0x40023800 0x400>; | |
28 | }; | |
29 | ||
30 | Specifying gated clocks | |
31 | ======================= | |
32 | ||
33 | The primary index must be set to 0. | |
34 | ||
35 | The secondary index is the bit number within the RCC register bank, starting | |
36 | from the first RCC clock enable register (RCC_AHB1ENR, address offset 0x30). | |
37 | ||
38 | It is calculated as: index = register_offset / 4 * 32 + bit_offset. | |
39 | Where bit_offset is the bit offset within the register (LSB is 0, MSB is 31). | |
40 | ||
57bd63a4 MC |
41 | To simplify the usage and to share bit definition with the reset and clock |
42 | drivers of the RCC IP, macros are available to generate the index in | |
43 | human-readble format. | |
44 | ||
45 | For STM32F4 series, the macro are available here: | |
46 | - include/dt-bindings/mfd/stm32f4-rcc.h | |
47 | ||
41655239 DT |
48 | Example: |
49 | ||
50 | /* Gated clock, AHB1 bit 0 (GPIOA) */ | |
51 | ... { | |
57bd63a4 | 52 | clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)> |
41655239 DT |
53 | }; |
54 | ||
55 | /* Gated clock, AHB2 bit 4 (CRYP) */ | |
56 | ... { | |
57bd63a4 | 57 | clocks = <&rcc 0 STM32F4_AHB2_CLOCK(CRYP)> |
41655239 DT |
58 | }; |
59 | ||
60 | Specifying other clocks | |
61 | ======================= | |
62 | ||
63 | The primary index must be set to 1. | |
64 | ||
65 | The secondary index is bound with the following magic numbers: | |
66 | ||
67 | 0 SYSTICK | |
68 | 1 FCLK | |
69 | ||
70 | Example: | |
71 | ||
72 | /* Misc clock, FCLK */ | |
73 | ... { | |
57bd63a4 MC |
74 | clocks = <&rcc 1 STM32F4_APB1_CLOCK(TIM2)> |
75 | }; | |
76 | ||
77 | ||
78 | Specifying softreset control of devices | |
79 | ======================================= | |
80 | ||
81 | Device nodes should specify the reset channel required in their "resets" | |
82 | property, containing a phandle to the reset device node and an index specifying | |
83 | which channel to use. | |
84 | The index is the bit number within the RCC registers bank, starting from RCC | |
85 | base address. | |
86 | It is calculated as: index = register_offset / 4 * 32 + bit_offset. | |
87 | Where bit_offset is the bit offset within the register. | |
88 | For example, for CRC reset: | |
89 | crc = AHB1RSTR_offset / 4 * 32 + CRCRST_bit_offset = 0x10 / 4 * 32 + 12 = 140 | |
90 | ||
91 | example: | |
92 | ||
93 | timer2 { | |
94 | resets = <&rcc STM32F4_APB1_RESET(TIM2)>; | |
41655239 | 95 | }; |