xref: /linux/Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml (revision 2b0cfa6e49566c8fa6759734cf821aa6e8271a9e)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/mediatek/mediatek,pwrap.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Mediatek PMIC Wrapper
8
9maintainers:
10  - Flora Fu <flora.fu@mediatek.com>
11  - Alexandre Mergnat <amergnat@baylibre.com>
12
13description:
14  On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface
15  is not directly visible to the CPU, but only through the PMIC wrapper
16  inside the SoC. The communication between the SoC and the PMIC can
17  optionally be encrypted. Also a non standard Dual IO SPI mode can be
18  used to increase speed.
19
20  IP Pairing
21
22  On MT8135 the pins of some SoC internal peripherals can be on the PMIC.
23  The signals of these pins are routed over the SPI bus using the pwrap
24  bridge. In the binding description below the properties needed for bridging
25  are marked with "IP Pairing". These are optional on SoCs which do not support
26  IP Pairing
27
28properties:
29  compatible:
30    oneOf:
31      - items:
32          - enum:
33              - mediatek,mt2701-pwrap
34              - mediatek,mt6765-pwrap
35              - mediatek,mt6779-pwrap
36              - mediatek,mt6795-pwrap
37              - mediatek,mt6797-pwrap
38              - mediatek,mt6873-pwrap
39              - mediatek,mt7622-pwrap
40              - mediatek,mt8135-pwrap
41              - mediatek,mt8173-pwrap
42              - mediatek,mt8183-pwrap
43              - mediatek,mt8186-pwrap
44              - mediatek,mt8195-pwrap
45              - mediatek,mt8365-pwrap
46              - mediatek,mt8516-pwrap
47      - items:
48          - enum:
49              - mediatek,mt8186-pwrap
50              - mediatek,mt8195-pwrap
51          - const: syscon
52      - items:
53          - enum:
54              - mediatek,mt8188-pwrap
55          - const: mediatek,mt8195-pwrap
56          - const: syscon
57
58  reg:
59    minItems: 1
60    items:
61      - description: PMIC wrapper registers
62      - description: IP pairing registers
63
64  reg-names:
65    minItems: 1
66    items:
67      - const: pwrap
68      - const: pwrap-bridge
69
70  interrupts:
71    maxItems: 1
72
73  clocks:
74    minItems: 2
75    items:
76      - description: SPI bus clock
77      - description: Main module clock
78      - description: System module clock
79      - description: Timer module clock
80
81  clock-names:
82    minItems: 2
83    items:
84      - const: spi
85      - const: wrap
86      - const: sys
87      - const: tmr
88
89  resets:
90    minItems: 1
91    items:
92      - description: PMIC wrapper reset
93      - description: IP pairing reset
94
95  reset-names:
96    minItems: 1
97    items:
98      - const: pwrap
99      - const: pwrap-bridge
100
101  pmic:
102    type: object
103
104required:
105  - compatible
106  - reg
107  - reg-names
108  - interrupts
109  - clocks
110  - clock-names
111
112dependentRequired:
113  resets: [reset-names]
114
115allOf:
116  - if:
117      properties:
118        compatible:
119          contains:
120            const: mediatek,mt8365-pwrap
121    then:
122      properties:
123        clocks:
124          minItems: 4
125
126        clock-names:
127          minItems: 4
128
129additionalProperties: false
130
131examples:
132  - |
133    #include <dt-bindings/interrupt-controller/irq.h>
134    #include <dt-bindings/interrupt-controller/arm-gic.h>
135    #include <dt-bindings/reset/mt8135-resets.h>
136
137    soc {
138        #address-cells = <2>;
139        #size-cells = <2>;
140        pwrap@1000f000 {
141            compatible = "mediatek,mt8135-pwrap";
142            reg = <0 0x1000f000 0 0x1000>,
143                  <0 0x11017000 0 0x1000>;
144            reg-names = "pwrap", "pwrap-bridge";
145            interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
146            clocks = <&clk26m>, <&clk26m>;
147            clock-names = "spi", "wrap";
148            resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
149                     <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
150            reset-names = "pwrap", "pwrap-bridge";
151        };
152    };
153