Commit 49ac0c7c authored by Paul Cercueil's avatar Paul Cercueil Committed by Rob Herring
Browse files

dt-bindings: timer: Convert ingenic,tcu.txt to YAML



Convert the ingenic,tcu.txt file to YAML.

Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 4d8d2177
Loading
Loading
Loading
Loading
+0 −138
Original line number Diff line number Diff line
Ingenic JZ47xx SoCs Timer/Counter Unit devicetree bindings
==========================================================

For a description of the TCU hardware and drivers, have a look at
Documentation/mips/ingenic-tcu.rst.

Required properties:

- compatible: Must be one of:
  * ingenic,jz4740-tcu
  * ingenic,jz4725b-tcu
  * ingenic,jz4770-tcu
  * ingenic,x1000-tcu
  followed by "simple-mfd".
- reg: Should be the offset/length value corresponding to the TCU registers
- clocks: List of phandle & clock specifiers for clocks external to the TCU.
  The "pclk", "rtc" and "ext" clocks should be provided. The "tcu" clock
  should be provided if the SoC has it.
- clock-names: List of name strings for the external clocks.
- #clock-cells: Should be <1>;
  Clock consumers specify this argument to identify a clock. The valid values
  may be found in <dt-bindings/clock/ingenic,tcu.h>.
- interrupt-controller : Identifies the node as an interrupt controller
- #interrupt-cells : Specifies the number of cells needed to encode an
  interrupt source. The value should be 1.
- interrupts : Specifies the interrupt the controller is connected to.

Optional properties:

- ingenic,pwm-channels-mask: Bitmask of TCU channels reserved for PWM use.
  Default value is 0xfc.


Children nodes
==========================================================


PWM node:
---------

Required properties:

- compatible: Must be one of:
  * ingenic,jz4740-pwm
  * ingenic,jz4725b-pwm
- #pwm-cells: Should be 3. See ../pwm/pwm.yaml for a description of the cell
  format.
- clocks: List of phandle & clock specifiers for the TCU clocks.
- clock-names: List of name strings for the TCU clocks.


Watchdog node:
--------------

Required properties:

- compatible: Must be "ingenic,jz4740-watchdog"
- clocks: phandle to the WDT clock
- clock-names: should be "wdt"


OS Timer node:
---------

Required properties:

- compatible: Must be one of:
  * ingenic,jz4725b-ost
  * ingenic,jz4770-ost
- clocks: phandle to the OST clock
- clock-names: should be "ost"
- interrupts : Specifies the interrupt the OST is connected to.


Example
==========================================================

#include <dt-bindings/clock/jz4770-cgu.h>
#include <dt-bindings/clock/ingenic,tcu.h>

/ {
	tcu: timer@10002000 {
		compatible = "ingenic,jz4770-tcu", "simple-mfd";
		reg = <0x10002000 0x1000>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0x0 0x10002000 0x1000>;

		#clock-cells = <1>;

		clocks = <&cgu JZ4770_CLK_RTC
			  &cgu JZ4770_CLK_EXT
			  &cgu JZ4770_CLK_PCLK>;
		clock-names = "rtc", "ext", "pclk";

		interrupt-controller;
		#interrupt-cells = <1>;

		interrupt-parent = <&intc>;
		interrupts = <27 26 25>;

		watchdog: watchdog@0 {
			compatible = "ingenic,jz4740-watchdog";
			reg = <0x0 0xc>;

			clocks = <&tcu TCU_CLK_WDT>;
			clock-names = "wdt";
		};

		pwm: pwm@40 {
			compatible = "ingenic,jz4740-pwm";
			reg = <0x40 0x80>;

			#pwm-cells = <3>;

			clocks = <&tcu TCU_CLK_TIMER0
				  &tcu TCU_CLK_TIMER1
				  &tcu TCU_CLK_TIMER2
				  &tcu TCU_CLK_TIMER3
				  &tcu TCU_CLK_TIMER4
				  &tcu TCU_CLK_TIMER5
				  &tcu TCU_CLK_TIMER6
				  &tcu TCU_CLK_TIMER7>;
			clock-names = "timer0", "timer1", "timer2", "timer3",
				      "timer4", "timer5", "timer6", "timer7";
		};

		ost: timer@e0 {
			compatible = "ingenic,jz4770-ost";
			reg = <0xe0 0x20>;

			clocks = <&tcu TCU_CLK_OST>;
			clock-names = "ost";

			interrupts = <15>;
		};
	};
};
+281 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings

description: |
  For a description of the TCU hardware and drivers, have a look at
  Documentation/mips/ingenic-tcu.rst.

maintainers:
  - Paul Cercueil <paul@crapouillou.net>

select:
  properties:
    compatible:
      contains:
        enum:
          - ingenic,jz4740-tcu
          - ingenic,jz4725b-tcu
          - ingenic,jz4770-tcu
          - ingenic,jz4780-tcu
          - ingenic,x1000-tcu
  required:
    - compatible

properties:
  $nodename:
    pattern: "^timer@[0-9a-f]+$"

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  "#clock-cells":
    const: 1

  "#interrupt-cells":
    const: 1

  interrupt-controller: true

  ranges: true

  compatible:
    oneOf:
      - items:
        - enum:
          - ingenic,jz4740-tcu
          - ingenic,jz4725b-tcu
          - ingenic,jz4770-tcu
          - ingenic,x1000-tcu
        - const: simple-mfd
      - items:
        - const: ingenic,jz4780-tcu
        - const: ingenic,jz4770-tcu
        - const: simple-mfd

  reg:
    maxItems: 1

  clocks:
    items:
      - description: RTC clock
      - description: EXT clock
      - description: PCLK clock
      - description: TCU clock
    minItems: 3

  clock-names:
    items:
      - const: rtc
      - const: ext
      - const: pclk
      - const: tcu
    minItems: 3

  interrupts:
    items:
      - description: TCU0 interrupt
      - description: TCU1 interrupt
      - description: TCU2 interrupt
    minItems: 1

  assigned-clocks:
    minItems: 1
    maxItems: 8

  assigned-clock-parents:
    minItems: 1
    maxItems: 8

  assigned-clock-rates:
    minItems: 1
    maxItems: 8

  ingenic,pwm-channels-mask:
    description: Bitmask of TCU channels reserved for PWM use.
    allOf:
      - $ref: /schemas/types.yaml#/definitions/uint32
      - minimum: 0x00
      - maximum: 0xff
      - default: 0xfc

patternProperties:
  "^watchdog@[a-f0-9]+$":
    type: object
    allOf: [ $ref: ../watchdog/watchdog.yaml# ]
    properties:
      compatible:
        oneOf:
          - enum:
            - ingenic,jz4740-watchdog
            - ingenic,jz4780-watchdog
          - items:
            - const: ingenic,jz4770-watchdog
            - const: ingenic,jz4740-watchdog

      reg:
        maxItems: 1

      clocks:
        maxItems: 1

      clock-names:
        const: wdt

    required:
      - compatible
      - reg
      - clocks
      - clock-names

  "^pwm@[a-f0-9]+$":
    type: object
    allOf: [ $ref: ../pwm/pwm.yaml# ]
    properties:
      compatible:
        oneOf:
          - enum:
            - ingenic,jz4740-pwm
          - items:
            - enum:
              - ingenic,jz4770-pwm
              - ingenic,jz4780-pwm
            - const: ingenic,jz4740-pwm

      reg:
        maxItems: 1

      clocks:
        minItems: 6
        maxItems: 8

      clock-names:
        items:
          - const: timer0
          - const: timer1
          - const: timer2
          - const: timer3
          - const: timer4
          - const: timer5
          - const: timer6
          - const: timer7
        minItems: 6

    required:
      - compatible
      - reg
      - clocks
      - clock-names

  "^timer@[a-f0-9]+$":
    type: object
    properties:
      compatible:
        oneOf:
          - enum:
            - ingenic,jz4725b-ost
            - ingenic,jz4770-ost
          - items:
            - const: ingenic,jz4780-ost
            - const: ingenic,jz4770-ost

      reg:
        maxItems: 1

      clocks:
        maxItems: 1

      clock-names:
        const: ost

      interrupts:
        maxItems: 1

    required:
      - compatible
      - reg
      - clocks
      - clock-names
      - interrupts

    additionalProperties: false

required:
  - "#clock-cells"
  - "#interrupt-cells"
  - interrupt-controller
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/jz4770-cgu.h>
    #include <dt-bindings/clock/ingenic,tcu.h>
    tcu: timer@10002000 {
      compatible = "ingenic,jz4770-tcu", "simple-mfd";
      reg = <0x10002000 0x1000>;
      #address-cells = <1>;
      #size-cells = <1>;
      ranges = <0x0 0x10002000 0x1000>;

      #clock-cells = <1>;

      clocks = <&cgu JZ4770_CLK_RTC>,
               <&cgu JZ4770_CLK_EXT>,
               <&cgu JZ4770_CLK_PCLK>;
      clock-names = "rtc", "ext", "pclk";

      interrupt-controller;
      #interrupt-cells = <1>;

      interrupt-parent = <&intc>;
      interrupts = <27 26 25>;

      watchdog: watchdog@0 {
        compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
        reg = <0x0 0xc>;

        clocks = <&tcu TCU_CLK_WDT>;
        clock-names = "wdt";
      };

      pwm: pwm@40 {
        compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
        reg = <0x40 0x80>;

        #pwm-cells = <3>;

        clocks = <&tcu TCU_CLK_TIMER0>,
                 <&tcu TCU_CLK_TIMER1>,
                 <&tcu TCU_CLK_TIMER2>,
                 <&tcu TCU_CLK_TIMER3>,
                 <&tcu TCU_CLK_TIMER4>,
                 <&tcu TCU_CLK_TIMER5>,
                 <&tcu TCU_CLK_TIMER6>,
                 <&tcu TCU_CLK_TIMER7>;
        clock-names = "timer0", "timer1", "timer2", "timer3",
                "timer4", "timer5", "timer6", "timer7";
      };

      ost: timer@e0 {
        compatible = "ingenic,jz4770-ost";
        reg = <0xe0 0x20>;

        clocks = <&tcu TCU_CLK_OST>;
        clock-names = "ost";

        interrupts = <15>;
      };
    };