xref: /linux/Documentation/devicetree/bindings/spmi/mediatek,mt8196-spmi.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*5abb6c7aSAngeloGioacchino Del Regno# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*5abb6c7aSAngeloGioacchino Del Regno%YAML 1.2
3*5abb6c7aSAngeloGioacchino Del Regno---
4*5abb6c7aSAngeloGioacchino Del Regno$id: http://devicetree.org/schemas/spmi/mediatek,mt8196-spmi.yaml#
5*5abb6c7aSAngeloGioacchino Del Regno$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5abb6c7aSAngeloGioacchino Del Regno
7*5abb6c7aSAngeloGioacchino Del Regnotitle: MediaTek MT8196 SPMI 2.0 Controller
8*5abb6c7aSAngeloGioacchino Del Regno
9*5abb6c7aSAngeloGioacchino Del Regnomaintainers:
10*5abb6c7aSAngeloGioacchino Del Regno  - Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
11*5abb6c7aSAngeloGioacchino Del Regno  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
12*5abb6c7aSAngeloGioacchino Del Regno
13*5abb6c7aSAngeloGioacchino Del Regnodescription:
14*5abb6c7aSAngeloGioacchino Del Regno  The MediaTek MT8196 SoC features a SPMI version 2.0 compliant controller,
15*5abb6c7aSAngeloGioacchino Del Regno  with internal wrapping arbitration logic to allow for multiple on-chip
16*5abb6c7aSAngeloGioacchino Del Regno  devices to control up to two SPMI buses.
17*5abb6c7aSAngeloGioacchino Del Regno  The main arbiter also acts as an interrupt controller, arbitering also
18*5abb6c7aSAngeloGioacchino Del Regno  the interrupts coming from SPMI-connected devices into each of the nested
19*5abb6c7aSAngeloGioacchino Del Regno  interrupt controllers from any of the present SPMI buses.
20*5abb6c7aSAngeloGioacchino Del Regno
21*5abb6c7aSAngeloGioacchino Del Regnoproperties:
22*5abb6c7aSAngeloGioacchino Del Regno  compatible:
23*5abb6c7aSAngeloGioacchino Del Regno    oneOf:
24*5abb6c7aSAngeloGioacchino Del Regno      - enum:
25*5abb6c7aSAngeloGioacchino Del Regno          - mediatek,mt8196-spmi
26*5abb6c7aSAngeloGioacchino Del Regno      - items:
27*5abb6c7aSAngeloGioacchino Del Regno          - enum:
28*5abb6c7aSAngeloGioacchino Del Regno              - mediatek,mt6991-spmi
29*5abb6c7aSAngeloGioacchino Del Regno          - const: mediatek,mt8196-spmi
30*5abb6c7aSAngeloGioacchino Del Regno
31*5abb6c7aSAngeloGioacchino Del Regno  ranges: true
32*5abb6c7aSAngeloGioacchino Del Regno
33*5abb6c7aSAngeloGioacchino Del Regno  '#address-cells':
34*5abb6c7aSAngeloGioacchino Del Regno    const: 1
35*5abb6c7aSAngeloGioacchino Del Regno
36*5abb6c7aSAngeloGioacchino Del Regno  '#size-cells':
37*5abb6c7aSAngeloGioacchino Del Regno    const: 1
38*5abb6c7aSAngeloGioacchino Del Regno
39*5abb6c7aSAngeloGioacchino Del RegnopatternProperties:
40*5abb6c7aSAngeloGioacchino Del Regno  "^spmi@[a-f0-9]+$":
41*5abb6c7aSAngeloGioacchino Del Regno    type: object
42*5abb6c7aSAngeloGioacchino Del Regno    $ref: /schemas/spmi/spmi.yaml
43*5abb6c7aSAngeloGioacchino Del Regno    unevaluatedProperties: false
44*5abb6c7aSAngeloGioacchino Del Regno
45*5abb6c7aSAngeloGioacchino Del Regno    properties:
46*5abb6c7aSAngeloGioacchino Del Regno      reg:
47*5abb6c7aSAngeloGioacchino Del Regno        items:
48*5abb6c7aSAngeloGioacchino Del Regno          - description: controller interface registers
49*5abb6c7aSAngeloGioacchino Del Regno          - description: spmi master controller registers
50*5abb6c7aSAngeloGioacchino Del Regno
51*5abb6c7aSAngeloGioacchino Del Regno      reg-names:
52*5abb6c7aSAngeloGioacchino Del Regno        items:
53*5abb6c7aSAngeloGioacchino Del Regno          - const: pmif
54*5abb6c7aSAngeloGioacchino Del Regno          - const: spmimst
55*5abb6c7aSAngeloGioacchino Del Regno
56*5abb6c7aSAngeloGioacchino Del Regno      clocks:
57*5abb6c7aSAngeloGioacchino Del Regno        items:
58*5abb6c7aSAngeloGioacchino Del Regno          - description: controller interface system clock
59*5abb6c7aSAngeloGioacchino Del Regno          - description: controller interface timer clock
60*5abb6c7aSAngeloGioacchino Del Regno          - description: spmi controller master clock
61*5abb6c7aSAngeloGioacchino Del Regno
62*5abb6c7aSAngeloGioacchino Del Regno      clock-names:
63*5abb6c7aSAngeloGioacchino Del Regno        items:
64*5abb6c7aSAngeloGioacchino Del Regno          - const: pmif_sys_ck
65*5abb6c7aSAngeloGioacchino Del Regno          - const: pmif_tmr_ck
66*5abb6c7aSAngeloGioacchino Del Regno          - const: spmimst_clk_mux
67*5abb6c7aSAngeloGioacchino Del Regno
68*5abb6c7aSAngeloGioacchino Del Regno      interrupts:
69*5abb6c7aSAngeloGioacchino Del Regno        maxItems: 1
70*5abb6c7aSAngeloGioacchino Del Regno
71*5abb6c7aSAngeloGioacchino Del Regno      interrupt-names:
72*5abb6c7aSAngeloGioacchino Del Regno        const: rcs
73*5abb6c7aSAngeloGioacchino Del Regno
74*5abb6c7aSAngeloGioacchino Del Regno      interrupt-controller: true
75*5abb6c7aSAngeloGioacchino Del Regno
76*5abb6c7aSAngeloGioacchino Del Regno      "#interrupt-cells":
77*5abb6c7aSAngeloGioacchino Del Regno        const: 3
78*5abb6c7aSAngeloGioacchino Del Regno        description: |
79*5abb6c7aSAngeloGioacchino Del Regno          cell 1: slave ID for the requested interrupt (0-15)
80*5abb6c7aSAngeloGioacchino Del Regno          cell 2: the requested peripheral interrupt (0-7)
81*5abb6c7aSAngeloGioacchino Del Regno          cell 3: interrupt flags indicating level-sense information,
82*5abb6c7aSAngeloGioacchino Del Regno                  as defined in dt-bindings/interrupt-controller/irq.h
83*5abb6c7aSAngeloGioacchino Del Regno    required:
84*5abb6c7aSAngeloGioacchino Del Regno      - reg
85*5abb6c7aSAngeloGioacchino Del Regno      - reg-names
86*5abb6c7aSAngeloGioacchino Del Regno      - clocks
87*5abb6c7aSAngeloGioacchino Del Regno      - clock-names
88*5abb6c7aSAngeloGioacchino Del Regno      - interrupts
89*5abb6c7aSAngeloGioacchino Del Regno      - interrupt-names
90*5abb6c7aSAngeloGioacchino Del Regno      - interrupt-controller
91*5abb6c7aSAngeloGioacchino Del Regno      - "#interrupt-cells"
92*5abb6c7aSAngeloGioacchino Del Regno
93*5abb6c7aSAngeloGioacchino Del Regnorequired:
94*5abb6c7aSAngeloGioacchino Del Regno  - compatible
95*5abb6c7aSAngeloGioacchino Del Regno  - ranges
96*5abb6c7aSAngeloGioacchino Del Regno  - '#address-cells'
97*5abb6c7aSAngeloGioacchino Del Regno  - '#size-cells'
98*5abb6c7aSAngeloGioacchino Del Regno
99*5abb6c7aSAngeloGioacchino Del RegnoadditionalProperties: false
100*5abb6c7aSAngeloGioacchino Del Regno
101*5abb6c7aSAngeloGioacchino Del Regnoexamples:
102*5abb6c7aSAngeloGioacchino Del Regno  - |
103*5abb6c7aSAngeloGioacchino Del Regno    #include <dt-bindings/interrupt-controller/arm-gic.h>
104*5abb6c7aSAngeloGioacchino Del Regno
105*5abb6c7aSAngeloGioacchino Del Regno    soc {
106*5abb6c7aSAngeloGioacchino Del Regno      #address-cells = <2>;
107*5abb6c7aSAngeloGioacchino Del Regno      #size-cells = <2>;
108*5abb6c7aSAngeloGioacchino Del Regno
109*5abb6c7aSAngeloGioacchino Del Regno      spmi-arbiter@1c018000 {
110*5abb6c7aSAngeloGioacchino Del Regno        compatible = "mediatek,mt8196-spmi";
111*5abb6c7aSAngeloGioacchino Del Regno        ranges = <0 0 0x1c018000 0x4900>;
112*5abb6c7aSAngeloGioacchino Del Regno        #address-cells = <1>;
113*5abb6c7aSAngeloGioacchino Del Regno        #size-cells = <1>;
114*5abb6c7aSAngeloGioacchino Del Regno
115*5abb6c7aSAngeloGioacchino Del Regno        spmi@0 {
116*5abb6c7aSAngeloGioacchino Del Regno          reg = <0 0x900>, <0x4800 0x100>;
117*5abb6c7aSAngeloGioacchino Del Regno          reg-names = "pmif", "spmimst";
118*5abb6c7aSAngeloGioacchino Del Regno          interrupts-extended = <&pio 292 IRQ_TYPE_LEVEL_HIGH>;
119*5abb6c7aSAngeloGioacchino Del Regno          interrupt-names = "rcs";
120*5abb6c7aSAngeloGioacchino Del Regno          interrupt-controller;
121*5abb6c7aSAngeloGioacchino Del Regno          #interrupt-cells = <3>;
122*5abb6c7aSAngeloGioacchino Del Regno          clocks = <&pmif_sys>, <&pmif_tmr>, <&spmi_mst>;
123*5abb6c7aSAngeloGioacchino Del Regno          clock-names = "pmif_sys_ck", "pmif_tmr_ck", "spmimst_clk_mux";
124*5abb6c7aSAngeloGioacchino Del Regno        };
125*5abb6c7aSAngeloGioacchino Del Regno
126*5abb6c7aSAngeloGioacchino Del Regno        spmi@2000 {
127*5abb6c7aSAngeloGioacchino Del Regno          reg = <0x2000 0x900>, <0x4000 0x100>;
128*5abb6c7aSAngeloGioacchino Del Regno          reg-names = "pmif", "spmimst";
129*5abb6c7aSAngeloGioacchino Del Regno          interrupts-extended = <&pio 291 IRQ_TYPE_LEVEL_HIGH>;
130*5abb6c7aSAngeloGioacchino Del Regno          interrupt-names = "rcs";
131*5abb6c7aSAngeloGioacchino Del Regno          interrupt-controller;
132*5abb6c7aSAngeloGioacchino Del Regno          #interrupt-cells = <3>;
133*5abb6c7aSAngeloGioacchino Del Regno          clocks = <&pmif_sys>, <&pmif_tmr>, <&spmi_mst>;
134*5abb6c7aSAngeloGioacchino Del Regno          clock-names = "pmif_sys_ck", "pmif_tmr_ck", "spmimst_clk_mux";
135*5abb6c7aSAngeloGioacchino Del Regno        };
136*5abb6c7aSAngeloGioacchino Del Regno      };
137*5abb6c7aSAngeloGioacchino Del Regno    };
138*5abb6c7aSAngeloGioacchino Del Regno...
139