xref: /freebsd/sys/contrib/device-tree/Bindings/clock/nvidia,tegra124-car.yaml (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
15956d97fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
25956d97fSEmmanuel Vadot%YAML 1.2
35956d97fSEmmanuel Vadot---
45956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/clock/nvidia,tegra124-car.yaml#
55956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65956d97fSEmmanuel Vadot
75956d97fSEmmanuel Vadottitle: NVIDIA Tegra Clock and Reset Controller
85956d97fSEmmanuel Vadot
95956d97fSEmmanuel Vadotmaintainers:
105956d97fSEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
115956d97fSEmmanuel Vadot  - Thierry Reding <thierry.reding@gmail.com>
125956d97fSEmmanuel Vadot
135956d97fSEmmanuel Vadotdescription: |
145956d97fSEmmanuel Vadot  The Clock and Reset (CAR) is the HW module responsible for muxing and gating
155956d97fSEmmanuel Vadot  Tegra's clocks, and setting their rates. It comprises CLKGEN and RSTGEN units.
165956d97fSEmmanuel Vadot
175956d97fSEmmanuel Vadot  CLKGEN provides the registers to program the PLLs. It controls most of
185956d97fSEmmanuel Vadot  the clock source programming and most of the clock dividers.
195956d97fSEmmanuel Vadot
205956d97fSEmmanuel Vadot  CLKGEN input signals include the external clock for the reference frequency
215956d97fSEmmanuel Vadot  (12 MHz, 26 MHz) and the external clock for the Real Time Clock (32.768 KHz).
225956d97fSEmmanuel Vadot
235956d97fSEmmanuel Vadot  Outputs from CLKGEN are inputs clock of the h/w blocks in the Tegra system.
245956d97fSEmmanuel Vadot
255956d97fSEmmanuel Vadot  RSTGEN provides the registers needed to control resetting of each block in
265956d97fSEmmanuel Vadot  the Tegra system.
275956d97fSEmmanuel Vadot
285956d97fSEmmanuel Vadotproperties:
295956d97fSEmmanuel Vadot  compatible:
30*aa1a8ff2SEmmanuel Vadot    enum:
31*aa1a8ff2SEmmanuel Vadot      - nvidia,tegra124-car
32*aa1a8ff2SEmmanuel Vadot      - nvidia,tegra132-car
335956d97fSEmmanuel Vadot
345956d97fSEmmanuel Vadot  reg:
355956d97fSEmmanuel Vadot    maxItems: 1
365956d97fSEmmanuel Vadot
375956d97fSEmmanuel Vadot  '#clock-cells':
385956d97fSEmmanuel Vadot    const: 1
395956d97fSEmmanuel Vadot
405956d97fSEmmanuel Vadot  "#reset-cells":
415956d97fSEmmanuel Vadot    const: 1
425956d97fSEmmanuel Vadot
435956d97fSEmmanuel Vadot  nvidia,external-memory-controller:
445956d97fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
455956d97fSEmmanuel Vadot    description:
465956d97fSEmmanuel Vadot      phandle of the external memory controller node
475956d97fSEmmanuel Vadot
485956d97fSEmmanuel VadotpatternProperties:
495956d97fSEmmanuel Vadot  "^emc-timings-[0-9]+$":
505956d97fSEmmanuel Vadot    type: object
515956d97fSEmmanuel Vadot    properties:
525956d97fSEmmanuel Vadot      nvidia,ram-code:
535956d97fSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/uint32
545956d97fSEmmanuel Vadot        description:
555956d97fSEmmanuel Vadot          value of the RAM_CODE field in the PMC_STRAPPING_OPT_A register that
565956d97fSEmmanuel Vadot          this timing set is used for
575956d97fSEmmanuel Vadot
585956d97fSEmmanuel Vadot    patternProperties:
595956d97fSEmmanuel Vadot      "^timing-[0-9]+$":
605956d97fSEmmanuel Vadot        type: object
615956d97fSEmmanuel Vadot        properties:
625956d97fSEmmanuel Vadot          clock-frequency:
635956d97fSEmmanuel Vadot            description:
645956d97fSEmmanuel Vadot              external memory clock rate in Hz
655956d97fSEmmanuel Vadot            minimum: 1000000
665956d97fSEmmanuel Vadot            maximum: 1000000000
675956d97fSEmmanuel Vadot
685956d97fSEmmanuel Vadot          nvidia,parent-clock-frequency:
695956d97fSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
705956d97fSEmmanuel Vadot            description:
715956d97fSEmmanuel Vadot              rate of parent clock in Hz
725956d97fSEmmanuel Vadot            minimum: 1000000
735956d97fSEmmanuel Vadot            maximum: 1000000000
745956d97fSEmmanuel Vadot
755956d97fSEmmanuel Vadot          clocks:
765956d97fSEmmanuel Vadot            items:
775956d97fSEmmanuel Vadot              - description: parent clock of EMC
785956d97fSEmmanuel Vadot
795956d97fSEmmanuel Vadot          clock-names:
805956d97fSEmmanuel Vadot            items:
815956d97fSEmmanuel Vadot              - const: emc-parent
825956d97fSEmmanuel Vadot
835956d97fSEmmanuel Vadot        required:
845956d97fSEmmanuel Vadot          - clock-frequency
855956d97fSEmmanuel Vadot          - nvidia,parent-clock-frequency
865956d97fSEmmanuel Vadot          - clocks
875956d97fSEmmanuel Vadot          - clock-names
885956d97fSEmmanuel Vadot
895956d97fSEmmanuel Vadot        additionalProperties: false
905956d97fSEmmanuel Vadot
915956d97fSEmmanuel Vadot    additionalProperties: false
925956d97fSEmmanuel Vadot
935956d97fSEmmanuel Vadotrequired:
945956d97fSEmmanuel Vadot  - compatible
955956d97fSEmmanuel Vadot  - reg
965956d97fSEmmanuel Vadot  - '#clock-cells'
975956d97fSEmmanuel Vadot  - "#reset-cells"
985956d97fSEmmanuel Vadot
995956d97fSEmmanuel VadotadditionalProperties: false
1005956d97fSEmmanuel Vadot
1015956d97fSEmmanuel Vadotexamples:
1025956d97fSEmmanuel Vadot  - |
1035956d97fSEmmanuel Vadot    #include <dt-bindings/clock/tegra124-car.h>
1045956d97fSEmmanuel Vadot
1055956d97fSEmmanuel Vadot    car: clock-controller@60006000 {
1065956d97fSEmmanuel Vadot        compatible = "nvidia,tegra124-car";
1075956d97fSEmmanuel Vadot        reg = <0x60006000 0x1000>;
1085956d97fSEmmanuel Vadot        #clock-cells = <1>;
1095956d97fSEmmanuel Vadot        #reset-cells = <1>;
1105956d97fSEmmanuel Vadot    };
111