1c4a41429SDmitry Osipenko# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
2c4a41429SDmitry Osipenko%YAML 1.2
3c4a41429SDmitry Osipenko---
4c4a41429SDmitry Osipenko$id: http://devicetree.org/schemas/clock/nvidia,tegra124-car.yaml#
5c4a41429SDmitry Osipenko$schema: http://devicetree.org/meta-schemas/core.yaml#
6c4a41429SDmitry Osipenko
7c4a41429SDmitry Osipenkotitle: NVIDIA Tegra Clock and Reset Controller
8c4a41429SDmitry Osipenko
9c4a41429SDmitry Osipenkomaintainers:
10c4a41429SDmitry Osipenko  - Jon Hunter <jonathanh@nvidia.com>
11c4a41429SDmitry Osipenko  - Thierry Reding <thierry.reding@gmail.com>
12c4a41429SDmitry Osipenko
13c4a41429SDmitry Osipenkodescription: |
14c4a41429SDmitry Osipenko  The Clock and Reset (CAR) is the HW module responsible for muxing and gating
15c4a41429SDmitry Osipenko  Tegra's clocks, and setting their rates. It comprises CLKGEN and RSTGEN units.
16c4a41429SDmitry Osipenko
17c4a41429SDmitry Osipenko  CLKGEN provides the registers to program the PLLs. It controls most of
18c4a41429SDmitry Osipenko  the clock source programming and most of the clock dividers.
19c4a41429SDmitry Osipenko
20c4a41429SDmitry Osipenko  CLKGEN input signals include the external clock for the reference frequency
21c4a41429SDmitry Osipenko  (12 MHz, 26 MHz) and the external clock for the Real Time Clock (32.768 KHz).
22c4a41429SDmitry Osipenko
23c4a41429SDmitry Osipenko  Outputs from CLKGEN are inputs clock of the h/w blocks in the Tegra system.
24c4a41429SDmitry Osipenko
25c4a41429SDmitry Osipenko  RSTGEN provides the registers needed to control resetting of each block in
26c4a41429SDmitry Osipenko  the Tegra system.
27c4a41429SDmitry Osipenko
28c4a41429SDmitry Osipenkoproperties:
29c4a41429SDmitry Osipenko  compatible:
30*a640358dSThierry Reding    enum:
31*a640358dSThierry Reding      - nvidia,tegra124-car
32*a640358dSThierry Reding      - nvidia,tegra132-car
33c4a41429SDmitry Osipenko
34c4a41429SDmitry Osipenko  reg:
35c4a41429SDmitry Osipenko    maxItems: 1
36c4a41429SDmitry Osipenko
37c4a41429SDmitry Osipenko  '#clock-cells':
38c4a41429SDmitry Osipenko    const: 1
39c4a41429SDmitry Osipenko
40c4a41429SDmitry Osipenko  "#reset-cells":
41c4a41429SDmitry Osipenko    const: 1
42c4a41429SDmitry Osipenko
43c4a41429SDmitry Osipenko  nvidia,external-memory-controller:
44c4a41429SDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/phandle
45c4a41429SDmitry Osipenko    description:
46c4a41429SDmitry Osipenko      phandle of the external memory controller node
47c4a41429SDmitry Osipenko
48c4a41429SDmitry OsipenkopatternProperties:
49c4a41429SDmitry Osipenko  "^emc-timings-[0-9]+$":
50c4a41429SDmitry Osipenko    type: object
51c4a41429SDmitry Osipenko    properties:
52c4a41429SDmitry Osipenko      nvidia,ram-code:
53c4a41429SDmitry Osipenko        $ref: /schemas/types.yaml#/definitions/uint32
54c4a41429SDmitry Osipenko        description:
55c4a41429SDmitry Osipenko          value of the RAM_CODE field in the PMC_STRAPPING_OPT_A register that
56c4a41429SDmitry Osipenko          this timing set is used for
57c4a41429SDmitry Osipenko
58c4a41429SDmitry Osipenko    patternProperties:
59c4a41429SDmitry Osipenko      "^timing-[0-9]+$":
60c4a41429SDmitry Osipenko        type: object
61c4a41429SDmitry Osipenko        properties:
62c4a41429SDmitry Osipenko          clock-frequency:
63c4a41429SDmitry Osipenko            description:
64c4a41429SDmitry Osipenko              external memory clock rate in Hz
65c4a41429SDmitry Osipenko            minimum: 1000000
66c4a41429SDmitry Osipenko            maximum: 1000000000
67c4a41429SDmitry Osipenko
68c4a41429SDmitry Osipenko          nvidia,parent-clock-frequency:
69c4a41429SDmitry Osipenko            $ref: /schemas/types.yaml#/definitions/uint32
70c4a41429SDmitry Osipenko            description:
71c4a41429SDmitry Osipenko              rate of parent clock in Hz
72c4a41429SDmitry Osipenko            minimum: 1000000
73c4a41429SDmitry Osipenko            maximum: 1000000000
74c4a41429SDmitry Osipenko
75c4a41429SDmitry Osipenko          clocks:
76c4a41429SDmitry Osipenko            items:
77c4a41429SDmitry Osipenko              - description: parent clock of EMC
78c4a41429SDmitry Osipenko
79c4a41429SDmitry Osipenko          clock-names:
80c4a41429SDmitry Osipenko            items:
81c4a41429SDmitry Osipenko              - const: emc-parent
82c4a41429SDmitry Osipenko
83c4a41429SDmitry Osipenko        required:
84c4a41429SDmitry Osipenko          - clock-frequency
85c4a41429SDmitry Osipenko          - nvidia,parent-clock-frequency
86c4a41429SDmitry Osipenko          - clocks
87c4a41429SDmitry Osipenko          - clock-names
88c4a41429SDmitry Osipenko
89c4a41429SDmitry Osipenko        additionalProperties: false
90c4a41429SDmitry Osipenko
91c4a41429SDmitry Osipenko    additionalProperties: false
92c4a41429SDmitry Osipenko
93c4a41429SDmitry Osipenkorequired:
94c4a41429SDmitry Osipenko  - compatible
95c4a41429SDmitry Osipenko  - reg
96c4a41429SDmitry Osipenko  - '#clock-cells'
97c4a41429SDmitry Osipenko  - "#reset-cells"
98c4a41429SDmitry Osipenko
99c4a41429SDmitry OsipenkoadditionalProperties: false
100c4a41429SDmitry Osipenko
101c4a41429SDmitry Osipenkoexamples:
102c4a41429SDmitry Osipenko  - |
103c4a41429SDmitry Osipenko    #include <dt-bindings/clock/tegra124-car.h>
104c4a41429SDmitry Osipenko
105c4a41429SDmitry Osipenko    car: clock-controller@60006000 {
106c4a41429SDmitry Osipenko        compatible = "nvidia,tegra124-car";
107c4a41429SDmitry Osipenko        reg = <0x60006000 0x1000>;
108c4a41429SDmitry Osipenko        #clock-cells = <1>;
109c4a41429SDmitry Osipenko        #reset-cells = <1>;
110c4a41429SDmitry Osipenko    };
111