summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/clock/imx8m-clock.yaml
blob: 4fec558327027faa0a8d2a15699c03713da2deae (plain)
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
126
127
128
129
130
131
132
133
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/imx8m-clock.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP i.MX8M Family Clock Control Module

maintainers:
  - Abel Vesa <abelvesa@kernel.org>
  - Peng Fan <peng.fan@nxp.com>

description: |
  NXP i.MX8M Mini/Nano/Plus/Quad clock control module is an integrated clock
  controller, which generates and supplies to all modules.

properties:
  compatible:
    enum:
      - fsl,imx8mm-ccm
      - fsl,imx8mn-ccm
      - fsl,imx8mp-ccm
      - fsl,imx8mq-ccm

  reg:
    maxItems: 1

  interrupts:
    maxItems: 2

  clocks:
    minItems: 6
    maxItems: 7

  clock-names:
    minItems: 6
    maxItems: 7

  '#clock-cells':
    const: 1
    description:
      The clock consumer should specify the desired clock by having the clock
      ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8m-clock.h
      for the full list of i.MX8M clock IDs.

  fsl,operating-mode:
    $ref: /schemas/types.yaml#/definitions/string
    enum: [nominal, overdrive]
    description:
      The operating mode of the SoC. This affects the maximum clock rates that
      can safely be configured by the clock controller.

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - '#clock-cells'

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx8mq-ccm
    then:
      properties:
        clocks:
          items:
            - description: 32k osc
            - description: 25m osc
            - description: 27m osc
            - description: ext1 clock input
            - description: ext2 clock input
            - description: ext3 clock input
            - description: ext4 clock input
        clock-names:
          items:
            - const: ckil
            - const: osc_25m
            - const: osc_27m
            - const: clk_ext1
            - const: clk_ext2
            - const: clk_ext3
            - const: clk_ext4
    else:
      properties:
        clocks:
          items:
            - description: 32k osc
            - description: 24m osc
            - description: ext1 clock input
            - description: ext2 clock input
            - description: ext3 clock input
            - description: ext4 clock input

        clock-names:
          items:
            - const: osc_32k
            - const: osc_24m
            - const: clk_ext1
            - const: clk_ext2
            - const: clk_ext3
            - const: clk_ext4

additionalProperties: false

examples:
  # Clock Control Module node:
  - |
    clock-controller@30380000 {
        compatible = "fsl,imx8mm-ccm";
        reg = <0x30380000 0x10000>;
        #clock-cells = <1>;
        clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
                 <&clk_ext3>, <&clk_ext4>;
        clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
                      "clk_ext3", "clk_ext4";
        fsl,operating-mode = "nominal";
    };

  - |
    clock-controller@30380000 {
        compatible = "fsl,imx8mq-ccm";
        reg = <0x30380000 0x10000>;
        #clock-cells = <1>;
        clocks = <&ckil>, <&osc_25m>, <&osc_27m>, <&clk_ext1>,
                 <&clk_ext2>, <&clk_ext3>, <&clk_ext4>;
        clock-names = "ckil", "osc_25m", "osc_27m", "clk_ext1",
                      "clk_ext2", "clk_ext3", "clk_ext4";
    };

...