linux/Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
Macpaul Lin 5bcecfcaa6 dt-bindings: mfd: mediatek: mt6397: Add ADC, CODEC and Regulators for MT6359
Since MT6359 PMIC has been added as one of the compatibles of
"mediatek,mt6397.yaml", the sub-device node of "MT6359 PMIC AUXADC",
"MT6359 Audio Codec"  and "MT6359 PMIC Regulators" should also be
contained in this DT Schema as well.

This patch includes:
 - add 'adc' property and $ref for 'mediatek,mt6359-auxadc'.
 - add 'mt6359-regulator' to the compatibles of regulators.
 - add 'mt6359-codec' to the compatibles of audio-codec.

Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20241004030148.13366-1-macpaul.lin@mediatek.com
Signed-off-by: Lee Jones <lee@kernel.org>
2024-10-16 09:05:22 +01:00

599 lines
16 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,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,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";
};
};