Files
2026-09-06 12:53:21 -06:00

666 lines
18 KiB
YAML

# 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 <sen.chu@mediatek.com>
- Macpaul Lin <macpaul.lin@mediatek.com>
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
- items:
- enum:
- mediatek,mt6365
- const: mediatek,mt6359
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,mt6359-rtc
- mediatek,mt6365-rtc
- 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,mt6331-regulator
- mediatek,mt6358-regulator
- mediatek,mt6359-regulator
- mediatek,mt6397-regulator
- items:
- enum:
- mediatek,mt6366-regulator
- const: mediatek,mt6358-regulator
- items:
- enum:
- mediatek,mt6365-regulator
- const: mediatek,mt6359-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
- items:
- enum:
- mediatek,mt6365-codec
- const: mediatek,mt6359-codec
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
vsys-smps-supply:
description: Supply for regulator control logic
patternProperties:
"^vsys-v[a-z]+[0-9]*-supply$":
description: Supplies for PMIC buck regulators
"^vs(ys|[12])-ldo[1-9]-supply$":
description: Supplies for PMIC LDO regulators
required:
- compatible
- regulators
additionalProperties: false
allOf:
- if:
properties:
"compatible":
contains:
const: mediatek,mt6359
then:
properties:
vsys-ldo1-supply:
description: Supply for LDOs vcn33_[12], vio28, vfe28, vibr
vsys-ldo2-supply:
description: Supply for LDOs vaux18, vbif28, vxo22, vrfck, vrfck_1,
vemc, vsim1, vsim2, vusb
vsys-vcore-supply:
description: Supply for buck regulator vcore
vsys-vgpu11-supply:
description: Supply for buck regulator vgpu11
vsys-vmodem-supply:
description: Supply for buck regulator vmodem
vsys-vpa-supply:
description: Supply for buck regulator vpa
vsys-vproc1-supply:
description: Supply for buck regulator vproc1
vsys-vproc2-supply:
description: Supply for buck regulator vproc2
vsys-vpu-supply:
description: Supply for buck regulator vpu
vsys-vs1-supply:
description: Supply for buck regulator vs1
vsys-vs2-supply:
description: Supply for buck regulator vs2
vs1-ldo1-supply:
description: Supply for LDOs vaud18, vcamio, vm18, vufs
vs1-ldo2-supply:
description: Supply for LDOs vcn18, vefuse, vio18, vrf18
vs2-ldo1-supply:
description:
Supply for LDOs vsram_proc1, vsram_proc2, vsram_others, vsram_md
vs2-ldo2-supply:
description: Supply for LDOs va09, va12, vcn13, vrf12
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";
};
};