1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/memory-controllers/renesas,rpc-if.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Renesas Reduced Pin Count Interface (RPC-IF)
8
9maintainers:
10  - Sergei Shtylyov <sergei.shtylyov@gmail.com>
11
12description: |
13  Renesas RPC-IF allows a SPI flash or HyperFlash connected to the SoC to
14  be accessed via the external address space read mode or the manual mode.
15
16  The flash chip itself should be represented by a subnode of the RPC-IF node.
17  The flash interface is selected based on the "compatible" property of this
18  subnode:
19  - if it contains "jedec,spi-nor", then SPI is used;
20  - if it contains "cfi-flash", then HyperFlash is used.
21
22allOf:
23  - $ref: /schemas/spi/spi-controller.yaml#
24
25properties:
26  compatible:
27    oneOf:
28      - items:
29          - enum:
30              - renesas,r8a774a1-rpc-if       # RZ/G2M
31              - renesas,r8a774b1-rpc-if       # RZ/G2N
32              - renesas,r8a774c0-rpc-if       # RZ/G2E
33              - renesas,r8a774e1-rpc-if       # RZ/G2H
34              - renesas,r8a7795-rpc-if        # R-Car H3
35              - renesas,r8a7796-rpc-if        # R-Car M3-W
36              - renesas,r8a77961-rpc-if       # R-Car M3-W+
37              - renesas,r8a77965-rpc-if       # R-Car M3-N
38              - renesas,r8a77970-rpc-if       # R-Car V3M
39              - renesas,r8a77980-rpc-if       # R-Car V3H
40              - renesas,r8a77990-rpc-if       # R-Car E3
41              - renesas,r8a77995-rpc-if       # R-Car D3
42              - renesas,r8a779a0-rpc-if       # R-Car V3U
43          - const: renesas,rcar-gen3-rpc-if   # a generic R-Car gen3 or RZ/G2{E,H,M,N} device
44
45      - items:
46          - enum:
47              - renesas,r8a779g0-rpc-if       # R-Car V4H
48          - const: renesas,rcar-gen4-rpc-if   # a generic R-Car gen4 device
49
50      - items:
51          - enum:
52              - renesas,r9a07g043-rpc-if      # RZ/G2UL
53              - renesas,r9a07g044-rpc-if      # RZ/G2{L,LC}
54              - renesas,r9a07g054-rpc-if      # RZ/V2L
55          - const: renesas,rzg2l-rpc-if
56
57  reg:
58    items:
59      - description: RPC-IF registers
60      - description: direct mapping read mode area
61      - description: write buffer area
62
63  reg-names:
64    items:
65      - const: regs
66      - const: dirmap
67      - const: wbuf
68
69  clocks: true
70
71  interrupts:
72    maxItems: 1
73
74  power-domains:
75    maxItems: 1
76
77  resets:
78    maxItems: 1
79
80patternProperties:
81  "flash@[0-9a-f]+$":
82    type: object
83    properties:
84      compatible:
85        contains:
86          enum:
87            - cfi-flash
88            - jedec,spi-nor
89
90required:
91  - compatible
92  - reg
93  - reg-names
94  - clocks
95  - power-domains
96  - resets
97  - '#address-cells'
98  - '#size-cells'
99
100if:
101  properties:
102    compatible:
103      contains:
104        enum:
105          - renesas,rzg2l-rpc-if
106then:
107  properties:
108    clocks:
109      items:
110        - description: SPI Multi IO Register access clock (SPI_CLK2)
111        - description: SPI Multi IO Main clock (SPI_CLK).
112
113else:
114  properties:
115    clocks:
116      maxItems: 1
117
118unevaluatedProperties: false
119
120examples:
121  - |
122    #include <dt-bindings/clock/renesas-cpg-mssr.h>
123    #include <dt-bindings/power/r8a77995-sysc.h>
124
125    spi@ee200000 {
126      compatible = "renesas,r8a77995-rpc-if", "renesas,rcar-gen3-rpc-if";
127      reg = <0xee200000 0x200>,
128            <0x08000000 0x4000000>,
129            <0xee208000 0x100>;
130      reg-names = "regs", "dirmap", "wbuf";
131      clocks = <&cpg CPG_MOD 917>;
132      power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
133      resets = <&cpg 917>;
134      #address-cells = <1>;
135      #size-cells = <0>;
136
137      flash@0 {
138        compatible = "jedec,spi-nor";
139        reg = <0>;
140        spi-max-frequency = <40000000>;
141        spi-tx-bus-width = <1>;
142        spi-rx-bus-width = <1>;
143      };
144    };
145