18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci# Copyright (C) 2020 SiFive, Inc.
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/pwm/pwm-sifive.yaml#
68c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cititle: SiFive PWM controller
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Yash Shah <yash.shah@sifive.com>
128c2ecf20Sopenharmony_ci  - Sagar Kadam <sagar.kadam@sifive.com>
138c2ecf20Sopenharmony_ci  - Paul Walmsley <paul.walmsley@sifive.com>
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cidescription:
168c2ecf20Sopenharmony_ci  Unlike most other PWM controllers, the SiFive PWM controller currently
178c2ecf20Sopenharmony_ci  only supports one period for all channels in the PWM. All PWMs need to
188c2ecf20Sopenharmony_ci  run at the same period. The period also has significant restrictions on
198c2ecf20Sopenharmony_ci  the values it can achieve, which the driver rounds to the nearest
208c2ecf20Sopenharmony_ci  achievable period. PWM RTL that corresponds to the IP block version
218c2ecf20Sopenharmony_ci  numbers can be found here -
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci  https://github.com/sifive/sifive-blocks/tree/master/src/main/scala/devices/pwm
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciproperties:
268c2ecf20Sopenharmony_ci  compatible:
278c2ecf20Sopenharmony_ci    items:
288c2ecf20Sopenharmony_ci      - const: sifive,fu540-c000-pwm
298c2ecf20Sopenharmony_ci      - const: sifive,pwm0
308c2ecf20Sopenharmony_ci    description:
318c2ecf20Sopenharmony_ci      Should be "sifive,<chip>-pwm" and "sifive,pwm<version>". Supported
328c2ecf20Sopenharmony_ci      compatible strings are "sifive,fu540-c000-pwm" for the SiFive PWM v0
338c2ecf20Sopenharmony_ci      as integrated onto the SiFive FU540 chip, and "sifive,pwm0" for the
348c2ecf20Sopenharmony_ci      SiFive PWM v0 IP block with no chip integration tweaks.
358c2ecf20Sopenharmony_ci      Please refer to sifive-blocks-ip-versioning.txt for details.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  reg:
388c2ecf20Sopenharmony_ci    maxItems: 1
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  clocks:
418c2ecf20Sopenharmony_ci    maxItems: 1
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci  "#pwm-cells":
448c2ecf20Sopenharmony_ci    const: 3
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  interrupts:
478c2ecf20Sopenharmony_ci    maxItems: 4
488c2ecf20Sopenharmony_ci    description:
498c2ecf20Sopenharmony_ci      Each PWM instance in FU540-C000 has 4 comparators. One interrupt per comparator.
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_cirequired:
528c2ecf20Sopenharmony_ci  - compatible
538c2ecf20Sopenharmony_ci  - reg
548c2ecf20Sopenharmony_ci  - clocks
558c2ecf20Sopenharmony_ci  - "#pwm-cells"
568c2ecf20Sopenharmony_ci  - interrupts
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciadditionalProperties: false
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ciexamples:
618c2ecf20Sopenharmony_ci  - |
628c2ecf20Sopenharmony_ci    pwm:  pwm@10020000 {
638c2ecf20Sopenharmony_ci      compatible = "sifive,fu540-c000-pwm", "sifive,pwm0";
648c2ecf20Sopenharmony_ci      reg = <0x10020000 0x1000>;
658c2ecf20Sopenharmony_ci      clocks = <&tlclk>;
668c2ecf20Sopenharmony_ci      interrupt-parent = <&plic>;
678c2ecf20Sopenharmony_ci      interrupts = <42>, <43>, <44>, <45>;
688c2ecf20Sopenharmony_ci      #pwm-cells = <3>;
698c2ecf20Sopenharmony_ci    };
70