18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/allwinner,sun6i-a31-prcm.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Allwinner A31 PRCM Device Tree Bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Chen-Yu Tsai <wens@csie.org>
118c2ecf20Sopenharmony_ci  - Maxime Ripard <mripard@kernel.org>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cideprecated: true
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciproperties:
168c2ecf20Sopenharmony_ci  compatible:
178c2ecf20Sopenharmony_ci    const: allwinner,sun6i-a31-prcm
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  reg:
208c2ecf20Sopenharmony_ci    maxItems: 1
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cipatternProperties:
238c2ecf20Sopenharmony_ci  "^.*_(clk|rst)$":
248c2ecf20Sopenharmony_ci    type: object
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci    properties:
278c2ecf20Sopenharmony_ci      compatible:
288c2ecf20Sopenharmony_ci        enum:
298c2ecf20Sopenharmony_ci          - allwinner,sun4i-a10-mod0-clk
308c2ecf20Sopenharmony_ci          - allwinner,sun6i-a31-apb0-clk
318c2ecf20Sopenharmony_ci          - allwinner,sun6i-a31-apb0-gates-clk
328c2ecf20Sopenharmony_ci          - allwinner,sun6i-a31-ar100-clk
338c2ecf20Sopenharmony_ci          - allwinner,sun6i-a31-clock-reset
348c2ecf20Sopenharmony_ci          - fixed-factor-clock
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci    allOf:
378c2ecf20Sopenharmony_ci      - if:
388c2ecf20Sopenharmony_ci          properties:
398c2ecf20Sopenharmony_ci            compatible:
408c2ecf20Sopenharmony_ci              contains:
418c2ecf20Sopenharmony_ci                const: allwinner,sun6i-a31-apb0-clk
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci        then:
448c2ecf20Sopenharmony_ci          properties:
458c2ecf20Sopenharmony_ci            "#clock-cells":
468c2ecf20Sopenharmony_ci              const: 0
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci            # Already checked in the main schema
498c2ecf20Sopenharmony_ci            compatible: true
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci            clocks:
528c2ecf20Sopenharmony_ci              maxItems: 1
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci            clock-output-names:
558c2ecf20Sopenharmony_ci              maxItems: 1
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci            phandle: true
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci          required:
608c2ecf20Sopenharmony_ci            - "#clock-cells"
618c2ecf20Sopenharmony_ci            - compatible
628c2ecf20Sopenharmony_ci            - clocks
638c2ecf20Sopenharmony_ci            - clock-output-names
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci          additionalProperties: false
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci      - if:
688c2ecf20Sopenharmony_ci          properties:
698c2ecf20Sopenharmony_ci            compatible:
708c2ecf20Sopenharmony_ci              contains:
718c2ecf20Sopenharmony_ci                const: allwinner,sun6i-a31-apb0-gates-clk
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci        then:
748c2ecf20Sopenharmony_ci          properties:
758c2ecf20Sopenharmony_ci            "#clock-cells":
768c2ecf20Sopenharmony_ci              const: 1
778c2ecf20Sopenharmony_ci              description: >
788c2ecf20Sopenharmony_ci                This additional argument passed to that clock is the
798c2ecf20Sopenharmony_ci                offset of the bit controlling this particular gate in
808c2ecf20Sopenharmony_ci                the register.
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci            # Already checked in the main schema
838c2ecf20Sopenharmony_ci            compatible: true
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci            clocks:
868c2ecf20Sopenharmony_ci              maxItems: 1
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci            clock-output-names:
898c2ecf20Sopenharmony_ci              minItems: 1
908c2ecf20Sopenharmony_ci              maxItems: 32
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci            phandle: true
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci          required:
958c2ecf20Sopenharmony_ci            - "#clock-cells"
968c2ecf20Sopenharmony_ci            - compatible
978c2ecf20Sopenharmony_ci            - clocks
988c2ecf20Sopenharmony_ci            - clock-output-names
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci          additionalProperties: false
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci      - if:
1038c2ecf20Sopenharmony_ci          properties:
1048c2ecf20Sopenharmony_ci            compatible:
1058c2ecf20Sopenharmony_ci              contains:
1068c2ecf20Sopenharmony_ci                const: allwinner,sun6i-a31-ar100-clk
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci        then:
1098c2ecf20Sopenharmony_ci          properties:
1108c2ecf20Sopenharmony_ci            "#clock-cells":
1118c2ecf20Sopenharmony_ci              const: 0
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci            # Already checked in the main schema
1148c2ecf20Sopenharmony_ci            compatible: true
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci            clocks:
1178c2ecf20Sopenharmony_ci              maxItems: 4
1188c2ecf20Sopenharmony_ci              description: >
1198c2ecf20Sopenharmony_ci                The parent order must match the hardware programming
1208c2ecf20Sopenharmony_ci                order.
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci            clock-output-names:
1238c2ecf20Sopenharmony_ci              maxItems: 1
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci            phandle: true
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci          required:
1288c2ecf20Sopenharmony_ci            - "#clock-cells"
1298c2ecf20Sopenharmony_ci            - compatible
1308c2ecf20Sopenharmony_ci            - clocks
1318c2ecf20Sopenharmony_ci            - clock-output-names
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci          additionalProperties: false
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci      - if:
1368c2ecf20Sopenharmony_ci          properties:
1378c2ecf20Sopenharmony_ci            compatible:
1388c2ecf20Sopenharmony_ci              contains:
1398c2ecf20Sopenharmony_ci                const: allwinner,sun6i-a31-clock-reset
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci        then:
1428c2ecf20Sopenharmony_ci          properties:
1438c2ecf20Sopenharmony_ci            "#reset-cells":
1448c2ecf20Sopenharmony_ci              const: 1
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ci            # Already checked in the main schema
1478c2ecf20Sopenharmony_ci            compatible: true
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci            phandle: true
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci          required:
1528c2ecf20Sopenharmony_ci            - "#reset-cells"
1538c2ecf20Sopenharmony_ci            - compatible
1548c2ecf20Sopenharmony_ci
1558c2ecf20Sopenharmony_ci          additionalProperties: false
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_cirequired:
1588c2ecf20Sopenharmony_ci  - compatible
1598c2ecf20Sopenharmony_ci  - reg
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciadditionalProperties: false
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_ciexamples:
1648c2ecf20Sopenharmony_ci  - |
1658c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/sun6i-a31-ccu.h>
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci    prcm@1f01400 {
1688c2ecf20Sopenharmony_ci        compatible = "allwinner,sun6i-a31-prcm";
1698c2ecf20Sopenharmony_ci        reg = <0x01f01400 0x200>;
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci        ar100: ar100_clk {
1728c2ecf20Sopenharmony_ci            compatible = "allwinner,sun6i-a31-ar100-clk";
1738c2ecf20Sopenharmony_ci            #clock-cells = <0>;
1748c2ecf20Sopenharmony_ci            clocks = <&rtc 0>, <&osc24M>,
1758c2ecf20Sopenharmony_ci                     <&ccu CLK_PLL_PERIPH>,
1768c2ecf20Sopenharmony_ci                     <&ccu CLK_PLL_PERIPH>;
1778c2ecf20Sopenharmony_ci            clock-output-names = "ar100";
1788c2ecf20Sopenharmony_ci        };
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci        ahb0: ahb0_clk {
1818c2ecf20Sopenharmony_ci            compatible = "fixed-factor-clock";
1828c2ecf20Sopenharmony_ci            #clock-cells = <0>;
1838c2ecf20Sopenharmony_ci            clock-div = <1>;
1848c2ecf20Sopenharmony_ci            clock-mult = <1>;
1858c2ecf20Sopenharmony_ci            clocks = <&ar100>;
1868c2ecf20Sopenharmony_ci            clock-output-names = "ahb0";
1878c2ecf20Sopenharmony_ci        };
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ci        apb0: apb0_clk {
1908c2ecf20Sopenharmony_ci            compatible = "allwinner,sun6i-a31-apb0-clk";
1918c2ecf20Sopenharmony_ci            #clock-cells = <0>;
1928c2ecf20Sopenharmony_ci            clocks = <&ahb0>;
1938c2ecf20Sopenharmony_ci            clock-output-names = "apb0";
1948c2ecf20Sopenharmony_ci        };
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ci        apb0_gates: apb0_gates_clk {
1978c2ecf20Sopenharmony_ci            compatible = "allwinner,sun6i-a31-apb0-gates-clk";
1988c2ecf20Sopenharmony_ci            #clock-cells = <1>;
1998c2ecf20Sopenharmony_ci            clocks = <&apb0>;
2008c2ecf20Sopenharmony_ci            clock-output-names = "apb0_pio", "apb0_ir",
2018c2ecf20Sopenharmony_ci                                 "apb0_timer", "apb0_p2wi",
2028c2ecf20Sopenharmony_ci                                 "apb0_uart", "apb0_1wire",
2038c2ecf20Sopenharmony_ci                                 "apb0_i2c";
2048c2ecf20Sopenharmony_ci        };
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_ci        ir_clk: ir_clk {
2078c2ecf20Sopenharmony_ci            #clock-cells = <0>;
2088c2ecf20Sopenharmony_ci            compatible = "allwinner,sun4i-a10-mod0-clk";
2098c2ecf20Sopenharmony_ci            clocks = <&rtc 0>, <&osc24M>;
2108c2ecf20Sopenharmony_ci            clock-output-names = "ir";
2118c2ecf20Sopenharmony_ci        };
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci        apb0_rst: apb0_rst {
2148c2ecf20Sopenharmony_ci            compatible = "allwinner,sun6i-a31-clock-reset";
2158c2ecf20Sopenharmony_ci            #reset-cells = <1>;
2168c2ecf20Sopenharmony_ci        };
2178c2ecf20Sopenharmony_ci    };
2188c2ecf20Sopenharmony_ci
2198c2ecf20Sopenharmony_ci...
220