Documentation / devicetree / bindings / soc / mediatek / mediatek,pwrap.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/mediatek/mediatek,pwrap.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek PMIC Wrapper

maintainers:
  - Flora Fu <flora.fu@mediatek.com>
  - Alexandre Mergnat <amergnat@baylibre.com>

description:
  On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface
  is not directly visible to the CPU, but only through the PMIC wrapper
  inside the SoC. The communication between the SoC and the PMIC can
  optionally be encrypted. Also a non standard Dual IO SPI mode can be
  used to increase speed.
 
  IP Pairing
 
  On MT8135 the pins of some SoC internal peripherals can be on the PMIC.
  The signals of these pins are routed over the SPI bus using the pwrap
  bridge. In the binding description below the properties needed for bridging
  are marked with "IP Pairing". These are optional on SoCs which do not support
  IP Pairing

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - mediatek,mt2701-pwrap
              - mediatek,mt6765-pwrap
              - mediatek,mt6779-pwrap
              - mediatek,mt6795-pwrap
              - mediatek,mt6797-pwrap
              - mediatek,mt6873-pwrap
              - mediatek,mt7622-pwrap
              - mediatek,mt8135-pwrap
              - mediatek,mt8173-pwrap
              - mediatek,mt8183-pwrap
              - mediatek,mt8186-pwrap
              - mediatek,mt8195-pwrap
              - mediatek,mt8365-pwrap
              - mediatek,mt8516-pwrap
      - items:
          - enum:
              - mediatek,mt8186-pwrap
              - mediatek,mt8195-pwrap
          - const: syscon
      - items:
          - enum:
              - mediatek,mt8188-pwrap
          - const: mediatek,mt8195-pwrap
          - const: syscon

  reg:
    minItems: 1
    items:
      - description: PMIC wrapper registers
      - description: IP pairing registers

  reg-names:
    minItems: 1
    items:
      - const: pwrap
      - const: pwrap-bridge

  interrupts:
    maxItems: 1

  clocks:
    minItems: 2
    items:
      - description: SPI bus clock
      - description: Main module clock
      - description: System module clock
      - description: Timer module clock

  clock-names:
    minItems: 2
    items:
      - const: spi
      - const: wrap
      - const: sys
      - const: tmr

  resets:
    minItems: 1
    items:
      - description: PMIC wrapper reset
      - description: IP pairing reset

  reset-names:
    minItems: 1
    items:
      - const: pwrap
      - const: pwrap-bridge

  pmic:
    type: object

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - clocks
  - clock-names

dependentRequired:
  resets: [reset-names]

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8365-pwrap
    then:
      properties:
        clocks:
          minItems: 4

        clock-names:
          minItems: 4

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/reset/mt8135-resets.h>
 
    soc {
        #address-cells = <2>;
        #size-cells = <2>;
        pwrap@1000f000 {
            compatible = "mediatek,mt8135-pwrap";
            reg = <0 0x1000f000 0 0x1000>,
                  <0 0x11017000 0 0x1000>;
            reg-names = "pwrap", "pwrap-bridge";
            interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&clk26m>, <&clk26m>;
            clock-names = "spi", "wrap";
            resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
                     <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
            reset-names = "pwrap", "pwrap-bridge";
        };
    };