| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/pwm/pwm-amlogic.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Amlogic PWM |
| |
| maintainers: |
| - Heiner Kallweit <hkallweit1@gmail.com> |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - amlogic,meson8b-pwm |
| - amlogic,meson-gxbb-pwm |
| - amlogic,meson-gxbb-ao-pwm |
| - amlogic,meson-axg-ee-pwm |
| - amlogic,meson-axg-ao-pwm |
| - amlogic,meson-g12a-ee-pwm |
| - amlogic,meson-g12a-ao-pwm-ab |
| - amlogic,meson-g12a-ao-pwm-cd |
| deprecated: true |
| - items: |
| - const: amlogic,meson-gx-pwm |
| - const: amlogic,meson-gxbb-pwm |
| deprecated: true |
| - items: |
| - const: amlogic,meson-gx-ao-pwm |
| - const: amlogic,meson-gxbb-ao-pwm |
| deprecated: true |
| - items: |
| - const: amlogic,meson8-pwm |
| - const: amlogic,meson8b-pwm |
| deprecated: true |
| - enum: |
| - amlogic,meson8-pwm-v2 |
| - amlogic,meson-s4-pwm |
| - items: |
| - enum: |
| - amlogic,meson-a1-pwm |
| - const: amlogic,meson-s4-pwm |
| - items: |
| - enum: |
| - amlogic,meson8b-pwm-v2 |
| - amlogic,meson-gxbb-pwm-v2 |
| - amlogic,meson-axg-pwm-v2 |
| - amlogic,meson-g12-pwm-v2 |
| - const: amlogic,meson8-pwm-v2 |
| |
| reg: |
| maxItems: 1 |
| |
| clocks: |
| minItems: 1 |
| maxItems: 4 |
| |
| clock-names: |
| minItems: 1 |
| maxItems: 2 |
| |
| power-domains: |
| maxItems: 1 |
| |
| "#pwm-cells": |
| const: 3 |
| |
| required: |
| - compatible |
| - reg |
| |
| allOf: |
| - $ref: pwm.yaml# |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - amlogic,meson8-pwm |
| - amlogic,meson8b-pwm |
| - amlogic,meson-gxbb-pwm |
| - amlogic,meson-gxbb-ao-pwm |
| - amlogic,meson-axg-ee-pwm |
| - amlogic,meson-axg-ao-pwm |
| - amlogic,meson-g12a-ee-pwm |
| - amlogic,meson-g12a-ao-pwm-ab |
| - amlogic,meson-g12a-ao-pwm-cd |
| then: |
| # Obsolete historic bindings tied to the driver implementation |
| # The clocks provided here are meant to be matched with the input |
| # known (hard-coded) in the driver and used to select pwm clock |
| # source. Currently, the linux driver ignores this. |
| # This is kept to maintain ABI backward compatibility. |
| properties: |
| clocks: |
| maxItems: 2 |
| clock-names: |
| oneOf: |
| - items: |
| - enum: [clkin0, clkin1] |
| - items: |
| - const: clkin0 |
| - const: clkin1 |
| |
| # Newer binding where clock describe the actual clock inputs of the pwm |
| # block. These are necessary but some inputs may be grounded. |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - amlogic,meson8-pwm-v2 |
| then: |
| properties: |
| clocks: |
| minItems: 1 |
| items: |
| - description: input clock 0 of the pwm block |
| - description: input clock 1 of the pwm block |
| - description: input clock 2 of the pwm block |
| - description: input clock 3 of the pwm block |
| clock-names: false |
| required: |
| - clocks |
| |
| # Newer IP block take a single input per channel, instead of 4 inputs |
| # for both channels |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - amlogic,meson-s4-pwm |
| then: |
| properties: |
| clocks: |
| items: |
| - description: input clock of PWM channel A |
| - description: input clock of PWM channel B |
| clock-names: false |
| required: |
| - clocks |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - amlogic,meson-a1-pwm |
| then: |
| required: |
| - power-domains |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| pwm@8550 { |
| compatible = "amlogic,meson-gxbb-pwm"; |
| reg = <0x08550 0x10>; |
| clocks = <&xtal>, <&xtal>; |
| clock-names = "clkin0", "clkin1"; |
| #pwm-cells = <3>; |
| }; |
| - | |
| pwm@2000 { |
| compatible = "amlogic,meson8-pwm-v2"; |
| reg = <0x1000 0x10>; |
| clocks = <&xtal>, <0>, <&fdiv4>, <&fdiv5>; |
| #pwm-cells = <3>; |
| }; |
| - | |
| pwm@1000 { |
| compatible = "amlogic,meson-s4-pwm"; |
| reg = <0x1000 0x10>; |
| clocks = <&pwm_src_a>, <&pwm_src_b>; |
| #pwm-cells = <3>; |
| }; |