Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/clock/st,stm32mp1-rcc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: STMicroelectronics STM32MP1 Reset Clock Controller maintainers: - Gabriel Fernandez <gabriel.fernandez@foss.st.com> description: | The RCC IP is both a reset and a clock controller. RCC makes also power management (resume/supend and wakeup interrupt). Please also refer to reset.txt for common reset controller binding usage. This binding uses common clock bindings Documentation/devicetree/bindings/clock/clock-bindings.txt Specifying clocks ================= All available clocks are defined as preprocessor macros in dt-bindings/clock/stm32mp1-clks.h header and can be used in device tree sources. Specifying softreset control of devices ======================================= Device nodes should specify the reset channel required in their "resets" property, containing a phandle to the reset device node and an index specifying which channel to use. The index is the bit number within the RCC registers bank, starting from RCC base address. It is calculated as: index = register_offset / 4 * 32 + bit_offset. Where bit_offset is the bit offset within the register. For example on STM32MP1, for LTDC reset: ltdc = APB4_RSTSETR_offset / 4 * 32 + LTDC_bit_offset = 0x180 / 4 * 32 + 0 = 3072 The list of valid indices for STM32MP1 is available in: include/dt-bindings/reset-controller/stm32mp1-resets.h include/dt-bindings/reset-controller/stm32mp13-resets.h This file implements defines like: #define LTDC_R 3072 properties: "#clock-cells": const: 1 "#reset-cells": const: 1 compatible: items: - enum: - st,stm32mp1-rcc-secure - st,stm32mp1-rcc - st,stm32mp13-rcc - const: syscon clocks: true clock-names: true reg: maxItems: 1 required: - "#clock-cells" - "#reset-cells" - compatible - reg if: properties: compatible: contains: enum: - st,stm32mp1-rcc-secure - st,stm32mp13-rcc then: properties: clocks: description: Specifies oscillators. maxItems: 5 clock-names: items: - const: hse - const: hsi - const: csi - const: lse - const: lsi required: - clocks - clock-names else: properties: clocks: description: Specifies the external RX clock for ethernet MAC. maxItems: 1 clock-names: const: ETH_RX_CLK/ETH_REF_CLK additionalProperties: false examples: - | #include <dt-bindings/clock/stm32mp1-clks.h> rcc: rcc@50000000 { compatible = "st,stm32mp1-rcc-secure", "syscon"; reg = <0x50000000 0x1000>; #clock-cells = <1>; #reset-cells = <1>; clock-names = "hse", "hsi", "csi", "lse", "lsi"; clocks = <&scmi_clk CK_SCMI_HSE>, <&scmi_clk CK_SCMI_HSI>, <&scmi_clk CK_SCMI_CSI>, <&scmi_clk CK_SCMI_LSE>, <&scmi_clk CK_SCMI_LSI>; }; ... |