18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/clock/ingenic,cgu.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Ingenic SoCs CGU devicetree bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: |
108c2ecf20Sopenharmony_ci  The CGU in an Ingenic SoC provides all the clocks generated on-chip. It
118c2ecf20Sopenharmony_ci  typically includes a variety of PLLs, multiplexers, dividers & gates in order
128c2ecf20Sopenharmony_ci  to provide many different clock signals derived from only 2 external source
138c2ecf20Sopenharmony_ci  clocks.
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cimaintainers:
168c2ecf20Sopenharmony_ci  - Paul Cercueil <paul@crapouillou.net>
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciselect:
198c2ecf20Sopenharmony_ci  properties:
208c2ecf20Sopenharmony_ci    compatible:
218c2ecf20Sopenharmony_ci      contains:
228c2ecf20Sopenharmony_ci        enum:
238c2ecf20Sopenharmony_ci          - ingenic,jz4740-cgu
248c2ecf20Sopenharmony_ci          - ingenic,jz4725b-cgu
258c2ecf20Sopenharmony_ci          - ingenic,jz4770-cgu
268c2ecf20Sopenharmony_ci          - ingenic,jz4780-cgu
278c2ecf20Sopenharmony_ci          - ingenic,x1000-cgu
288c2ecf20Sopenharmony_ci          - ingenic,x1830-cgu
298c2ecf20Sopenharmony_ci  required:
308c2ecf20Sopenharmony_ci    - compatible
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciproperties:
338c2ecf20Sopenharmony_ci  $nodename:
348c2ecf20Sopenharmony_ci    pattern: "^clock-controller@[0-9a-f]+$"
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  "#address-cells":
378c2ecf20Sopenharmony_ci    const: 1
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  "#size-cells":
408c2ecf20Sopenharmony_ci    const: 1
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  "#clock-cells":
438c2ecf20Sopenharmony_ci    const: 1
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci  ranges: true
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  compatible:
488c2ecf20Sopenharmony_ci    items:
498c2ecf20Sopenharmony_ci      - enum:
508c2ecf20Sopenharmony_ci          - ingenic,jz4740-cgu
518c2ecf20Sopenharmony_ci          - ingenic,jz4725b-cgu
528c2ecf20Sopenharmony_ci          - ingenic,jz4770-cgu
538c2ecf20Sopenharmony_ci          - ingenic,jz4780-cgu
548c2ecf20Sopenharmony_ci          - ingenic,x1000-cgu
558c2ecf20Sopenharmony_ci          - ingenic,x1830-cgu
568c2ecf20Sopenharmony_ci      - const: simple-mfd
578c2ecf20Sopenharmony_ci    minItems: 1
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  reg:
608c2ecf20Sopenharmony_ci    maxItems: 1
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  clocks:
638c2ecf20Sopenharmony_ci    items:
648c2ecf20Sopenharmony_ci      - description: External oscillator clock
658c2ecf20Sopenharmony_ci      - description: Internal 32 kHz RTC clock
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci  clock-names:
688c2ecf20Sopenharmony_ci    items:
698c2ecf20Sopenharmony_ci      - const: ext
708c2ecf20Sopenharmony_ci      - enum:
718c2ecf20Sopenharmony_ci          - rtc
728c2ecf20Sopenharmony_ci          - osc32k # Different name, same clock
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci  assigned-clocks:
758c2ecf20Sopenharmony_ci    minItems: 1
768c2ecf20Sopenharmony_ci    maxItems: 64
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci  assigned-clock-parents:
798c2ecf20Sopenharmony_ci    minItems: 1
808c2ecf20Sopenharmony_ci    maxItems: 64
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  assigned-clock-rates:
838c2ecf20Sopenharmony_ci    minItems: 1
848c2ecf20Sopenharmony_ci    maxItems: 64
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_cirequired:
878c2ecf20Sopenharmony_ci  - "#clock-cells"
888c2ecf20Sopenharmony_ci  - compatible
898c2ecf20Sopenharmony_ci  - reg
908c2ecf20Sopenharmony_ci  - clocks
918c2ecf20Sopenharmony_ci  - clock-names
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_cipatternProperties:
948c2ecf20Sopenharmony_ci  "^usb-phy@[a-f0-9]+$":
958c2ecf20Sopenharmony_ci    allOf: [ $ref: "../usb/ingenic,jz4770-phy.yaml#" ]
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ciadditionalProperties: false
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ciexamples:
1008c2ecf20Sopenharmony_ci  - |
1018c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/jz4770-cgu.h>
1028c2ecf20Sopenharmony_ci    cgu: clock-controller@10000000 {
1038c2ecf20Sopenharmony_ci      compatible = "ingenic,jz4770-cgu", "simple-mfd";
1048c2ecf20Sopenharmony_ci      reg = <0x10000000 0x100>;
1058c2ecf20Sopenharmony_ci      #address-cells = <1>;
1068c2ecf20Sopenharmony_ci      #size-cells = <1>;
1078c2ecf20Sopenharmony_ci      ranges = <0x0 0x10000000 0x100>;
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci      clocks = <&ext>, <&osc32k>;
1108c2ecf20Sopenharmony_ci      clock-names = "ext", "osc32k";
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci      #clock-cells = <1>;
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci      otg_phy: usb-phy@3c {
1158c2ecf20Sopenharmony_ci        compatible = "ingenic,jz4770-phy";
1168c2ecf20Sopenharmony_ci        reg = <0x3c 0x10>;
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci        clocks = <&cgu JZ4770_CLK_OTG_PHY>;
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ci        vcc-supply = <&ldo5>;
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci        #phy-cells = <0>;
1238c2ecf20Sopenharmony_ci      };
1248c2ecf20Sopenharmony_ci    };
125