# 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 - Macpaul Lin 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 #include 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 #include 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 = ; wakeup-source; }; home { linux,keycodes = ; }; }; }; - | #include 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"; }; };