// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (c) 2023 Collabora Ltd.
 * Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
 */
#include <dt-bindings/input/input.h>

&pwrap {
	pmic: mt6331 {
		compatible = "mediatek,mt6331";
		interrupt-controller;
		#interrupt-cells = <2>;

		mt6331regulator: mt6331regulator {
			compatible = "mediatek,mt6331-regulator";

			mt6331_vdvfs11_reg: buck-vdvfs11 {
				regulator-name = "vdvfs11";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1493750>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vdvfs12_reg: buck-vdvfs12 {
				regulator-name = "vdvfs12";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1493750>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vdvfs13_reg: buck-vdvfs13 {
				regulator-name = "vdvfs13";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1493750>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vdvfs14_reg: buck-vdvfs14 {
				regulator-name = "vdvfs14";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1493750>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vcore2_reg: buck-vcore2 {
				regulator-name = "vcore2";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1493750>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vio18_reg: buck-vio18 {
				regulator-name = "vio18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-allowed-modes = <0 1>;
				regulator-always-on;
			};

			mt6331_vtcxo1_reg: ldo-vtcxo1 {
				regulator-name = "vtcxo1";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vtcxo2_reg: ldo-vtcxo2 {
				regulator-name = "vtcxo2";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_avdd32_aud_reg: ldo-avdd32aud {
				regulator-name = "avdd32_aud";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <3200000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vauxa32_reg: ldo-vauxa32 {
				regulator-name = "vauxa32";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <3200000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vcama_reg: ldo-vcama {
				regulator-name = "vcama";
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <2800000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vio28_reg: ldo-vio28 {
				regulator-name = "vio28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vcamaf_reg: ldo-vcamaf {
				regulator-name = "vcam_af";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vmc_reg: ldo-vmc {
				regulator-name = "vmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vmch_reg: ldo-vmch {
				regulator-name = "vmch";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vemc33_reg: ldo-vemc33 {
				regulator-name = "vemc33";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vgp1_reg: ldo-vgp1 {
				regulator-name = "vgp1";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vsim1_reg: ldo-vsim1 {
				regulator-name = "vsim1";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <3100000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vsim2_reg: ldo-vsim2 {
				regulator-name = "vsim2";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <3100000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vmipi_reg: ldo-vmipi {
				regulator-name = "vmipi";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vibr_reg: ldo-vibr {
				regulator-name = "vibr";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vgp4_reg: ldo-vgp4 {
				regulator-name = "vgp4";
				regulator-min-microvolt = <1600000>;
				regulator-max-microvolt = <2200000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vcamd_reg: ldo-vcamd {
				regulator-name = "vcamd";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1500000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vusb10_reg: ldo-vusb10 {
				regulator-name = "vusb";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1300000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vcamio_reg: ldo-vcamio {
				regulator-name = "vcam_io";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1800000>;
				regulator-ramp-delay = <0>;
			};

			mt6331_vsram_reg: ldo-vsram {
				regulator-name = "vsram";
				regulator-min-microvolt = <1012500>;
				regulator-max-microvolt = <1012500>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vgp2_reg: ldo-vgp2 {
				regulator-name = "vgp2";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1500000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6331_vgp3_reg: ldo-vgp3 {
				regulator-name = "vgp3";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vrtc_reg: ldo-vrtc {
				regulator-name = "vrtc";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6331_vdig18_reg: ldo-vdig18 {
				regulator-name = "dvdd18_dig";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-ramp-delay = <0>;
				regulator-always-on;
			};
		};

		mt6331rtc: mt6331rtc {
			compatible = "mediatek,mt6331-rtc";
		};

		mt6331keys: mt6331keys {
			compatible = "mediatek,mt6331-keys";
			power {
				linux,keycodes = <KEY_POWER>;
				wakeup-source;
			};
			home {
				linux,keycodes = <KEY_HOME>;
			};
		};
	};
};