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/mfd/st,stm32-timers.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: STMicroelectronics STM32 Timers bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: |
108c2ecf20Sopenharmony_ci  This hardware block provides 3 types of timer along with PWM functionality:
118c2ecf20Sopenharmony_ci    - advanced-control timers consist of a 16-bit auto-reload counter driven
128c2ecf20Sopenharmony_ci      by a programmable prescaler, break input feature, PWM outputs and
138c2ecf20Sopenharmony_ci      complementary PWM outputs channels.
148c2ecf20Sopenharmony_ci    - general-purpose timers consist of a 16-bit or 32-bit auto-reload counter
158c2ecf20Sopenharmony_ci      driven by a programmable prescaler and PWM outputs.
168c2ecf20Sopenharmony_ci    - basic timers consist of a 16-bit auto-reload counter driven by a
178c2ecf20Sopenharmony_ci      programmable prescaler.
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cimaintainers:
208c2ecf20Sopenharmony_ci  - Benjamin Gaignard <benjamin.gaignard@st.com>
218c2ecf20Sopenharmony_ci  - Fabrice Gasnier <fabrice.gasnier@st.com>
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciproperties:
248c2ecf20Sopenharmony_ci  compatible:
258c2ecf20Sopenharmony_ci    const: st,stm32-timers
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci  reg:
288c2ecf20Sopenharmony_ci    maxItems: 1
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  clocks:
318c2ecf20Sopenharmony_ci    maxItems: 1
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  clock-names:
348c2ecf20Sopenharmony_ci    items:
358c2ecf20Sopenharmony_ci      - const: int
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  reset:
388c2ecf20Sopenharmony_ci    maxItems: 1
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  dmas:
418c2ecf20Sopenharmony_ci    minItems: 1
428c2ecf20Sopenharmony_ci    maxItems: 7
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci  dma-names:
458c2ecf20Sopenharmony_ci    items:
468c2ecf20Sopenharmony_ci      enum: [ ch1, ch2, ch3, ch4, up, trig, com ]
478c2ecf20Sopenharmony_ci    minItems: 1
488c2ecf20Sopenharmony_ci    maxItems: 7
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci  "#address-cells":
518c2ecf20Sopenharmony_ci    const: 1
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  "#size-cells":
548c2ecf20Sopenharmony_ci    const: 0
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci  pwm:
578c2ecf20Sopenharmony_ci    type: object
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci    properties:
608c2ecf20Sopenharmony_ci      compatible:
618c2ecf20Sopenharmony_ci        const: st,stm32-pwm
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci      "#pwm-cells":
648c2ecf20Sopenharmony_ci        const: 3
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci      st,breakinput:
678c2ecf20Sopenharmony_ci        description:
688c2ecf20Sopenharmony_ci          One or two <index level filter> to describe break input
698c2ecf20Sopenharmony_ci          configurations.
708c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-matrix
718c2ecf20Sopenharmony_ci        items:
728c2ecf20Sopenharmony_ci          items:
738c2ecf20Sopenharmony_ci            - description: |
748c2ecf20Sopenharmony_ci                "index" indicates on which break input (0 or 1) the
758c2ecf20Sopenharmony_ci                configuration should be applied.
768c2ecf20Sopenharmony_ci              enum: [0, 1]
778c2ecf20Sopenharmony_ci            - description: |
788c2ecf20Sopenharmony_ci                "level" gives the active level (0=low or 1=high) of the
798c2ecf20Sopenharmony_ci                input signal for this configuration
808c2ecf20Sopenharmony_ci              enum: [0, 1]
818c2ecf20Sopenharmony_ci            - description: |
828c2ecf20Sopenharmony_ci                "filter" gives the filtering value (up to 15) to be applied.
838c2ecf20Sopenharmony_ci              maximum: 15
848c2ecf20Sopenharmony_ci        minItems: 1
858c2ecf20Sopenharmony_ci        maxItems: 2
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci    required:
888c2ecf20Sopenharmony_ci      - "#pwm-cells"
898c2ecf20Sopenharmony_ci      - compatible
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_cipatternProperties:
928c2ecf20Sopenharmony_ci  "^timer@[0-9]+$":
938c2ecf20Sopenharmony_ci    type: object
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci    properties:
968c2ecf20Sopenharmony_ci      compatible:
978c2ecf20Sopenharmony_ci        enum:
988c2ecf20Sopenharmony_ci          - st,stm32-timer-trigger
998c2ecf20Sopenharmony_ci          - st,stm32h7-timer-trigger
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci      reg:
1028c2ecf20Sopenharmony_ci        description: Identify trigger hardware block.
1038c2ecf20Sopenharmony_ci        items:
1048c2ecf20Sopenharmony_ci          minimum: 0
1058c2ecf20Sopenharmony_ci          maximum: 16
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci    required:
1088c2ecf20Sopenharmony_ci      - compatible
1098c2ecf20Sopenharmony_ci      - reg
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci  counter:
1128c2ecf20Sopenharmony_ci    type: object
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci    properties:
1158c2ecf20Sopenharmony_ci      compatible:
1168c2ecf20Sopenharmony_ci        const: st,stm32-timer-counter
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci    required:
1198c2ecf20Sopenharmony_ci      - compatible
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_cirequired:
1228c2ecf20Sopenharmony_ci  - "#address-cells"
1238c2ecf20Sopenharmony_ci  - "#size-cells"
1248c2ecf20Sopenharmony_ci  - compatible
1258c2ecf20Sopenharmony_ci  - reg
1268c2ecf20Sopenharmony_ci  - clocks
1278c2ecf20Sopenharmony_ci  - clock-names
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ciadditionalProperties: false
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ciexamples:
1328c2ecf20Sopenharmony_ci  - |
1338c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/stm32mp1-clks.h>
1348c2ecf20Sopenharmony_ci    timers2: timers@40000000 {
1358c2ecf20Sopenharmony_ci      #address-cells = <1>;
1368c2ecf20Sopenharmony_ci      #size-cells = <0>;
1378c2ecf20Sopenharmony_ci      compatible = "st,stm32-timers";
1388c2ecf20Sopenharmony_ci      reg = <0x40000000 0x400>;
1398c2ecf20Sopenharmony_ci      clocks = <&rcc TIM2_K>;
1408c2ecf20Sopenharmony_ci      clock-names = "int";
1418c2ecf20Sopenharmony_ci      dmas = <&dmamux1 18 0x400 0x1>,
1428c2ecf20Sopenharmony_ci             <&dmamux1 19 0x400 0x1>,
1438c2ecf20Sopenharmony_ci             <&dmamux1 20 0x400 0x1>,
1448c2ecf20Sopenharmony_ci             <&dmamux1 21 0x400 0x1>,
1458c2ecf20Sopenharmony_ci             <&dmamux1 22 0x400 0x1>;
1468c2ecf20Sopenharmony_ci      dma-names = "ch1", "ch2", "ch3", "ch4", "up";
1478c2ecf20Sopenharmony_ci      pwm {
1488c2ecf20Sopenharmony_ci        compatible = "st,stm32-pwm";
1498c2ecf20Sopenharmony_ci        #pwm-cells = <3>;
1508c2ecf20Sopenharmony_ci        st,breakinput = <0 1 5>;
1518c2ecf20Sopenharmony_ci      };
1528c2ecf20Sopenharmony_ci      timer@0 {
1538c2ecf20Sopenharmony_ci        compatible = "st,stm32-timer-trigger";
1548c2ecf20Sopenharmony_ci        reg = <0>;
1558c2ecf20Sopenharmony_ci      };
1568c2ecf20Sopenharmony_ci      counter {
1578c2ecf20Sopenharmony_ci        compatible = "st,stm32-timer-counter";
1588c2ecf20Sopenharmony_ci      };
1598c2ecf20Sopenharmony_ci    };
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci...
162