# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/renesas,drif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Renesas R-Car Gen3 Digital Radio Interface Controller (DRIF)

maintainers:
  - Ramesh Shanmugasundaram <rashanmu@gmail.com>
  - Fabrizio Castro <fabrizio.castro.jz@renesas.com>

description: |
  R-Car Gen3 DRIF is a SPI like receive only slave device. A general
  representation of DRIF interfacing with a master device is shown below.

  +---------------------+                +---------------------+
  |                     |-----SCK------->|CLK                  |
  |       Master        |-----SS-------->|SYNC  DRIFn (slave)  |
  |                     |-----SD0------->|D0                   |
  |                     |-----SD1------->|D1                   |
  +---------------------+                +---------------------+

  As per datasheet, each DRIF channel (drifn) is made up of two internal
  channels (drifn0 & drifn1). These two internal channels share the common
  CLK & SYNC. Each internal channel has its own dedicated resources like
  irq, dma channels, address space & clock. This internal split is not
  visible to the external master device.

  The device tree model represents each internal channel as a separate node.
  The internal channels sharing the CLK & SYNC are tied together by their
  phandles using a property called "renesas,bonding". For the rest of
  the documentation, unless explicitly stated, the word channel implies an
  internal channel.

  When both internal channels are enabled they need to be managed together
  as one (i.e.) they cannot operate alone as independent devices. Out of the
  two, one of them needs to act as a primary device that accepts common
  properties of both the internal channels. This channel is identified by a
  property called "renesas,primary-bond".

  To summarize,
     * When both the internal channels that are bonded together are enabled,
       the zeroth channel is selected as primary-bond. This channels accepts
       properties common to all the members of the bond.
     * When only one of the bonded channels need to be enabled, the property
       "renesas,bonding" or "renesas,primary-bond" will have no effect. That
       enabled channel can act alone as any other independent device.

properties:
  compatible:
    items:
      - enum:
          - renesas,r8a7795-drif        # R-Car H3
          - renesas,r8a7796-drif        # R-Car M3-W
          - renesas,r8a77965-drif       # R-Car M3-N
          - renesas,r8a77990-drif       # R-Car E3
      - const: renesas,rcar-gen3-drif   # Generic R-Car Gen3 compatible device

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    const: fck

  resets:
    maxItems: 1

  dmas:
    minItems: 1
    maxItems: 2

  dma-names:
    minItems: 1
    items:
      - const: rx
      - const: rx

  renesas,bonding:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      The phandle to the other internal channel of DRIF

  power-domains:
    maxItems: 1

  renesas,primary-bond:
    type: boolean
    description:
      Indicates that the channel acts as primary among the bonded channels.

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    unevaluatedProperties: false
    description:
      Child port node corresponding to the data input. The port node must
      contain at least one endpoint.

    properties:
      endpoint:
        $ref: /schemas/graph.yaml#/$defs/endpoint-base
        unevaluatedProperties: false

        properties:
          sync-active:
            $ref: /schemas/types.yaml#/definitions/uint32
            enum: [0, 1]
            description:
              Indicates sync signal polarity, 0/1 for low/high respectively.
              This property maps to SYNCAC bit in the hardware manual. The
              default is 1 (active high).

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - resets
  - dmas
  - dma-names
  - renesas,bonding
  - power-domains

allOf:
  - if:
      required:
        - renesas,primary-bond
    then:
      required:
        - pinctrl-0
        - pinctrl-names
        - port

  - if:
      required:
        - port
    then:
      required:
        - pinctrl-0
        - pinctrl-names
    else:
      properties:
        pinctrl-0: false
        pinctrl-names: false

additionalProperties: false

examples:
  # Example with both internal channels enabled.
  #
  # When interfacing with a third party tuner device with two data pins as shown
  # below.
  #
  # +---------------------+                +---------------------+
  # |                     |-----SCK------->|CLK                  |
  # |       Master        |-----SS-------->|SYNC  DRIFn (slave)  |
  # |                     |-----SD0------->|D0                   |
  # |                     |-----SD1------->|D1                   |
  # +---------------------+                +---------------------+
  - |
    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/r8a7795-sysc.h>

    soc {
            #address-cells = <2>;
            #size-cells = <2>;

            drif00: rif@e6f40000 {
                    compatible = "renesas,r8a7795-drif",
                                 "renesas,rcar-gen3-drif";
                    reg = <0 0xe6f40000 0 0x64>;
                    interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&cpg CPG_MOD 515>;
                    clock-names = "fck";
                    dmas = <&dmac1 0x20>, <&dmac2 0x20>;
                    dma-names = "rx", "rx";
                    power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                    renesas,bonding = <&drif01>;
                    resets = <&cpg 515>;
                    renesas,primary-bond;
                    pinctrl-0 = <&drif0_pins>;
                    pinctrl-names = "default";
                    port {
                            drif0_ep: endpoint {
                                 remote-endpoint = <&tuner_ep>;
                            };
                    };
            };

            drif01: rif@e6f50000 {
                    compatible = "renesas,r8a7795-drif",
                                 "renesas,rcar-gen3-drif";
                    reg = <0 0xe6f50000 0 0x64>;
                    interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&cpg CPG_MOD 514>;
                    clock-names = "fck";
                    dmas = <&dmac1 0x22>, <&dmac2 0x22>;
                    dma-names = "rx", "rx";
                    power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                    renesas,bonding = <&drif00>;
                    resets = <&cpg 514>;
            };
    };

  # Example with internal channel 1 alone enabled.
  #
  # When interfacing with a third party tuner device with one data pin as shown
  # below.
  #
  # +---------------------+                +---------------------+
  # |                     |-----SCK------->|CLK                  |
  # |       Master        |-----SS-------->|SYNC  DRIFn (slave)  |
  # |                     |                |D0 (unused)          |
  # |                     |-----SD-------->|D1                   |
  # +---------------------+                +---------------------+
  - |
    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/r8a7795-sysc.h>

    soc {
            #address-cells = <2>;
            #size-cells = <2>;

            drif10: rif@e6f60000 {
                    compatible = "renesas,r8a7795-drif",
                                 "renesas,rcar-gen3-drif";
                    reg = <0 0xe6f60000 0 0x64>;
                    interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&cpg CPG_MOD 513>;
                    clock-names = "fck";
                    dmas = <&dmac1 0x24>, <&dmac2 0x24>;
                    dma-names = "rx", "rx";
                    power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                    resets = <&cpg 513>;
                    renesas,bonding = <&drif11>;
            };

            drif11: rif@e6f70000 {
                    compatible = "renesas,r8a7795-drif",
                                 "renesas,rcar-gen3-drif";
                    reg = <0 0xe6f70000 0 0x64>;
                    interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&cpg CPG_MOD 512>;
                    clock-names = "fck";
                    dmas = <&dmac1 0x26>, <&dmac2 0x26>;
                    dma-names = "rx", "rx";
                    power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                    resets = <&cpg 512>;
                    renesas,bonding = <&drif10>;
                    pinctrl-0 = <&drif1_pins>;
                    pinctrl-names = "default";
                    port {
                            drif1_ep: endpoint {
                                 remote-endpoint = <&tuner_ep1>;
                                 sync-active = <0>;
                            };
                    };
            };
    };
...
