| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/mediatek,mt6397.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: MediaTek MT6397/MT6323 PMIC |
| |
| maintainers: |
| - Sen Chu <[email protected]> |
| - Macpaul Lin <[email protected]> |
| |
| description: | |
| MT6397/MT6323 is a power management system chip. |
| Please see the sub-modules below for supported features. |
| |
| MT6397/MT6323 is a multifunction device with the following sub modules: |
| - Regulators |
| - RTC |
| - ADC |
| - Audio codec |
| - GPIO |
| - Clock |
| - LED |
| - Keys |
| - Power controller |
| |
| It is interfaced to host controller using SPI interface by a proprietary hardware |
| called PMIC wrapper or pwrap. MT6397/MT6323 PMIC is a child device of pwrap. |
| See the following for pwrap node definitions: |
| Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - mediatek,mt6323 |
| - mediatek,mt6331 # "mediatek,mt6331" for PMIC MT6331 and MT6332. |
| - mediatek,mt6328 |
| - mediatek,mt6358 |
| - mediatek,mt6359 |
| - mediatek,mt6397 |
| - items: |
| - enum: |
| - mediatek,mt6366 |
| - const: mediatek,mt6358 |
| |
| interrupts: |
| maxItems: 1 |
| |
| interrupt-controller: true |
| |
| "#interrupt-cells": |
| const: 2 |
| |
| rtc: |
| type: object |
| $ref: /schemas/rtc/rtc.yaml# |
| unevaluatedProperties: false |
| description: |
| MT6397 Real Time Clock. |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - mediatek,mt6323-rtc |
| - mediatek,mt6331-rtc |
| - mediatek,mt6358-rtc |
| - mediatek,mt6397-rtc |
| - items: |
| - enum: |
| - mediatek,mt6366-rtc |
| - const: mediatek,mt6358-rtc |
| |
| start-year: true |
| |
| required: |
| - compatible |
| |
| regulators: |
| type: object |
| description: |
| List of child nodes that specify the regulators. |
| additionalProperties: true |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - mediatek,mt6323-regulator |
| - mediatek,mt6328-regulator |
| - mediatek,mt6358-regulator |
| - mediatek,mt6359-regulator |
| - mediatek,mt6397-regulator |
| - items: |
| - enum: |
| - mediatek,mt6366-regulator |
| - const: mediatek,mt6358-regulator |
| |
| required: |
| - compatible |
| |
| adc: |
| type: object |
| $ref: /schemas/iio/adc/mediatek,mt6359-auxadc.yaml# |
| unevaluatedProperties: false |
| |
| audio-codec: |
| type: object |
| description: |
| Audio codec support with MT6358 and MT6397. |
| additionalProperties: true |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - mediatek,mt6358-sound |
| - mediatek,mt6359-codec |
| - mediatek,mt6397-codec |
| - items: |
| - enum: |
| - mediatek,mt6366-sound |
| - const: mediatek,mt6358-sound |
| |
| required: |
| - compatible |
| |
| clocks: |
| type: object |
| additionalProperties: false |
| description: |
| This is a clock buffer node for mt6397. However, there are no sub nodes |
| or any public document exposed in public. |
| |
| properties: |
| compatible: |
| const: mediatek,mt6397-clk |
| |
| '#clock-cells': |
| const: 1 |
| |
| required: |
| - compatible |
| |
| leds: |
| type: object |
| additionalProperties: false |
| description: | |
| MT6323 LED controller is subfunction provided by MT6323 PMIC, so the LED |
| controllers are defined as the subnode of the function node provided by MT6323 |
| PMIC controller that is being defined as one kind of Muti-Function Device (MFD) |
| using shared bus called PMIC wrapper for each subfunction to access remote |
| MT6323 PMIC hardware. |
| |
| Each led is represented as a child node of the mediatek,mt6323-led that |
| describes the initial behavior for each LED physically and currently only four |
| LED child nodes can be supported. |
| |
| properties: |
| compatible: |
| enum: |
| - mediatek,mt6323-led |
| - mediatek,mt6331-led |
| - mediatek,mt6332-led |
| |
| reg: |
| maxItems: 1 |
| |
| "#address-cells": |
| const: 1 |
| |
| "#size-cells": |
| const: 0 |
| |
| patternProperties: |
| "^led@[0-3]$": |
| type: object |
| $ref: /schemas/leds/common.yaml# |
| unevaluatedProperties: false |
| |
| properties: |
| reg: |
| description: |
| LED channel number (0..3) |
| minimum: 0 |
| maximum: 3 |
| |
| required: |
| - reg |
| |
| required: |
| - compatible |
| - "#address-cells" |
| - "#size-cells" |
| |
| keys: |
| type: object |
| $ref: /schemas/input/mediatek,pmic-keys.yaml |
| unevaluatedProperties: false |
| description: |
| Power and Home keys. |
| |
| power-controller: |
| type: object |
| additionalProperties: false |
| description: |
| The power controller which could be found on PMIC is responsible for |
| externally powering off or on the remote MediaTek SoC through the |
| circuit BBPU (baseband power up). |
| |
| properties: |
| compatible: |
| const: mediatek,mt6323-pwrc |
| |
| '#power-domain-cells': |
| const: 0 |
| |
| pinctrl: |
| type: object |
| $ref: /schemas/pinctrl/mediatek,mt65xx-pinctrl.yaml |
| unevaluatedProperties: false |
| description: |
| Pin controller |
| |
| required: |
| - compatible |
| - regulators |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/leds/common.h> |
| |
| pmic { |
| compatible = "mediatek,mt6323"; |
| interrupt-parent = <&pio>; |
| interrupts = <150 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| |
| leds { |
| compatible = "mediatek,mt6323-led"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| |
| regulators { |
| compatible = "mediatek,mt6323-regulator"; |
| |
| buck_vproc { |
| regulator-name = "vproc"; |
| regulator-min-microvolt = < 700000>; |
| regulator-max-microvolt = <1350000>; |
| regulator-ramp-delay = <12500>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| buck_vsys { |
| regulator-name = "vsys"; |
| regulator-min-microvolt = <1400000>; |
| regulator-max-microvolt = <2987500>; |
| regulator-ramp-delay = <25000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| buck_vpa { |
| regulator-name = "vpa"; |
| regulator-min-microvolt = < 500000>; |
| regulator-max-microvolt = <3650000>; |
| }; |
| |
| ldo_vtcxo { |
| regulator-name = "vtcxo"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-enable-ramp-delay = <90>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vcn28 { |
| regulator-name = "vcn28"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-enable-ramp-delay = <185>; |
| }; |
| |
| ldo_vcn33_bt { |
| regulator-name = "vcn33_bt"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3600000>; |
| regulator-enable-ramp-delay = <185>; |
| }; |
| |
| ldo_vcn33_wifi { |
| regulator-name = "vcn33_wifi"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3600000>; |
| regulator-enable-ramp-delay = <185>; |
| }; |
| |
| ldo_va { |
| regulator-name = "va"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-enable-ramp-delay = <216>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vcama { |
| regulator-name = "vcama"; |
| regulator-min-microvolt = <1500000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vio28 { |
| regulator-name = "vio28"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-enable-ramp-delay = <216>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vusb { |
| regulator-name = "vusb"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <216>; |
| regulator-boot-on; |
| }; |
| |
| ldo_vmc { |
| regulator-name = "vmc"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <36>; |
| regulator-boot-on; |
| }; |
| |
| ldo_vmch { |
| regulator-name = "vmch"; |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <36>; |
| regulator-boot-on; |
| }; |
| |
| ldo_vemc3v3 { |
| regulator-name = "vemc3v3"; |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <36>; |
| regulator-boot-on; |
| }; |
| |
| ldo_vgp1 { |
| regulator-name = "vgp1"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vgp2 { |
| regulator-name = "vgp2"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vgp3 { |
| regulator-name = "vgp3"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vcn18 { |
| regulator-name = "vcn18"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vsim1 { |
| regulator-name = "vsim1"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vsim2 { |
| regulator-name = "vsim2"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vrtc { |
| regulator-name = "vrtc"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vcamaf { |
| regulator-name = "vcamaf"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vibr { |
| regulator-name = "vibr"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <36>; |
| }; |
| |
| ldo_vrf18 { |
| regulator-name = "vrf18"; |
| regulator-min-microvolt = <1825000>; |
| regulator-max-microvolt = <1825000>; |
| regulator-enable-ramp-delay = <187>; |
| }; |
| |
| ldo_vm { |
| regulator-name = "vm"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vio18 { |
| regulator-name = "vio18"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| ldo_vcamd { |
| regulator-name = "vcamd"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| |
| ldo_vcamio { |
| regulator-name = "vcamio"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-enable-ramp-delay = <216>; |
| }; |
| }; |
| |
| keys { |
| compatible = "mediatek,mt6323-keys"; |
| mediatek,long-press-mode = <1>; |
| power-off-time-sec = <0>; |
| |
| power { |
| linux,keycodes = <116>; |
| wakeup-source; |
| }; |
| |
| home { |
| linux,keycodes = <114>; |
| }; |
| }; |
| |
| power-controller { |
| compatible = "mediatek,mt6323-pwrc"; |
| #power-domain-cells = <0>; |
| }; |
| |
| rtc { |
| compatible = "mediatek,mt6323-rtc"; |
| }; |
| }; |
| |
| - | |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| pmic { |
| compatible = "mediatek,mt6358"; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| |
| audio-codec { |
| compatible = "mediatek,mt6358-sound"; |
| Avdd-supply = <&mt6358_vaud28_reg>; |
| mediatek,dmic-mode = <0>; |
| }; |
| |
| regulators { |
| compatible = "mediatek,mt6358-regulator"; |
| |
| buck_vdram1 { |
| regulator-name = "vdram1"; |
| regulator-min-microvolt = <500000>; |
| regulator-max-microvolt = <2087500>; |
| regulator-ramp-delay = <12500>; |
| regulator-enable-ramp-delay = <0>; |
| regulator-always-on; |
| regulator-allowed-modes = <0 1>; |
| }; |
| |
| // ... |
| |
| ldo_vsim2 { |
| regulator-name = "vsim2"; |
| regulator-min-microvolt = <1700000>; |
| regulator-max-microvolt = <3100000>; |
| regulator-enable-ramp-delay = <540>; |
| }; |
| }; |
| |
| rtc { |
| compatible = "mediatek,mt6358-rtc"; |
| }; |
| |
| keys { |
| compatible = "mediatek,mt6358-keys"; |
| |
| power { |
| linux,keycodes = <KEY_POWER>; |
| wakeup-source; |
| }; |
| |
| home { |
| linux,keycodes = <KEY_HOME>; |
| }; |
| }; |
| }; |
| |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| pmic { |
| compatible = "mediatek,mt6397"; |
| |
| interrupt-parent = <&pio>; |
| interrupts-extended = <&pio 222 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| |
| audio-codec { |
| compatible = "mediatek,mt6397-codec"; |
| }; |
| |
| clocks { |
| compatible = "mediatek,mt6397-clk"; |
| #clock-cells = <1>; |
| }; |
| |
| pinctrl { |
| compatible = "mediatek,mt6397-pinctrl"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| |
| regulators { |
| compatible = "mediatek,mt6397-regulator"; |
| |
| buck_vpca15 { |
| regulator-name = "vpca15"; |
| regulator-min-microvolt = < 850000>; |
| regulator-max-microvolt = <1350000>; |
| regulator-ramp-delay = <12500>; |
| regulator-enable-ramp-delay = <200>; |
| }; |
| |
| // ... |
| |
| ldo_vibr { |
| regulator-name = "vibr"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-enable-ramp-delay = <218>; |
| }; |
| }; |
| |
| rtc { |
| compatible = "mediatek,mt6397-rtc"; |
| }; |
| }; |