162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/mediatek/mediatek,pwrap.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Mediatek PMIC Wrapper
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Flora Fu <flora.fu@mediatek.com>
1162306a36Sopenharmony_ci  - Alexandre Mergnat <amergnat@baylibre.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface
1562306a36Sopenharmony_ci  is not directly visible to the CPU, but only through the PMIC wrapper
1662306a36Sopenharmony_ci  inside the SoC. The communication between the SoC and the PMIC can
1762306a36Sopenharmony_ci  optionally be encrypted. Also a non standard Dual IO SPI mode can be
1862306a36Sopenharmony_ci  used to increase speed.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  IP Pairing
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  On MT8135 the pins of some SoC internal peripherals can be on the PMIC.
2362306a36Sopenharmony_ci  The signals of these pins are routed over the SPI bus using the pwrap
2462306a36Sopenharmony_ci  bridge. In the binding description below the properties needed for bridging
2562306a36Sopenharmony_ci  are marked with "IP Pairing". These are optional on SoCs which do not support
2662306a36Sopenharmony_ci  IP Pairing
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciproperties:
2962306a36Sopenharmony_ci  compatible:
3062306a36Sopenharmony_ci    oneOf:
3162306a36Sopenharmony_ci      - items:
3262306a36Sopenharmony_ci          - enum:
3362306a36Sopenharmony_ci              - mediatek,mt2701-pwrap
3462306a36Sopenharmony_ci              - mediatek,mt6765-pwrap
3562306a36Sopenharmony_ci              - mediatek,mt6779-pwrap
3662306a36Sopenharmony_ci              - mediatek,mt6795-pwrap
3762306a36Sopenharmony_ci              - mediatek,mt6797-pwrap
3862306a36Sopenharmony_ci              - mediatek,mt6873-pwrap
3962306a36Sopenharmony_ci              - mediatek,mt7622-pwrap
4062306a36Sopenharmony_ci              - mediatek,mt8135-pwrap
4162306a36Sopenharmony_ci              - mediatek,mt8173-pwrap
4262306a36Sopenharmony_ci              - mediatek,mt8183-pwrap
4362306a36Sopenharmony_ci              - mediatek,mt8186-pwrap
4462306a36Sopenharmony_ci              - mediatek,mt8188-pwrap
4562306a36Sopenharmony_ci              - mediatek,mt8195-pwrap
4662306a36Sopenharmony_ci              - mediatek,mt8365-pwrap
4762306a36Sopenharmony_ci              - mediatek,mt8516-pwrap
4862306a36Sopenharmony_ci      - items:
4962306a36Sopenharmony_ci          - enum:
5062306a36Sopenharmony_ci              - mediatek,mt8186-pwrap
5162306a36Sopenharmony_ci              - mediatek,mt8195-pwrap
5262306a36Sopenharmony_ci          - const: syscon
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  reg:
5562306a36Sopenharmony_ci    minItems: 1
5662306a36Sopenharmony_ci    items:
5762306a36Sopenharmony_ci      - description: PMIC wrapper registers
5862306a36Sopenharmony_ci      - description: IP pairing registers
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  reg-names:
6162306a36Sopenharmony_ci    minItems: 1
6262306a36Sopenharmony_ci    items:
6362306a36Sopenharmony_ci      - const: pwrap
6462306a36Sopenharmony_ci      - const: pwrap-bridge
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  interrupts:
6762306a36Sopenharmony_ci    maxItems: 1
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  clocks:
7062306a36Sopenharmony_ci    minItems: 2
7162306a36Sopenharmony_ci    items:
7262306a36Sopenharmony_ci      - description: SPI bus clock
7362306a36Sopenharmony_ci      - description: Main module clock
7462306a36Sopenharmony_ci      - description: System module clock
7562306a36Sopenharmony_ci      - description: Timer module clock
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  clock-names:
7862306a36Sopenharmony_ci    minItems: 2
7962306a36Sopenharmony_ci    items:
8062306a36Sopenharmony_ci      - const: spi
8162306a36Sopenharmony_ci      - const: wrap
8262306a36Sopenharmony_ci      - const: sys
8362306a36Sopenharmony_ci      - const: tmr
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci  resets:
8662306a36Sopenharmony_ci    minItems: 1
8762306a36Sopenharmony_ci    items:
8862306a36Sopenharmony_ci      - description: PMIC wrapper reset
8962306a36Sopenharmony_ci      - description: IP pairing reset
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci  reset-names:
9262306a36Sopenharmony_ci    minItems: 1
9362306a36Sopenharmony_ci    items:
9462306a36Sopenharmony_ci      - const: pwrap
9562306a36Sopenharmony_ci      - const: pwrap-bridge
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci  pmic:
9862306a36Sopenharmony_ci    type: object
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_cirequired:
10162306a36Sopenharmony_ci  - compatible
10262306a36Sopenharmony_ci  - reg
10362306a36Sopenharmony_ci  - reg-names
10462306a36Sopenharmony_ci  - interrupts
10562306a36Sopenharmony_ci  - clocks
10662306a36Sopenharmony_ci  - clock-names
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_cidependentRequired:
10962306a36Sopenharmony_ci  resets: [reset-names]
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciallOf:
11262306a36Sopenharmony_ci  - if:
11362306a36Sopenharmony_ci      properties:
11462306a36Sopenharmony_ci        compatible:
11562306a36Sopenharmony_ci          contains:
11662306a36Sopenharmony_ci            const: mediatek,mt8365-pwrap
11762306a36Sopenharmony_ci    then:
11862306a36Sopenharmony_ci      properties:
11962306a36Sopenharmony_ci        clocks:
12062306a36Sopenharmony_ci          minItems: 4
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci        clock-names:
12362306a36Sopenharmony_ci          minItems: 4
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ciadditionalProperties: false
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciexamples:
12862306a36Sopenharmony_ci  - |
12962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
13062306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
13162306a36Sopenharmony_ci    #include <dt-bindings/reset/mt8135-resets.h>
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci    soc {
13462306a36Sopenharmony_ci        #address-cells = <2>;
13562306a36Sopenharmony_ci        #size-cells = <2>;
13662306a36Sopenharmony_ci        pwrap@1000f000 {
13762306a36Sopenharmony_ci            compatible = "mediatek,mt8135-pwrap";
13862306a36Sopenharmony_ci            reg = <0 0x1000f000 0 0x1000>,
13962306a36Sopenharmony_ci                  <0 0x11017000 0 0x1000>;
14062306a36Sopenharmony_ci            reg-names = "pwrap", "pwrap-bridge";
14162306a36Sopenharmony_ci            interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
14262306a36Sopenharmony_ci            clocks = <&clk26m>, <&clk26m>;
14362306a36Sopenharmony_ci            clock-names = "spi", "wrap";
14462306a36Sopenharmony_ci            resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
14562306a36Sopenharmony_ci                     <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
14662306a36Sopenharmony_ci            reset-names = "pwrap", "pwrap-bridge";
14762306a36Sopenharmony_ci        };
14862306a36Sopenharmony_ci    };
149