# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/timer/faraday,fttmr010.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Faraday FTTMR010 timer

maintainers:
  - Joel Stanley <joel@jms.id.au>
  - Linus Walleij <linus.walleij@linaro.org>

description:
  This timer is a generic IP block from Faraday Technology, embedded in the
  Cortina Systems Gemini SoCs and other designs.

properties:
  compatible:
    oneOf:
      - items:
          - const: moxa,moxart-timer
          - const: faraday,fttmr010
      - enum:
          - aspeed,ast2400-timer
          - aspeed,ast2500-timer
          - aspeed,ast2600-timer
          - cortina,gemini-timer
          - faraday,fttmr010

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    maxItems: 8
    description: One interrupt per timer

  clocks:
    minItems: 1
    items:
      - description: Peripheral clock
      - description: External tick clock

  clock-names:
    minItems: 1
    items:
      - const: PCLK
      - const: EXTCLK

  resets:
    maxItems: 1

  syscon:
    description: System controller phandle for Gemini systems
    $ref: /schemas/types.yaml#/definitions/phandle

required:
  - compatible
  - reg
  - interrupts

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: cortina,gemini-timer
    then:
      required:
        - syscon
    else:
      properties:
        syscon: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    timer@43000000 {
        compatible = "faraday,fttmr010";
        reg = <0x43000000 0x1000>;
        interrupts = <14 IRQ_TYPE_EDGE_FALLING>, /* Timer 1 */
                    <15 IRQ_TYPE_EDGE_FALLING>, /* Timer 2 */
                    <16 IRQ_TYPE_EDGE_FALLING>; /* Timer 3 */
        clocks = <&pclk>, <&extclk>;
        clock-names = "PCLK", "EXTCLK";
    };
