0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/clock/samsung,exynosautov9-clock.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Samsung Exynos Auto v9 SoC clock controller
0008
0009 maintainers:
0010 - Chanho Park <chanho61.park@samsung.com>
0011 - Chanwoo Choi <cw00.choi@samsung.com>
0012 - Krzysztof Kozlowski <krzk@kernel.org>
0013 - Sylwester Nawrocki <s.nawrocki@samsung.com>
0014 - Tomasz Figa <tomasz.figa@gmail.com>
0015
0016 description: |
0017 Exynos Auto v9 clock controller is comprised of several CMU units, generating
0018 clocks for different domains. Those CMU units are modeled as separate device
0019 tree nodes, and might depend on each other. Root clocks in that clock tree are
0020 two external clocks:: OSCCLK/XTCXO (26 MHz) and RTCCLK/XrtcXTI (32768 Hz).
0021 The external OSCCLK must be defined as fixed-rate clock in dts.
0022
0023 CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
0024 dividers; all other clocks of function blocks (other CMUs) are usually
0025 derived from CMU_TOP.
0026
0027 Each clock is assigned an identifier and client nodes can use this identifier
0028 to specify the clock which they consume. All clocks available for usage
0029 in clock consumer nodes are defined as preprocessor macros in
0030 'include/dt-bindings/clock/samsung,exynosautov9.h' header.
0031
0032 properties:
0033 compatible:
0034 enum:
0035 - samsung,exynosautov9-cmu-top
0036 - samsung,exynosautov9-cmu-busmc
0037 - samsung,exynosautov9-cmu-core
0038 - samsung,exynosautov9-cmu-fsys2
0039 - samsung,exynosautov9-cmu-peric0
0040 - samsung,exynosautov9-cmu-peric1
0041 - samsung,exynosautov9-cmu-peris
0042
0043 clocks:
0044 minItems: 1
0045 maxItems: 5
0046
0047 clock-names:
0048 minItems: 1
0049 maxItems: 5
0050
0051 "#clock-cells":
0052 const: 1
0053
0054 reg:
0055 maxItems: 1
0056
0057 allOf:
0058 - if:
0059 properties:
0060 compatible:
0061 contains:
0062 const: samsung,exynosautov9-cmu-top
0063
0064 then:
0065 properties:
0066 clocks:
0067 items:
0068 - description: External reference clock (26 MHz)
0069
0070 clock-names:
0071 items:
0072 - const: oscclk
0073
0074 - if:
0075 properties:
0076 compatible:
0077 contains:
0078 const: samsung,exynosautov9-cmu-busmc
0079
0080 then:
0081 properties:
0082 clocks:
0083 items:
0084 - description: External reference clock (26 MHz)
0085 - description: CMU_BUSMC bus clock (from CMU_TOP)
0086
0087 clock-names:
0088 items:
0089 - const: oscclk
0090 - const: dout_clkcmu_busmc_bus
0091
0092 - if:
0093 properties:
0094 compatible:
0095 contains:
0096 const: samsung,exynosautov9-cmu-core
0097
0098 then:
0099 properties:
0100 clocks:
0101 items:
0102 - description: External reference clock (26 MHz)
0103 - description: CMU_CORE bus clock (from CMU_TOP)
0104
0105 clock-names:
0106 items:
0107 - const: oscclk
0108 - const: dout_clkcmu_core_bus
0109
0110 - if:
0111 properties:
0112 compatible:
0113 contains:
0114 const: samsung,exynosautov9-cmu-fsys2
0115
0116 then:
0117 properties:
0118 clocks:
0119 items:
0120 - description: External reference clock (26 MHz)
0121 - description: CMU_FSYS2 bus clock (from CMU_TOP)
0122 - description: UFS clock (from CMU_TOP)
0123 - description: Ethernet clock (from CMU_TOP)
0124
0125 clock-names:
0126 items:
0127 - const: oscclk
0128 - const: dout_clkcmu_fsys2_bus
0129 - const: dout_fsys2_clkcmu_ufs_embd
0130 - const: dout_fsys2_clkcmu_ethernet
0131
0132 - if:
0133 properties:
0134 compatible:
0135 contains:
0136 const: samsung,exynosautov9-cmu-peric0
0137
0138 then:
0139 properties:
0140 clocks:
0141 items:
0142 - description: External reference clock (26 MHz)
0143 - description: CMU_PERIC0 bus clock (from CMU_TOP)
0144 - description: PERIC0 IP clock (from CMU_TOP)
0145
0146 clock-names:
0147 items:
0148 - const: oscclk
0149 - const: dout_clkcmu_peric0_bus
0150 - const: dout_clkcmu_peric0_ip
0151
0152 - if:
0153 properties:
0154 compatible:
0155 contains:
0156 const: samsung,exynosautov9-cmu-peric1
0157
0158 then:
0159 properties:
0160 clocks:
0161 items:
0162 - description: External reference clock (26 MHz)
0163 - description: CMU_PERIC1 bus clock (from CMU_TOP)
0164 - description: PERIC1 IP clock (from CMU_TOP)
0165
0166 clock-names:
0167 items:
0168 - const: oscclk
0169 - const: dout_clkcmu_peric1_bus
0170 - const: dout_clkcmu_peric1_ip
0171
0172 - if:
0173 properties:
0174 compatible:
0175 contains:
0176 const: samsung,exynosautov9-cmu-peris
0177
0178 then:
0179 properties:
0180 clocks:
0181 items:
0182 - description: External reference clock (26 MHz)
0183 - description: CMU_PERIS bus clock (from CMU_TOP)
0184
0185 clock-names:
0186 items:
0187 - const: oscclk
0188 - const: dout_clkcmu_peris_bus
0189
0190 required:
0191 - compatible
0192 - "#clock-cells"
0193 - clocks
0194 - clock-names
0195 - reg
0196
0197 additionalProperties: false
0198
0199 examples:
0200 # Clock controller node for CMU_FSYS2
0201 - |
0202 #include <dt-bindings/clock/samsung,exynosautov9.h>
0203
0204 cmu_fsys2: clock-controller@17c00000 {
0205 compatible = "samsung,exynosautov9-cmu-fsys2";
0206 reg = <0x17c00000 0x8000>;
0207 #clock-cells = <1>;
0208
0209 clocks = <&xtcxo>,
0210 <&cmu_top DOUT_CLKCMU_FSYS2_BUS>,
0211 <&cmu_top DOUT_CLKCMU_FSYS2_UFS_EMBD>,
0212 <&cmu_top DOUT_CLKCMU_FSYS2_ETHERNET>;
0213 clock-names = "oscclk",
0214 "dout_clkcmu_fsys2_bus",
0215 "dout_fsys2_clkcmu_ufs_embd",
0216 "dout_fsys2_clkcmu_ethernet";
0217 };
0218
0219 ...