// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (c) 2020 MediaTek Inc.
 */
#include <dt-bindings/input/input.h>

&pwrap {
	pmic: pmic {
		compatible = "mediatek,mt6358";
		interrupt-controller;
		interrupt-parent = <&pio>;
		interrupts = <182 IRQ_TYPE_LEVEL_HIGH>;
		#interrupt-cells = <2>;

		mt6358codec: mt6358codec {
			compatible = "mediatek,mt6358-sound";
			mediatek,dmic-mode = <0>; /* two-wires */
		};

		mt6358regulator: mt6358regulator {
			compatible = "mediatek,mt6358-regulator";

			mt6358_vdram1_reg: 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>;
			};

			mt6358_vcore_reg: buck_vcore {
				regulator-name = "vcore";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <200>;
				regulator-always-on;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vpa_reg: buck_vpa {
				regulator-name = "vpa";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3650000>;
				regulator-ramp-delay = <50000>;
				regulator-enable-ramp-delay = <250>;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vproc11_reg: buck_vproc11 {
				regulator-name = "vproc11";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <200>;
				regulator-always-on;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vproc12_reg: buck_vproc12 {
				regulator-name = "vproc12";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <200>;
				regulator-always-on;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vgpu_reg: buck_vgpu {
				regulator-name = "vgpu";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <200>;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vs2_reg: buck_vs2 {
				regulator-name = "vs2";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <2087500>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6358_vmodem_reg: buck_vmodem {
				regulator-name = "vmodem";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <900>;
				regulator-always-on;
				regulator-allowed-modes = <0 1>;
			};

			mt6358_vs1_reg: buck_vs1 {
				regulator-name = "vs1";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <2587500>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <0>;
				regulator-always-on;
			};

			mt6358_vdram2_reg: ldo_vdram2 {
				regulator-name = "vdram2";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <3300>;
			};

			mt6358_vsim1_reg: ldo_vsim1 {
				regulator-name = "vsim1";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <3100000>;
				regulator-enable-ramp-delay = <540>;
			};

			mt6358_vibr_reg: ldo_vibr {
				regulator-name = "vibr";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <60>;
			};

			mt6358_vrf12_reg: ldo_vrf12 {
				compatible = "regulator-fixed";
				regulator-name = "vrf12";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-enable-ramp-delay = <120>;
			};

			mt6358_vio18_reg: ldo_vio18 {
				compatible = "regulator-fixed";
				regulator-name = "vio18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <2700>;
				regulator-always-on;
			};

			mt6358_vusb_reg: ldo_vusb {
				regulator-name = "vusb";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3100000>;
				regulator-enable-ramp-delay = <270>;
				regulator-always-on;
			};

			mt6358_vcamio_reg: ldo_vcamio {
				compatible = "regulator-fixed";
				regulator-name = "vcamio";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <325>;
			};

			mt6358_vcamd_reg: ldo_vcamd {
				regulator-name = "vcamd";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <325>;
			};

			mt6358_vcn18_reg: ldo_vcn18 {
				compatible = "regulator-fixed";
				regulator-name = "vcn18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vfe28_reg: ldo_vfe28 {
				compatible = "regulator-fixed";
				regulator-name = "vfe28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vsram_proc11_reg: ldo_vsram_proc11 {
				regulator-name = "vsram_proc11";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <240>;
				regulator-always-on;
			};

			mt6358_vcn28_reg: ldo_vcn28 {
				compatible = "regulator-fixed";
				regulator-name = "vcn28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vsram_others_reg: ldo_vsram_others {
				regulator-name = "vsram_others";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <240>;
				regulator-always-on;
			};

			mt6358_vsram_gpu_reg: ldo_vsram_gpu {
				regulator-name = "vsram_gpu";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <240>;
			};

			mt6358_vxo22_reg: ldo_vxo22 {
				compatible = "regulator-fixed";
				regulator-name = "vxo22";
				regulator-min-microvolt = <2200000>;
				regulator-max-microvolt = <2200000>;
				regulator-enable-ramp-delay = <120>;
				regulator-always-on;
			};

			mt6358_vefuse_reg: ldo_vefuse {
				regulator-name = "vefuse";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <1900000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vaux18_reg: ldo_vaux18 {
				compatible = "regulator-fixed";
				regulator-name = "vaux18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vmch_reg: ldo_vmch {
				regulator-name = "vmch";
				regulator-min-microvolt = <2900000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <60>;
			};

			mt6358_vbif28_reg: ldo_vbif28 {
				compatible = "regulator-fixed";
				regulator-name = "vbif28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vsram_proc12_reg: ldo_vsram_proc12 {
				regulator-name = "vsram_proc12";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1293750>;
				regulator-ramp-delay = <6250>;
				regulator-enable-ramp-delay = <240>;
				regulator-always-on;
			};

			mt6358_vcama1_reg: ldo_vcama1 {
				regulator-name = "vcama1";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <325>;
			};

			mt6358_vemc_reg: ldo_vemc {
				regulator-name = "vemc";
				regulator-min-microvolt = <2900000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <60>;
			};

			mt6358_vio28_reg: ldo_vio28 {
				compatible = "regulator-fixed";
				regulator-name = "vio28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_va12_reg: ldo_va12 {
				compatible = "regulator-fixed";
				regulator-name = "va12";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-enable-ramp-delay = <270>;
				regulator-always-on;
			};

			mt6358_vrf18_reg: ldo_vrf18 {
				compatible = "regulator-fixed";
				regulator-name = "vrf18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <120>;
			};

			mt6358_vcn33_bt_reg: ldo_vcn33_bt {
				regulator-name = "vcn33_bt";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3500000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vcn33_wifi_reg: ldo_vcn33_wifi {
				regulator-name = "vcn33_wifi";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3500000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vcama2_reg: ldo_vcama2 {
				regulator-name = "vcama2";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <325>;
			};

			mt6358_vmc_reg: ldo_vmc {
				regulator-name = "vmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <60>;
			};

			mt6358_vldo28_reg: ldo_vldo28 {
				regulator-name = "vldo28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vaud28_reg: ldo_vaud28 {
				compatible = "regulator-fixed";
				regulator-name = "vaud28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <270>;
			};

			mt6358_vsim2_reg: ldo_vsim2 {
				regulator-name = "vsim2";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <3100000>;
				regulator-enable-ramp-delay = <540>;
			};
		};

		mt6358rtc: rtc {
			compatible = "mediatek,mt6358-rtc";
		};

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