code:
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (c) 2018 MediaTek Inc.
 * Author: Ben Ho <ben.ho@mediatek.com>
 *	   Erin Lo <erin.lo@mediatek.com>
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "mt8183.dtsi"
#include "mt6358.dtsi"

/ {
	aliases {
		serial0 = &uart0;
		mmc0 = &mmc0;
		mmc1 = &mmc1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	backlight_lcd0: backlight_lcd0 {
		compatible = "pwm-backlight";
		pwms = <&pwm0 0 500000>;
		power-supply = <&bl_pp5000>;
		enable-gpios = <&pio 176 0>;
		brightness-levels = <0 1023>;
		num-interpolated-steps = <1023>;
		default-brightness-level = <576>;
		status = "okay";
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x80000000>;
	};

	clk32k: oscillator1 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <32768>;
		clock-output-names = "clk32k";
	};

	it6505_pp18_reg: regulator0 {
		compatible = "regulator-fixed";
		regulator-name = "it6505_pp18";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&pio 178 0>;
		enable-active-high;
	};

	lcd_pp3300: regulator1 {
		compatible = "regulator-fixed";
		regulator-name = "lcd_pp3300";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
	};

	bl_pp5000: regulator2 {
		compatible = "regulator-fixed";
		regulator-name = "bl_pp5000";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
		regulator-boot-on;
	};

	mmc1_fixed_power: regulator3 {
		compatible = "regulator-fixed";
		regulator-name = "mmc1_power";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	mmc1_fixed_io: regulator4 {
		compatible = "regulator-fixed";
		regulator-name = "mmc1_io";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	pp1800_alw: regulator5 {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_alw";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	pp3300_alw: regulator6 {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_alw";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	reserved_memory: reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		scp_mem_reserved: scp_mem_region {
			compatible = "shared-dma-pool";
			reg = <0 0x50000000 0 0x2900000>;
			no-map;
		};
	};

	sound: mt8183-sound {
		mediatek,platform = <&afe>;
		pinctrl-names = "default",
				"aud_tdm_out_on",
				"aud_tdm_out_off";
		pinctrl-0 = <&aud_pins_default>;
		pinctrl-1 = <&aud_pins_tdm_out_on>;
		pinctrl-2 = <&aud_pins_tdm_out_off>;
		status = "okay";
	};

	btsco: bt-sco {
		compatible = "linux,bt-sco";
	};

	wifi_pwrseq: wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_pins_pwrseq>;

		/* Toggle WIFI_ENABLE to reset the chip. */
		reset-gpios = <&pio 119 1>;
	};

	wifi_wakeup: wifi-wakeup {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_pins_wakeup>;

		button-wowlan {
			label = "Wake on WiFi";
			gpios = <&pio 113 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_WAKEUP>;
			wakeup-source;
		};
	};

	tboard_thermistor1: thermal-sensor1 {
		compatible = "generic-adc-thermal";
		#thermal-sensor-cells = <0>;
		io-channels = <&auxadc 0>;
		io-channel-names = "sensor-channel";
		temperature-lookup-table = <    (-5000) 1553
						0 1488
						5000 1412
						10000 1326
						15000 1232
						20000 1132
						25000 1029
						30000 925
						35000 823
						40000 726
						45000 635
						50000 552
						55000 478
						60000 411
						65000 353
						70000 303
						75000 260
						80000 222
						85000 190
						90000 163
						95000 140
						100000 121
						105000 104
						110000 90
						115000 78
						120000 67
						125000 59>;
	};

	tboard_thermistor2: thermal-sensor2 {
		compatible = "generic-adc-thermal";
		#thermal-sensor-cells = <0>;
		io-channels = <&auxadc 1>;
		io-channel-names = "sensor-channel";
		temperature-lookup-table = <    (-5000) 1553
						0 1488
						5000 1412
						10000 1326
						15000 1232
						20000 1132
						25000 1029
						30000 925
						35000 823
						40000 726
						45000 635
						50000 552
						55000 478
						60000 411
						65000 353
						70000 303
						75000 260
						80000 222
						85000 190
						90000 163
						95000 140
						100000 121
						105000 104
						110000 90
						115000 78
						120000 67
						125000 59>;
	};
};

&auxadc {
	status = "okay";
};

&cci {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu0 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu1 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu2 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu3 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu4 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu5 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu6 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu7 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&dsi0 {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;
	panel: panel@0 {
		/* compatible will be set in board dts */
		reg = <0>;
		enable-gpios = <&pio 45 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&panel_pins_default>;
		avdd-supply = <&ppvarn_lcd>;
		avee-supply = <&ppvarp_lcd>;
		pp1800-supply = <&pp1800_lcd>;
		backlight = <&backlight_lcd0>;
		rotation = <270>;
		port {
			panel_in: endpoint {
				remote-endpoint = <&dsi_out>;
			};
		};
	};

	ports {
		port {
			dsi_out: endpoint {
				remote-endpoint = <&panel_in>;
			};
		};
	};
};

&gpu {
	mali-supply = <&mt6358_vgpu_reg>;
	sram-supply = <&mt6358_vsram_gpu_reg>;
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";
	clock-frequency = <400000>;
	#address-cells = <1>;
	#size-cells = <0>;
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c3_pins>;
	status = "okay";
	clock-frequency = <100000>;
	#address-cells = <1>;
	#size-cells = <0>;
};

&i2c5 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c5_pins>;
	status = "okay";
	clock-frequency = <100000>;
	#address-cells = <1>;
	#size-cells = <0>;
};

&i2c6 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c6_pins>;
	status = "okay";
	clock-frequency = <100000>;
};

&mipi_tx0 {
	status = "okay";
};

&mmc0 {
	status = "okay";
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc0_pins_default>;
	pinctrl-1 = <&mmc0_pins_uhs>;
	bus-width = <8>;
	max-frequency = <200000000>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	cap-mmc-hw-reset;
	no-sdio;
	no-sd;
	hs400-ds-delay = <0x12814>;
	vmmc-supply = <&mt6358_vemc_reg>;
	vqmmc-supply = <&mt6358_vio18_reg>;
	assigned-clocks = <&topckgen CLK_TOP_MUX_MSDC50_0>;
	assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_CK>;
	non-removable;
};

&mmc1 {
	status = "okay";
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc1_pins_default>;
	pinctrl-1 = <&mmc1_pins_uhs>;
	vmmc-supply = <&mmc1_fixed_power>;
	vqmmc-supply = <&mmc1_fixed_io>;
	mmc-pwrseq = <&wifi_pwrseq>;
	bus-width = <4>;
	max-frequency = <200000000>;
	cap-sd-highspeed;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	keep-power-in-suspend;
	wakeup-source;
	cap-sdio-irq;
	non-removable;
	no-mmc;
	no-sd;
	assigned-clocks = <&topckgen CLK_TOP_MUX_MSDC30_1>;
	assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
	#address-cells = <1>;
	#size-cells = <0>;

	qca_wifi: qca-wifi@1 {
		compatible = "qcom,ath10k";
		reg = <1>;
	};
};

&mt6358_vdram2_reg {
	regulator-always-on;
};

&mt6358codec {
	Avdd-supply = <&mt6358_vaud28_reg>;
};

&mt6358_vsim1_reg {
	regulator-min-microvolt = <2700000>;
	regulator-max-microvolt = <2700000>;
};

&mt6358_vsim2_reg {
	regulator-min-microvolt = <2700000>;
	regulator-max-microvolt = <2700000>;
};

&pio {
	aud_pins_default: audiopins {
		pins_bus {
			pinmux = <PINMUX_GPIO97__FUNC_I2S2_MCK>,
				<PINMUX_GPIO98__FUNC_I2S2_BCK>,
				<PINMUX_GPIO101__FUNC_I2S2_LRCK>,
				<PINMUX_GPIO102__FUNC_I2S2_DI>,
				<PINMUX_GPIO3__FUNC_I2S3_DO>, /*i2s to da7219/max98357*/
				<PINMUX_GPIO89__FUNC_I2S5_BCK>,
				<PINMUX_GPIO90__FUNC_I2S5_LRCK>,
				<PINMUX_GPIO91__FUNC_I2S5_DO>,
				<PINMUX_GPIO174__FUNC_I2S0_DI>, /*i2s to wifi/bt*/
				<PINMUX_GPIO136__FUNC_AUD_CLK_MOSI>,
				<PINMUX_GPIO137__FUNC_AUD_SYNC_MOSI>,
				<PINMUX_GPIO138__FUNC_AUD_DAT_MOSI0>,
				<PINMUX_GPIO139__FUNC_AUD_DAT_MOSI1>,
				<PINMUX_GPIO140__FUNC_AUD_CLK_MISO>,
				<PINMUX_GPIO141__FUNC_AUD_SYNC_MISO>,
				<PINMUX_GPIO142__FUNC_AUD_DAT_MISO0>,
				<PINMUX_GPIO143__FUNC_AUD_DAT_MISO1>; /*mtkaif3.0*/
		};
	};

	aud_pins_tdm_out_on: audiotdmouton {
		pins_bus {
			pinmux = <PINMUX_GPIO169__FUNC_TDM_BCK_2ND>,
				<PINMUX_GPIO170__FUNC_TDM_LRCK_2ND>,
				<PINMUX_GPIO171__FUNC_TDM_DATA0_2ND>,
				<PINMUX_GPIO172__FUNC_TDM_DATA1_2ND>,
				<PINMUX_GPIO173__FUNC_TDM_DATA2_2ND>,
				<PINMUX_GPIO10__FUNC_TDM_DATA3>; /*8ch-i2s to it6505*/
			drive-strength = <MTK_DRIVE_6mA>;
		};
	};

	aud_pins_tdm_out_off: audiotdmoutoff {
		pins_bus {
			pinmux = <PINMUX_GPIO169__FUNC_GPIO169>,
				<PINMUX_GPIO170__FUNC_GPIO170>,
				<PINMUX_GPIO171__FUNC_GPIO171>,
				<PINMUX_GPIO172__FUNC_GPIO172>,
				<PINMUX_GPIO173__FUNC_GPIO173>,
				<PINMUX_GPIO10__FUNC_GPIO10>;
			input-enable;
			bias-pull-down;
			drive-strength = <MTK_DRIVE_2mA>;
		};
	};

	bt_pins: bt-pins {
		pins_bt_en {
			pinmux = <PINMUX_GPIO120__FUNC_GPIO120>;
			output-low;
		};
	};

	ec_ap_int_odl: ec_ap_int_odl {
		pins1 {
			pinmux = <PINMUX_GPIO151__FUNC_GPIO151>;
			input-enable;
			bias-pull-up;
		};
	};

	h1_int_od_l: h1_int_od_l {
		pins1 {
			pinmux = <PINMUX_GPIO153__FUNC_GPIO153>;
			input-enable;
		};
	};

	i2c0_pins: i2c0 {
		pins_bus {
			pinmux = <PINMUX_GPIO82__FUNC_SDA0>,
				 <PINMUX_GPIO83__FUNC_SCL0>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c1_pins: i2c1 {
		pins_bus {
			pinmux = <PINMUX_GPIO81__FUNC_SDA1>,
				 <PINMUX_GPIO84__FUNC_SCL1>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c2_pins: i2c2 {
		pins_bus {
			pinmux = <PINMUX_GPIO103__FUNC_SCL2>,
				 <PINMUX_GPIO104__FUNC_SDA2>;
			bias-disable;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c3_pins: i2c3 {
		pins_bus {
			pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
				 <PINMUX_GPIO51__FUNC_SDA3>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c4_pins: i2c4 {
		pins_bus {
			pinmux = <PINMUX_GPIO105__FUNC_SCL4>,
				 <PINMUX_GPIO106__FUNC_SDA4>;
			bias-disable;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c5_pins: i2c5 {
		pins_bus {
			pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
				 <PINMUX_GPIO49__FUNC_SDA5>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c6_pins: i2c6 {
		pins_bus {
			pinmux = <PINMUX_GPIO11__FUNC_SCL6>,
				 <PINMUX_GPIO12__FUNC_SDA6>;
			bias-disable;
		};
	};

	mmc0_pins_default: mmc0-pins-default {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO132__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO126__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO129__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO127__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO130__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO122__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_rst {
			pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <01>;
		};
	};

	mmc0_pins_uhs: mmc0-pins-uhs {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO132__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO126__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO129__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO127__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO130__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO122__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_ds {
			pinmux = <PINMUX_GPIO131__FUNC_MSDC0_DSL>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_rst {
			pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};
	};

	mmc1_pins_default: mmc1-pins-default {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
				 <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO33__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO30__FUNC_MSDC1_DAT3>;
			input-enable;
			mediatek,pull-up-adv = <10>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
			input-enable;
			mediatek,pull-down-adv = <10>;
		};
	};

	mmc1_pins_uhs: mmc1-pins-uhs {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
				 <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO33__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO30__FUNC_MSDC1_DAT3>;
			drive-strength = <MTK_DRIVE_6mA>;
			input-enable;
			mediatek,pull-up-adv = <10>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
			drive-strength = <MTK_DRIVE_8mA>;
			mediatek,pull-down-adv = <10>;
			input-enable;
		};
	};

	panel_pins_default: panel_pins_default {
		panel_reset {
			pinmux = <PINMUX_GPIO45__FUNC_GPIO45>;
			output-low;
			bias-pull-up;
		};
	};

	pwm0_pin_default: pwm0_pin_default {
		pins1 {
			pinmux = <PINMUX_GPIO176__FUNC_GPIO176>;
			output-high;
			bias-pull-up;
		};
		pins2 {
			pinmux = <PINMUX_GPIO43__FUNC_DISP_PWM>;
		};
	};

	scp_pins: scp {
		pins_scp_uart {
			pinmux = <PINMUX_GPIO110__FUNC_TP_URXD1_AO>,
				 <PINMUX_GPIO112__FUNC_TP_UTXD1_AO>;
		};
	};

	spi0_pins: spi0 {
		pins_spi{
			pinmux = <PINMUX_GPIO85__FUNC_SPI0_MI>,
				 <PINMUX_GPIO86__FUNC_GPIO86>,
				 <PINMUX_GPIO87__FUNC_SPI0_MO>,
				 <PINMUX_GPIO88__FUNC_SPI0_CLK>;
			bias-disable;
		};
	};

	spi1_pins: spi1 {
		pins_spi{
			pinmux = <PINMUX_GPIO161__FUNC_SPI1_A_MI>,
				 <PINMUX_GPIO162__FUNC_SPI1_A_CSB>,
				 <PINMUX_GPIO163__FUNC_SPI1_A_MO>,
				 <PINMUX_GPIO164__FUNC_SPI1_A_CLK>;
			bias-disable;
		};
	};

	spi2_pins: spi2 {
		pins_spi{
			pinmux = <PINMUX_GPIO0__FUNC_SPI2_CSB>,
				 <PINMUX_GPIO1__FUNC_SPI2_MO>,
				 <PINMUX_GPIO2__FUNC_SPI2_CLK>;
			bias-disable;
		};
		pins_spi_mi {
			pinmux = <PINMUX_GPIO94__FUNC_SPI2_MI>;
			mediatek,pull-down-adv = <00>;
		};
	};

	spi3_pins: spi3 {
		pins_spi{
			pinmux = <PINMUX_GPIO21__FUNC_SPI3_MI>,
				 <PINMUX_GPIO22__FUNC_SPI3_CSB>,
				 <PINMUX_GPIO23__FUNC_SPI3_MO>,
				 <PINMUX_GPIO24__FUNC_SPI3_CLK>;
			bias-disable;
		};
	};

	spi4_pins: spi4 {
		pins_spi{
			pinmux = <PINMUX_GPIO17__FUNC_SPI4_MI>,
				 <PINMUX_GPIO18__FUNC_SPI4_CSB>,
				 <PINMUX_GPIO19__FUNC_SPI4_MO>,
				 <PINMUX_GPIO20__FUNC_SPI4_CLK>;
			bias-disable;
		};
	};

	spi5_pins: spi5 {
		pins_spi{
			pinmux = <PINMUX_GPIO13__FUNC_SPI5_MI>,
				 <PINMUX_GPIO14__FUNC_SPI5_CSB>,
				 <PINMUX_GPIO15__FUNC_SPI5_MO>,
				 <PINMUX_GPIO16__FUNC_SPI5_CLK>;
			bias-disable;
		};
	};

	uart0_pins_default: uart0-pins-default {
		pins_rx {
			pinmux = <PINMUX_GPIO95__FUNC_URXD0>;
			input-enable;
			bias-pull-up;
		};
		pins_tx {
			pinmux = <PINMUX_GPIO96__FUNC_UTXD0>;
		};
	};

	uart1_pins_default: uart1-pins-default {
		pins_rx {
			pinmux = <PINMUX_GPIO121__FUNC_URXD1>;
			input-enable;
			bias-pull-up;
		};
		pins_tx {
			pinmux = <PINMUX_GPIO115__FUNC_UTXD1>;
		};
		pins_rts {
			pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
			output-enable;
		};
		pins_cts {
			pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
			input-enable;
		};
	};

	uart1_pins_sleep: uart1-pins-sleep {
		pins_rx {
			pinmux = <PINMUX_GPIO121__FUNC_GPIO121>;
			input-enable;
			bias-pull-up;
		};
		pins_tx {
			pinmux = <PINMUX_GPIO115__FUNC_UTXD1>;
		};
		pins_rts {
			pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
			output-enable;
		};
		pins_cts {
			pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
			input-enable;
		};
	};

	wifi_pins_pwrseq: wifi-pins-pwrseq {
		pins_wifi_enable {
			pinmux = <PINMUX_GPIO119__FUNC_GPIO119>;
			output-low;
		};
	};

	wifi_pins_wakeup: wifi-pins-wakeup {
		pins_wifi_wakeup {
			pinmux = <PINMUX_GPIO113__FUNC_GPIO113>;
			input-enable;
		};
	};
};

&pwm0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pwm0_pin_default>;
};

&scp {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&scp_pins>;

	cros_ec {
		compatible = "google,cros-ec-rpmsg";
		mediatek,rpmsg-name = "cros-ec-rpmsg";
	};
};

&mfg_async {
	domain-supply = <&mt6358_vsram_gpu_reg>;
};

&mfg {
	domain-supply = <&mt6358_vgpu_reg>;
};

&soc_data {
	status = "okay";
};

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins>;
	mediatek,pad-select = <0>;
	status = "okay";
	cs-gpios = <&pio 86 GPIO_ACTIVE_LOW>;

	cr50@0 {
		compatible = "google,cr50";
		reg = <0>;
		spi-max-frequency = <1000000>;
		pinctrl-names = "default";
		pinctrl-0 = <&h1_int_od_l>;
		interrupt-parent = <&pio>;
		interrupts = <153 IRQ_TYPE_EDGE_RISING>;
	};
};

&spi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi1_pins>;
	mediatek,pad-select = <0>;
	status = "okay";

	w25q64dw: flash@0 {
		compatible = "winbond,w25q64dw", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <25000000>;
	};
};

&spi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi2_pins>;
	mediatek,pad-select = <0>;
	status = "okay";

	cros_ec: cros-ec@0 {
		compatible = "google,cros-ec-spi";
		reg = <0>;
		spi-max-frequency = <3000000>;
		interrupt-parent = <&pio>;
		interrupts = <151 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&ec_ap_int_odl>;

		i2c_tunnel: i2c-tunnel {
			compatible = "google,cros-ec-i2c-tunnel";
			google,remote-bus = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		usbc_extcon: extcon0 {
			compatible = "google,extcon-usbc-cros-ec";
			google,usb-port-id = <0>;
		};

		cbas {
			compatible = "google,cros-cbas";
		};

		typec {
			compatible = "google,cros-ec-typec";
			#address-cells = <1>;
			#size-cells = <0>;

			usb_c0: connector@0 {
				compatible = "usb-c-connector";
				reg = <0>;
				power-role = "dual";
				data-role = "host";
				try-power-role = "sink";
			};
		};
	};
};

&spi3 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi3_pins>;
	mediatek,pad-select = <0>;
	status = "disabled";
};

&spi4 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi4_pins>;
	mediatek,pad-select = <0>;
	status = "disabled";
};

&spi5 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi5_pins>;
	mediatek,pad-select = <0>;
	status = "disabled";
};

&ssusb {
	dr_mode = "host";
	wakeup-source;
	vusb33-supply = <&mt6358_vusb_reg>;
	status = "okay";
};

&thermal_zones {
	tboard1 {
		polling-delay = <1000>; /* milliseconds */
		polling-delay-passive = <0>; /* milliseconds */
		thermal-sensors = <&tboard_thermistor1>;
	};

	tboard2 {
		polling-delay = <1000>; /* milliseconds */
		polling-delay-passive = <0>; /* milliseconds */
		thermal-sensors = <&tboard_thermistor2>;
	};
};

&u3phy {
	status = "okay";
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins_default>;
	status = "okay";
};

&uart1 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&uart1_pins_default>;
	pinctrl-1 = <&uart1_pins_sleep>;
	status = "okay";
	interrupts-extended = <&sysirq GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>,
			      <&pio 121 IRQ_TYPE_EDGE_FALLING>;

	bluetooth: bluetooth {
		pinctrl-names = "default";
		pinctrl-0 = <&bt_pins>;
		status = "okay";
		compatible = "qcom,qca6174-bt";
		enable-gpios = <&pio 120 0>;
		clocks = <&clk32k>;
		firmware-name = "nvm_00440302_i2s.bin";
	};
};

&usb_host {
	#address-cells = <1>;
	#size-cells = <0>;
	vusb33-supply = <&mt6358_vusb_reg>;
	status = "okay";

	hub@1 {
		compatible = "usb5e3,610";
		reg = <1>;
	};
};

#include <arm/cros-ec-keyboard.dtsi>
#include <arm/cros-ec-sbs.dtsi>


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2021 BayLibre, SAS.
 * Author: Fabien Parent <fparent@baylibre.com>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "mt8183.dtsi"
#include "mt6358.dtsi"

/ {
	model = "Pumpkin MT8183";
	compatible = "mediatek,mt8183-pumpkin", "mediatek,mt8183";

	aliases {
		serial0 = &uart0;
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x80000000>;
	};

	chosen {
		stdout-path = "serial0:921600n8";
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		scp_mem_reserved: scp_mem_region@50000000 {
			compatible = "shared-dma-pool";
			reg = <0 0x50000000 0 0x2900000>;
			no-map;
		};
	};

	leds {
		compatible = "gpio-leds";

		led-red {
			label = "red";
			gpios = <&pio 155 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led-green {
			label = "green";
			gpios = <&pio 156 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	thermistor {
		compatible = "murata,ncp03wf104";
		pullup-uv = <1800000>;
		pullup-ohm = <390000>;
		pulldown-ohm = <0>;
		io-channels = <&auxadc 0>;
	};
};

&auxadc {
	status = "okay";
};

&gpu {
	mali-supply = <&mt6358_vgpu_reg>;
	sram-supply = <&mt6358_vsram_gpu_reg>;
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_0>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_1>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_2>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_3>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c4 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_4>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c5 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins_5>;
	status = "okay";
	clock-frequency = <100000>;
};

&i2c6 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c6_pins>;
	status = "okay";
	clock-frequency = <100000>;
};

&keyboard {
	pinctrl-names = "default";
	pinctrl-0 = <&keyboard_pins>;
	status = "okay";
	linux,keymap = <MATRIX_KEY(0x00, 0x00, KEY_VOLUMEDOWN)
			MATRIX_KEY(0x01, 0x00, KEY_VOLUMEUP)>;
	keypad,num-rows = <2>;
	keypad,num-columns = <1>;
	debounce-delay-ms = <32>;
	mediatek,keys-per-group = <2>;
};

&mmc0 {
	status = "okay";
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc0_pins_default>;
	pinctrl-1 = <&mmc0_pins_uhs>;
	bus-width = <8>;
	max-frequency = <200000000>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	cap-mmc-hw-reset;
	no-sdio;
	no-sd;
	hs400-ds-delay = <0x12814>;
	vmmc-supply = <&mt6358_vemc_reg>;
	vqmmc-supply = <&mt6358_vio18_reg>;
	assigned-clocks = <&topckgen CLK_TOP_MUX_MSDC50_0>;
	assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_CK>;
	non-removable;
};

&mmc1 {
	status = "okay";
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc1_pins_default>;
	pinctrl-1 = <&mmc1_pins_uhs>;
	bus-width = <4>;
	max-frequency = <200000000>;
	cap-sd-highspeed;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	cap-sdio-irq;
	no-mmc;
	no-sd;
	vmmc-supply = <&mt6358_vmch_reg>;
	vqmmc-supply = <&mt6358_vmc_reg>;
	keep-power-in-suspend;
	wakeup-source;
	non-removable;
};

&pio {
	i2c_pins_0: i2c0 {
		pins_i2c{
			pinmux = <PINMUX_GPIO82__FUNC_SDA0>,
				 <PINMUX_GPIO83__FUNC_SCL0>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c_pins_1: i2c1 {
		pins_i2c{
			pinmux = <PINMUX_GPIO81__FUNC_SDA1>,
				 <PINMUX_GPIO84__FUNC_SCL1>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c_pins_2: i2c2 {
		pins_i2c{
			pinmux = <PINMUX_GPIO103__FUNC_SCL2>,
				 <PINMUX_GPIO104__FUNC_SDA2>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c_pins_3: i2c3 {
		pins_i2c{
			pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
				 <PINMUX_GPIO51__FUNC_SDA3>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c_pins_4: i2c4 {
		pins_i2c{
			pinmux = <PINMUX_GPIO105__FUNC_SCL4>,
				 <PINMUX_GPIO106__FUNC_SDA4>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c_pins_5: i2c5 {
		pins_i2c{
			pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
				 <PINMUX_GPIO49__FUNC_SDA5>;
			mediatek,pull-up-adv = <3>;
			mediatek,drive-strength-adv = <00>;
		};
	};

	i2c6_pins: i2c6 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO113__FUNC_SCL6>,
				 <PINMUX_GPIO114__FUNC_SDA6>;
			mediatek,pull-up-adv = <3>;
		};
	};

	keyboard_pins: keyboard {
		pins_keyboard {
			pinmux = <PINMUX_GPIO91__FUNC_KPROW1>,
				 <PINMUX_GPIO92__FUNC_KPROW0>,
				 <PINMUX_GPIO93__FUNC_KPCOL0>;
		};
	};

	mmc0_pins_default: mmc0-pins-default {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO132__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO126__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO129__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO127__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO130__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO122__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_rst {
			pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <01>;
		};
	};

	mmc0_pins_uhs: mmc0-pins-uhs {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO132__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO126__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO129__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO127__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO130__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO122__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_ds {
			pinmux = <PINMUX_GPIO131__FUNC_MSDC0_DSL>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-down-adv = <10>;
		};

		pins_rst {
			pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
			drive-strength = <MTK_DRIVE_14mA>;
			mediatek,pull-up-adv = <01>;
		};
	};

	mmc1_pins_default: mmc1-pins-default {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
				 <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO33__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO30__FUNC_MSDC1_DAT3>;
			input-enable;
			mediatek,pull-up-adv = <10>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
			input-enable;
			mediatek,pull-down-adv = <10>;
		};

		pins_pmu {
			pinmux = <PINMUX_GPIO178__FUNC_GPIO178>;
			output-high;
		};
	};

	mmc1_pins_uhs: mmc1-pins-uhs {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
				 <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO33__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO30__FUNC_MSDC1_DAT3>;
			drive-strength = <MTK_DRIVE_6mA>;
			input-enable;
			mediatek,pull-up-adv = <10>;
		};

		pins_clk {
			pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
			drive-strength = <MTK_DRIVE_8mA>;
			mediatek,pull-down-adv = <10>;
			input-enable;
		};
	};
};

&mfg {
	domain-supply = <&mt6358_vgpu_reg>;
};

&cpu0 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu1 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu2 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu3 {
	proc-supply = <&mt6358_vproc12_reg>;
};

&cpu4 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu5 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu6 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&cpu7 {
	proc-supply = <&mt6358_vproc11_reg>;
};

&uart0 {
	status = "okay";
};

&scp {
	status = "okay";
};

&dsi0 {
	status = "disabled";
};

repo_name: angery/linux


code:
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (c) 2018 MediaTek Inc.
 * Author: Ben Ho <ben.ho@mediatek.com>
 *	   Erin Lo <erin.lo@mediatek.com>
 */

#include <dt-bindings/clock/mt8183-clk.h>
#include <dt-bindings/gce/mt8183-gce.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/memory/mt8183-larb-port.h>
#include <dt-bindings/power/mt8183-power.h>
#include <dt-bindings/reset/mt8183-resets.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/pinctrl/mt8183-pinfunc.h>

/ {
	compatible = "mediatek,mt8183";
	interrupt-parent = <&sysirq>;
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c5 = &i2c5;
		i2c6 = &i2c6;
		i2c7 = &i2c7;
		i2c8 = &i2c8;
		i2c9 = &i2c9;
		i2c10 = &i2c10;
		i2c11 = &i2c11;
		ovl0 = &ovl0;
		ovl-2l0 = &ovl_2l0;
		ovl-2l1 = &ovl_2l1;
		rdma0 = &rdma0;
		rdma1 = &rdma1;
	};

	cluster0_opp: opp-table-cluster0 {
		compatible = "operating-points-v2";
		opp-shared;
		opp0-793000000 {
			opp-hz = /bits/ 64 <793000000>;
			opp-microvolt = <650000>;
			required-opps = <&opp2_00>;
		};
		opp0-910000000 {
			opp-hz = /bits/ 64 <910000000>;
			opp-microvolt = <687500>;
			required-opps = <&opp2_01>;
		};
		opp0-1014000000 {
			opp-hz = /bits/ 64 <1014000000>;
			opp-microvolt = <718750>;
			required-opps = <&opp2_02>;
		};
		opp0-1131000000 {
			opp-hz = /bits/ 64 <1131000000>;
			opp-microvolt = <756250>;
			required-opps = <&opp2_03>;
		};
		opp0-1248000000 {
			opp-hz = /bits/ 64 <1248000000>;
			opp-microvolt = <800000>;
			required-opps = <&opp2_04>;
		};
		opp0-1326000000 {
			opp-hz = /bits/ 64 <1326000000>;
			opp-microvolt = <818750>;
			required-opps = <&opp2_05>;
		};
		opp0-1417000000 {
			opp-hz = /bits/ 64 <1417000000>;
			opp-microvolt = <850000>;
			required-opps = <&opp2_06>;
		};
		opp0-1508000000 {
			opp-hz = /bits/ 64 <1508000000>;
			opp-microvolt = <868750>;
			required-opps = <&opp2_07>;
		};
		opp0-1586000000 {
			opp-hz = /bits/ 64 <1586000000>;
			opp-microvolt = <893750>;
			required-opps = <&opp2_08>;
		};
		opp0-1625000000 {
			opp-hz = /bits/ 64 <1625000000>;
			opp-microvolt = <906250>;
			required-opps = <&opp2_09>;
		};
		opp0-1677000000 {
			opp-hz = /bits/ 64 <1677000000>;
			opp-microvolt = <931250>;
			required-opps = <&opp2_10>;
		};
		opp0-1716000000 {
			opp-hz = /bits/ 64 <1716000000>;
			opp-microvolt = <943750>;
			required-opps = <&opp2_11>;
		};
		opp0-1781000000 {
			opp-hz = /bits/ 64 <1781000000>;
			opp-microvolt = <975000>;
			required-opps = <&opp2_12>;
		};
		opp0-1846000000 {
			opp-hz = /bits/ 64 <1846000000>;
			opp-microvolt = <1000000>;
			required-opps = <&opp2_13>;
		};
		opp0-1924000000 {
			opp-hz = /bits/ 64 <1924000000>;
			opp-microvolt = <1025000>;
			required-opps = <&opp2_14>;
		};
		opp0-1989000000 {
			opp-hz = /bits/ 64 <1989000000>;
			opp-microvolt = <1050000>;
			required-opps = <&opp2_15>;
		};	};

	cluster1_opp: opp-table-cluster1 {
		compatible = "operating-points-v2";
		opp-shared;
		opp1-793000000 {
			opp-hz = /bits/ 64 <793000000>;
			opp-microvolt = <700000>;
			required-opps = <&opp2_00>;
		};
		opp1-910000000 {
			opp-hz = /bits/ 64 <910000000>;
			opp-microvolt = <725000>;
			required-opps = <&opp2_01>;
		};
		opp1-1014000000 {
			opp-hz = /bits/ 64 <1014000000>;
			opp-microvolt = <750000>;
			required-opps = <&opp2_02>;
		};
		opp1-1131000000 {
			opp-hz = /bits/ 64 <1131000000>;
			opp-microvolt = <775000>;
			required-opps = <&opp2_03>;
		};
		opp1-1248000000 {
			opp-hz = /bits/ 64 <1248000000>;
			opp-microvolt = <800000>;
			required-opps = <&opp2_04>;
		};
		opp1-1326000000 {
			opp-hz = /bits/ 64 <1326000000>;
			opp-microvolt = <825000>;
			required-opps = <&opp2_05>;
		};
		opp1-1417000000 {
			opp-hz = /bits/ 64 <1417000000>;
			opp-microvolt = <850000>;
			required-opps = <&opp2_06>;
		};
		opp1-1508000000 {
			opp-hz = /bits/ 64 <1508000000>;
			opp-microvolt = <875000>;
			required-opps = <&opp2_07>;
		};
		opp1-1586000000 {
			opp-hz = /bits/ 64 <1586000000>;
			opp-microvolt = <900000>;
			required-opps = <&opp2_08>;
		};
		opp1-1625000000 {
			opp-hz = /bits/ 64 <1625000000>;
			opp-microvolt = <912500>;
			required-opps = <&opp2_09>;
		};
		opp1-1677000000 {
			opp-hz = /bits/ 64 <1677000000>;
			opp-microvolt = <931250>;
			required-opps = <&opp2_10>;
		};
		opp1-1716000000 {
			opp-hz = /bits/ 64 <1716000000>;
			opp-microvolt = <950000>;
			required-opps = <&opp2_11>;
		};
		opp1-1781000000 {
			opp-hz = /bits/ 64 <1781000000>;
			opp-microvolt = <975000>;
			required-opps = <&opp2_12>;
		};
		opp1-1846000000 {
			opp-hz = /bits/ 64 <1846000000>;
			opp-microvolt = <1000000>;
			required-opps = <&opp2_13>;
		};
		opp1-1924000000 {
			opp-hz = /bits/ 64 <1924000000>;
			opp-microvolt = <1025000>;
			required-opps = <&opp2_14>;
		};
		opp1-1989000000 {
			opp-hz = /bits/ 64 <1989000000>;
			opp-microvolt = <1050000>;
			required-opps = <&opp2_15>;
		};
	};

	cci_opp: opp-table-cci {
		compatible = "operating-points-v2";
		opp-shared;
		opp2_00: opp-273000000 {
			opp-hz = /bits/ 64 <273000000>;
			opp-microvolt = <650000>;
		};
		opp2_01: opp-338000000 {
			opp-hz = /bits/ 64 <338000000>;
			opp-microvolt = <687500>;
		};
		opp2_02: opp-403000000 {
			opp-hz = /bits/ 64 <403000000>;
			opp-microvolt = <718750>;
		};
		opp2_03: opp-463000000 {
			opp-hz = /bits/ 64 <463000000>;
			opp-microvolt = <756250>;
		};
		opp2_04: opp-546000000 {
			opp-hz = /bits/ 64 <546000000>;
			opp-microvolt = <800000>;
		};
		opp2_05: opp-624000000 {
			opp-hz = /bits/ 64 <624000000>;
			opp-microvolt = <818750>;
		};
		opp2_06: opp-689000000 {
			opp-hz = /bits/ 64 <689000000>;
			opp-microvolt = <850000>;
		};
		opp2_07: opp-767000000 {
			opp-hz = /bits/ 64 <767000000>;
			opp-microvolt = <868750>;
		};
		opp2_08: opp-845000000 {
			opp-hz = /bits/ 64 <845000000>;
			opp-microvolt = <893750>;
		};
		opp2_09: opp-871000000 {
			opp-hz = /bits/ 64 <871000000>;
			opp-microvolt = <906250>;
		};
		opp2_10: opp-923000000 {
			opp-hz = /bits/ 64 <923000000>;
			opp-microvolt = <931250>;
		};
		opp2_11: opp-962000000 {
			opp-hz = /bits/ 64 <962000000>;
			opp-microvolt = <943750>;
		};
		opp2_12: opp-1027000000 {
			opp-hz = /bits/ 64 <1027000000>;
			opp-microvolt = <975000>;
		};
		opp2_13: opp-1092000000 {
			opp-hz = /bits/ 64 <1092000000>;
			opp-microvolt = <1000000>;
		};
		opp2_14: opp-1144000000 {
			opp-hz = /bits/ 64 <1144000000>;
			opp-microvolt = <1025000>;
		};
		opp2_15: opp-1196000000 {
			opp-hz = /bits/ 64 <1196000000>;
			opp-microvolt = <1050000>;
		};
	};

	cci: cci {
		compatible = "mediatek,mt8183-cci";
		clocks = <&mcucfg CLK_MCU_BUS_SEL>,
			 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
		clock-names = "cci", "intermediate";
		operating-points-v2 = <&cci_opp>;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&cpu0>;
				};
				core1 {
					cpu = <&cpu1>;
				};
				core2 {
					cpu = <&cpu2>;
				};
				core3 {
					cpu = <&cpu3>;
				};
			};

			cluster1 {
				core0 {
					cpu = <&cpu4>;
				};
				core1 {
					cpu = <&cpu5>;
				};
				core2 {
					cpu = <&cpu6>;
				};
				core3 {
					cpu = <&cpu7>;
				};
			};
		};

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x000>;
			enable-method = "psci";
			capacity-dmips-mhz = <741>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP0>;
			clocks = <&mcucfg CLK_MCU_MP0_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster0_opp>;
			dynamic-power-coefficient = <84>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu1: cpu@1 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x001>;
			enable-method = "psci";
			capacity-dmips-mhz = <741>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP0>;
			clocks = <&mcucfg CLK_MCU_MP0_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster0_opp>;
			dynamic-power-coefficient = <84>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu2: cpu@2 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x002>;
			enable-method = "psci";
			capacity-dmips-mhz = <741>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP0>;
			clocks = <&mcucfg CLK_MCU_MP0_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster0_opp>;
			dynamic-power-coefficient = <84>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu3: cpu@3 {
			device_type = "cpu";
			compatible = "arm,cortex-a53";
			reg = <0x003>;
			enable-method = "psci";
			capacity-dmips-mhz = <741>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP0>;
			clocks = <&mcucfg CLK_MCU_MP0_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster0_opp>;
			dynamic-power-coefficient = <84>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu4: cpu@100 {
			device_type = "cpu";
			compatible = "arm,cortex-a73";
			reg = <0x100>;
			enable-method = "psci";
			capacity-dmips-mhz = <1024>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP1>;
			clocks = <&mcucfg CLK_MCU_MP2_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster1_opp>;
			dynamic-power-coefficient = <211>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu5: cpu@101 {
			device_type = "cpu";
			compatible = "arm,cortex-a73";
			reg = <0x101>;
			enable-method = "psci";
			capacity-dmips-mhz = <1024>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP1>;
			clocks = <&mcucfg CLK_MCU_MP2_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster1_opp>;
			dynamic-power-coefficient = <211>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu6: cpu@102 {
			device_type = "cpu";
			compatible = "arm,cortex-a73";
			reg = <0x102>;
			enable-method = "psci";
			capacity-dmips-mhz = <1024>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP1>;
			clocks = <&mcucfg CLK_MCU_MP2_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster1_opp>;
			dynamic-power-coefficient = <211>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		cpu7: cpu@103 {
			device_type = "cpu";
			compatible = "arm,cortex-a73";
			reg = <0x103>;
			enable-method = "psci";
			capacity-dmips-mhz = <1024>;
			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP1>;
			clocks = <&mcucfg CLK_MCU_MP2_SEL>,
				 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
			clock-names = "cpu", "intermediate";
			operating-points-v2 = <&cluster1_opp>;
			dynamic-power-coefficient = <211>;
			#cooling-cells = <2>;
			mediatek,cci = <&cci>;
		};

		idle-states {
			entry-method = "psci";

			CPU_SLEEP: cpu-sleep {
				compatible = "arm,idle-state";
				local-timer-stop;
				arm,psci-suspend-param = <0x00010001>;
				entry-latency-us = <200>;
				exit-latency-us = <200>;
				min-residency-us = <800>;
			};

			CLUSTER_SLEEP0: cluster-sleep-0 {
				compatible = "arm,idle-state";
				local-timer-stop;
				arm,psci-suspend-param = <0x01010001>;
				entry-latency-us = <250>;
				exit-latency-us = <400>;
				min-residency-us = <1000>;
			};
			CLUSTER_SLEEP1: cluster-sleep-1 {
				compatible = "arm,idle-state";
				local-timer-stop;
				arm,psci-suspend-param = <0x01010001>;
				entry-latency-us = <250>;
				exit-latency-us = <400>;
				min-residency-us = <1300>;
			};
		};
	};

	gpu_opp_table: opp-table-0 {
		compatible = "operating-points-v2";
		opp-shared;

		opp-300000000 {
			opp-hz = /bits/ 64 <300000000>;
			opp-microvolt = <625000>, <850000>;
		};

		opp-320000000 {
			opp-hz = /bits/ 64 <320000000>;
			opp-microvolt = <631250>, <850000>;
		};

		opp-340000000 {
			opp-hz = /bits/ 64 <340000000>;
			opp-microvolt = <637500>, <850000>;
		};

		opp-360000000 {
			opp-hz = /bits/ 64 <360000000>;
			opp-microvolt = <643750>, <850000>;
		};

		opp-380000000 {
			opp-hz = /bits/ 64 <380000000>;
			opp-microvolt = <650000>, <850000>;
		};

		opp-400000000 {
			opp-hz = /bits/ 64 <400000000>;
			opp-microvolt = <656250>, <850000>;
		};

		opp-420000000 {
			opp-hz = /bits/ 64 <420000000>;
			opp-microvolt = <662500>, <850000>;
		};

		opp-460000000 {
			opp-hz = /bits/ 64 <460000000>;
			opp-microvolt = <675000>, <850000>;
		};

		opp-500000000 {
			opp-hz = /bits/ 64 <500000000>;
			opp-microvolt = <687500>, <850000>;
		};

		opp-540000000 {
			opp-hz = /bits/ 64 <540000000>;
			opp-microvolt = <700000>, <850000>;
		};

		opp-580000000 {
			opp-hz = /bits/ 64 <580000000>;
			opp-microvolt = <712500>, <850000>;
		};

		opp-620000000 {
			opp-hz = /bits/ 64 <620000000>;
			opp-microvolt = <725000>, <850000>;
		};

		opp-653000000 {
			opp-hz = /bits/ 64 <653000000>;
			opp-microvolt = <743750>, <850000>;
		};

		opp-698000000 {
			opp-hz = /bits/ 64 <698000000>;
			opp-microvolt = <768750>, <868750>;
		};

		opp-743000000 {
			opp-hz = /bits/ 64 <743000000>;
			opp-microvolt = <793750>, <893750>;
		};

		opp-800000000 {
			opp-hz = /bits/ 64 <800000000>;
			opp-microvolt = <825000>, <925000>;
		};
	};

	pmu-a53 {
		compatible = "arm,cortex-a53-pmu";
		interrupt-parent = <&gic>;
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster0>;
	};

	pmu-a73 {
		compatible = "arm,cortex-a73-pmu";
		interrupt-parent = <&gic>;
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster1>;
	};

	psci {
		compatible = "arm,psci-1.0";
		method = "smc";
	};

	clk26m: oscillator {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <26000000>;
		clock-output-names = "clk26m";
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupt-parent = <&gic>;
		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
	};

	soc {
		#address-cells = <2>;
		#size-cells = <2>;
		compatible = "simple-bus";
		ranges;

		soc_data: efuse@8000000 {
			compatible = "mediatek,mt8183-efuse",
				     "mediatek,efuse";
			reg = <0 0x08000000 0 0x0010>;
			#address-cells = <1>;
			#size-cells = <1>;
			status = "disabled";
		};

		gic: interrupt-controller@c000000 {
			compatible = "arm,gic-v3";
			#interrupt-cells = <4>;
			interrupt-parent = <&gic>;
			interrupt-controller;
			reg = <0 0x0c000000 0 0x40000>,  /* GICD */
			      <0 0x0c100000 0 0x200000>, /* GICR */
			      <0 0x0c400000 0 0x2000>,   /* GICC */
			      <0 0x0c410000 0 0x1000>,   /* GICH */
			      <0 0x0c420000 0 0x2000>;   /* GICV */

			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
			ppi-partitions {
				ppi_cluster0: interrupt-partition-0 {
					affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
				};
				ppi_cluster1: interrupt-partition-1 {
					affinity = <&cpu4 &cpu5 &cpu6 &cpu7>;
				};
			};
		};

		mcucfg: syscon@c530000 {
			compatible = "mediatek,mt8183-mcucfg", "syscon";
			reg = <0 0x0c530000 0 0x1000>;
			#clock-cells = <1>;
		};

		sysirq: interrupt-controller@c530a80 {
			compatible = "mediatek,mt8183-sysirq",
				     "mediatek,mt6577-sysirq";
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupt-parent = <&gic>;
			reg = <0 0x0c530a80 0 0x50>;
		};

		cpu_debug0: cpu-debug@d410000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd410000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu0>;
		};

		cpu_debug1: cpu-debug@d510000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd510000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu1>;
		};

		cpu_debug2: cpu-debug@d610000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd610000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu2>;
		};

		cpu_debug3: cpu-debug@d710000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd710000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu3>;
		};

		cpu_debug4: cpu-debug@d810000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd810000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu4>;
		};

		cpu_debug5: cpu-debug@d910000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xd910000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu5>;
		};

		cpu_debug6: cpu-debug@da10000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xda10000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu6>;
		};

		cpu_debug7: cpu-debug@db10000 {
			compatible = "arm,coresight-cpu-debug", "arm,primecell";
			reg = <0x0 0xdb10000 0x0 0x1000>;
			clocks = <&infracfg CLK_INFRA_DEBUGSYS>;
			clock-names = "apb_pclk";
			cpu = <&cpu7>;
		};

		topckgen: syscon@10000000 {
			compatible = "mediatek,mt8183-topckgen", "syscon";
			reg = <0 0x10000000 0 0x1000>;
			#clock-cells = <1>;
		};

		infracfg: syscon@10001000 {
			compatible = "mediatek,mt8183-infracfg", "syscon";
			reg = <0 0x10001000 0 0x1000>;
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		pericfg: syscon@10003000 {
			compatible = "mediatek,mt8183-pericfg", "syscon";
			reg = <0 0x10003000 0 0x1000>;
			#clock-cells = <1>;
		};

		pio: pinctrl@10005000 {
			compatible = "mediatek,mt8183-pinctrl";
			reg = <0 0x10005000 0 0x1000>,
			      <0 0x11f20000 0 0x1000>,
			      <0 0x11e80000 0 0x1000>,
			      <0 0x11e70000 0 0x1000>,
			      <0 0x11e90000 0 0x1000>,
			      <0 0x11d30000 0 0x1000>,
			      <0 0x11d20000 0 0x1000>,
			      <0 0x11c50000 0 0x1000>,
			      <0 0x11f30000 0 0x1000>,
			      <0 0x1000b000 0 0x1000>;
			reg-names = "iocfg0", "iocfg1", "iocfg2",
				    "iocfg3", "iocfg4", "iocfg5",
				    "iocfg6", "iocfg7", "iocfg8",
				    "eint";
			gpio-controller;
			#gpio-cells = <2>;
			gpio-ranges = <&pio 0 0 192>;
			interrupt-controller;
			interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
			#interrupt-cells = <2>;
		};

		scpsys: syscon@10006000 {
			compatible = "mediatek,mt8183-scpsys", "syscon", "simple-mfd";
			reg = <0 0x10006000 0 0x1000>;

			/* System Power Manager */
			spm: power-controller {
				compatible = "mediatek,mt8183-power-controller";
				#address-cells = <1>;
				#size-cells = <0>;
				#power-domain-cells = <1>;

				/* power domain of the SoC */
				power-domain@MT8183_POWER_DOMAIN_AUDIO {
					reg = <MT8183_POWER_DOMAIN_AUDIO>;
					clocks = <&topckgen CLK_TOP_MUX_AUD_INTBUS>,
						 <&infracfg CLK_INFRA_AUDIO>,
						 <&infracfg CLK_INFRA_AUDIO_26M_BCLK>;
					clock-names = "audio", "audio1", "audio2";
					#power-domain-cells = <0>;
				};

				power-domain@MT8183_POWER_DOMAIN_CONN {
					reg = <MT8183_POWER_DOMAIN_CONN>;
					mediatek,infracfg = <&infracfg>;
					#power-domain-cells = <0>;
				};

				mfg_async: power-domain@MT8183_POWER_DOMAIN_MFG_ASYNC {
					reg = <MT8183_POWER_DOMAIN_MFG_ASYNC>;
					clocks = <&topckgen CLK_TOP_MUX_MFG>;
					clock-names = "mfg";
					#address-cells = <1>;
					#size-cells = <0>;
					#power-domain-cells = <1>;

					mfg: power-domain@MT8183_POWER_DOMAIN_MFG {
						reg = <MT8183_POWER_DOMAIN_MFG>;
						#address-cells = <1>;
						#size-cells = <0>;
						#power-domain-cells = <1>;

						power-domain@MT8183_POWER_DOMAIN_MFG_CORE0 {
							reg = <MT8183_POWER_DOMAIN_MFG_CORE0>;
							#power-domain-cells = <0>;
						};

						power-domain@MT8183_POWER_DOMAIN_MFG_CORE1 {
							reg = <MT8183_POWER_DOMAIN_MFG_CORE1>;
							#power-domain-cells = <0>;
						};

						power-domain@MT8183_POWER_DOMAIN_MFG_2D {
							reg = <MT8183_POWER_DOMAIN_MFG_2D>;
							mediatek,infracfg = <&infracfg>;
							#power-domain-cells = <0>;
						};
					};
				};

				power-domain@MT8183_POWER_DOMAIN_DISP {
					reg = <MT8183_POWER_DOMAIN_DISP>;
					clocks = <&topckgen CLK_TOP_MUX_MM>,
						 <&mmsys CLK_MM_SMI_COMMON>,
						 <&mmsys CLK_MM_SMI_LARB0>,
						 <&mmsys CLK_MM_SMI_LARB1>,
						 <&mmsys CLK_MM_GALS_COMM0>,
						 <&mmsys CLK_MM_GALS_COMM1>,
						 <&mmsys CLK_MM_GALS_CCU2MM>,
						 <&mmsys CLK_MM_GALS_IPU12MM>,
						 <&mmsys CLK_MM_GALS_IMG2MM>,
						 <&mmsys CLK_MM_GALS_CAM2MM>,
						 <&mmsys CLK_MM_GALS_IPU2MM>;
					clock-names = "mm", "mm-0", "mm-1", "mm-2", "mm-3",
						      "mm-4", "mm-5", "mm-6", "mm-7",
						      "mm-8", "mm-9";
					mediatek,infracfg = <&infracfg>;
					mediatek,smi = <&smi_common>;
					#address-cells = <1>;
					#size-cells = <0>;
					#power-domain-cells = <1>;

					power-domain@MT8183_POWER_DOMAIN_CAM {
						reg = <MT8183_POWER_DOMAIN_CAM>;
						clocks = <&topckgen CLK_TOP_MUX_CAM>,
							 <&camsys CLK_CAM_LARB6>,
							 <&camsys CLK_CAM_LARB3>,
							 <&camsys CLK_CAM_SENINF>,
							 <&camsys CLK_CAM_CAMSV0>,
							 <&camsys CLK_CAM_CAMSV1>,
							 <&camsys CLK_CAM_CAMSV2>,
							 <&camsys CLK_CAM_CCU>;
						clock-names = "cam", "cam-0", "cam-1",
							      "cam-2", "cam-3", "cam-4",
							      "cam-5", "cam-6";
						mediatek,infracfg = <&infracfg>;
						mediatek,smi = <&smi_common>;
						#power-domain-cells = <0>;
					};

					power-domain@MT8183_POWER_DOMAIN_ISP {
						reg = <MT8183_POWER_DOMAIN_ISP>;
						clocks = <&topckgen CLK_TOP_MUX_IMG>,
							 <&imgsys CLK_IMG_LARB5>,
							 <&imgsys CLK_IMG_LARB2>;
						clock-names = "isp", "isp-0", "isp-1";
						mediatek,infracfg = <&infracfg>;
						mediatek,smi = <&smi_common>;
						#power-domain-cells = <0>;
					};

					power-domain@MT8183_POWER_DOMAIN_VDEC {
						reg = <MT8183_POWER_DOMAIN_VDEC>;
						mediatek,smi = <&smi_common>;
						#power-domain-cells = <0>;
					};

					power-domain@MT8183_POWER_DOMAIN_VENC {
						reg = <MT8183_POWER_DOMAIN_VENC>;
						mediatek,smi = <&smi_common>;
						#power-domain-cells = <0>;
					};

					power-domain@MT8183_POWER_DOMAIN_VPU_TOP {
						reg = <MT8183_POWER_DOMAIN_VPU_TOP>;
						clocks = <&topckgen CLK_TOP_MUX_IPU_IF>,
							 <&topckgen CLK_TOP_MUX_DSP>,
							 <&ipu_conn CLK_IPU_CONN_IPU>,
							 <&ipu_conn CLK_IPU_CONN_AHB>,
							 <&ipu_conn CLK_IPU_CONN_AXI>,
							 <&ipu_conn CLK_IPU_CONN_ISP>,
							 <&ipu_conn CLK_IPU_CONN_CAM_ADL>,
							 <&ipu_conn CLK_IPU_CONN_IMG_ADL>;
						clock-names = "vpu", "vpu1", "vpu-0", "vpu-1",
							      "vpu-2", "vpu-3", "vpu-4", "vpu-5";
						mediatek,infracfg = <&infracfg>;
						mediatek,smi = <&smi_common>;
						#address-cells = <1>;
						#size-cells = <0>;
						#power-domain-cells = <1>;

						power-domain@MT8183_POWER_DOMAIN_VPU_CORE0 {
							reg = <MT8183_POWER_DOMAIN_VPU_CORE0>;
							clocks = <&topckgen CLK_TOP_MUX_DSP1>;
							clock-names = "vpu2";
							mediatek,infracfg = <&infracfg>;
							#power-domain-cells = <0>;
						};

						power-domain@MT8183_POWER_DOMAIN_VPU_CORE1 {
							reg = <MT8183_POWER_DOMAIN_VPU_CORE1>;
							clocks = <&topckgen CLK_TOP_MUX_DSP2>;
							clock-names = "vpu3";
							mediatek,infracfg = <&infracfg>;
							#power-domain-cells = <0>;
						};
					};
				};
			};
		};

		watchdog: watchdog@10007000 {
			compatible = "mediatek,mt8183-wdt";
			reg = <0 0x10007000 0 0x100>;
			#reset-cells = <1>;
		};

		apmixedsys: syscon@1000c000 {
			compatible = "mediatek,mt8183-apmixedsys", "syscon";
			reg = <0 0x1000c000 0 0x1000>;
			#clock-cells = <1>;
		};

		pwrap: pwrap@1000d000 {
			compatible = "mediatek,mt8183-pwrap";
			reg = <0 0x1000d000 0 0x1000>;
			reg-names = "pwrap";
			interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&topckgen CLK_TOP_MUX_PMICSPI>,
				 <&infracfg CLK_INFRA_PMIC_AP>;
			clock-names = "spi", "wrap";
		};

		keyboard: keyboard@10010000 {
			compatible = "mediatek,mt6779-keypad";
			reg = <0 0x10010000 0 0x1000>;
			interrupts = <GIC_SPI 186 IRQ_TYPE_EDGE_FALLING>;
			clocks = <&clk26m>;
			clock-names = "kpd";
			status = "disabled";
		};

		scp: scp@10500000 {
			compatible = "mediatek,mt8183-scp";
			reg = <0 0x10500000 0 0x80000>,
			      <0 0x105c0000 0 0x19080>;
			reg-names = "sram", "cfg";
			interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&infracfg CLK_INFRA_SCPSYS>;
			clock-names = "main";
			memory-region = <&scp_mem_reserved>;
			status = "disabled";
		};

		systimer: timer@10017000 {
			compatible = "mediatek,mt8183-timer",
				     "mediatek,mt6765-timer";
			reg = <0 0x10017000 0 0x1000>;
			interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&topckgen CLK_TOP_CLK13M>;
			clock-names = "clk13m";
		};

		iommu: iommu@10205000 {
			compatible = "mediatek,mt8183-m4u";
			reg = <0 0x10205000 0 0x1000>;
			interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_LOW>;
			mediatek,larbs = <&larb0>, <&larb1>, <&larb2>, <&larb3>,
					 <&larb4>, <&larb5>, <&larb6>;
			#iommu-cells = <1>;
		};

		gce: mailbox@10238000 {
			compatible = "mediatek,mt8183-gce";
			reg = <0 0x10238000 0 0x4000>;
			interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_LOW>;
			#mbox-cells = <2>;
			clocks = <&infracfg CLK_INFRA_GCE>;
			clock-names = "gce";
		};

		auxadc: auxadc@11001000 {
			compatible = "mediatek,mt8183-auxadc",
				     "mediatek,mt8173-auxadc";
			reg = <0 0x11001000 0 0x1000>;
			clocks = <&infracfg CLK_INFRA_AUXADC>;
			clock-names = "main";
			#io-channel-cells = <1>;
			status = "disabled";
		};

		uart0: serial@11002000 {
			compatible = "mediatek,mt8183-uart",
				     "mediatek,mt6577-uart";
			reg = <0 0x11002000 0 0x1000>;
			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&clk26m>, <&infracfg CLK_INFRA_UART0>;
			clock-names = "baud", "bus";
			status = "disabled";
		};

		uart1: serial@11003000 {
			compatible = "mediatek,mt8183-uart",
				     "mediatek,mt6577-uart";
			reg = <0 0x11003000 0 0x1000>;
			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&clk26m>, <&infracfg CLK_INFRA_UART1>;
			clock-names = "baud", "bus";
			status = "disabled";
		};

		uart2: serial@11004000 {
			compatible = "mediatek,mt8183-uart",
				     "mediatek,mt6577-uart";
			reg = <0 0x11004000 0 0x1000>;
			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&clk26m>, <&infracfg CLK_INFRA_UART2>;
			clock-names = "baud", "bus";
			status = "disabled";
		};

		i2c6: i2c@11005000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11005000 0 0x1000>,
			      <0 0x11000600 0 0x80>;
			interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C6>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c0: i2c@11007000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11007000 0 0x1000>,
			      <0 0x11000080 0 0x80>;
			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C0>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c4: i2c@11008000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11008000 0 0x1000>,
			      <0 0x11000100 0 0x80>;
			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C1>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C1_ARBITER>;
			clock-names = "main", "dma","arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c2: i2c@11009000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11009000 0 0x1000>,
			      <0 0x11000280 0 0x80>;
			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C2>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C2_ARBITER>;
			clock-names = "main", "dma", "arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi0: spi@1100a000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x1100a000 0 0x1000>;
			interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI0>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		svs: svs@1100b000 {
			compatible = "mediatek,mt8183-svs";
			reg = <0 0x1100b000 0 0x1000>;
			interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_THERM>;
			clock-names = "main";
			nvmem-cells = <&svs_calibration>,
				      <&thermal_calibration>;
			nvmem-cell-names = "svs-calibration-data",
					   "t-calibration-data";
		};

		thermal: thermal@1100b000 {
			#thermal-sensor-cells = <1>;
			compatible = "mediatek,mt8183-thermal";
			reg = <0 0x1100b000 0 0x1000>;
			clocks = <&infracfg CLK_INFRA_THERM>,
				 <&infracfg CLK_INFRA_AUXADC>;
			clock-names = "therm", "auxadc";
			resets = <&infracfg  MT8183_INFRACFG_AO_THERM_SW_RST>;
			interrupts = <0 76 IRQ_TYPE_LEVEL_LOW>;
			mediatek,auxadc = <&auxadc>;
			mediatek,apmixedsys = <&apmixedsys>;
			nvmem-cells = <&thermal_calibration>;
			nvmem-cell-names = "calibration-data";
		};

		thermal_zones: thermal-zones {
			cpu_thermal: cpu-thermal {
				polling-delay-passive = <100>;
				polling-delay = <500>;
				thermal-sensors = <&thermal 0>;
				sustainable-power = <5000>;

				trips {
					threshold: trip-point0 {
						temperature = <68000>;
						hysteresis = <2000>;
						type = "passive";
					};

					target: trip-point1 {
						temperature = <80000>;
						hysteresis = <2000>;
						type = "passive";
					};

					cpu_crit: cpu-crit {
						temperature = <115000>;
						hysteresis = <2000>;
						type = "critical";
					};
				};

				cooling-maps {
					map0 {
						trip = <&target>;
						cooling-device = <&cpu0
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu1
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu2
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu3
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>;
						contribution = <3072>;
					};
					map1 {
						trip = <&target>;
						cooling-device = <&cpu4
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu5
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu6
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>,
								 <&cpu7
							THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>;
						contribution = <1024>;
					};
				};
			};

			/* The tzts1 ~ tzts6 don't need to polling */
			/* The tzts1 ~ tzts6 don't need to thermal throttle */

			tzts1: tzts1 {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 1>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};

			tzts2: tzts2 {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 2>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};

			tzts3: tzts3 {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 3>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};

			tzts4: tzts4 {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 4>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};

			tzts5: tzts5 {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 5>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};

			tztsABB: tztsABB {
				polling-delay-passive = <0>;
				polling-delay = <0>;
				thermal-sensors = <&thermal 6>;
				sustainable-power = <5000>;
				trips {};
				cooling-maps {};
			};
		};

		pwm0: pwm@1100e000 {
			compatible = "mediatek,mt8183-disp-pwm";
			reg = <0 0x1100e000 0 0x1000>;
			interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			#pwm-cells = <2>;
			clocks = <&topckgen CLK_TOP_MUX_DISP_PWM>,
					<&infracfg CLK_INFRA_DISP_PWM>;
			clock-names = "main", "mm";
		};

		pwm1: pwm@11006000 {
			compatible = "mediatek,mt8183-pwm";
			reg = <0 0x11006000 0 0x1000>;
			#pwm-cells = <2>;
			clocks = <&infracfg CLK_INFRA_PWM>,
				 <&infracfg CLK_INFRA_PWM_HCLK>,
				 <&infracfg CLK_INFRA_PWM1>,
				 <&infracfg CLK_INFRA_PWM2>,
				 <&infracfg CLK_INFRA_PWM3>,
				 <&infracfg CLK_INFRA_PWM4>;
			clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
				      "pwm4";
		};

		i2c3: i2c@1100f000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x1100f000 0 0x1000>,
			      <0 0x11000400 0 0x80>;
			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C3>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi1: spi@11010000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x11010000 0 0x1000>;
			interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI1>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		i2c1: i2c@11011000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11011000 0 0x1000>,
			      <0 0x11000480 0 0x80>;
			interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C4>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi2: spi@11012000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x11012000 0 0x1000>;
			interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI2>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		spi3: spi@11013000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x11013000 0 0x1000>;
			interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI3>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		i2c9: i2c@11014000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11014000 0 0x1000>,
			      <0 0x11000180 0 0x80>;
			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C1_IMM>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C1_ARBITER>;
			clock-names = "main", "dma", "arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c10: i2c@11015000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11015000 0 0x1000>,
			      <0 0x11000300 0 0x80>;
			interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C2_IMM>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C2_ARBITER>;
			clock-names = "main", "dma", "arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c5: i2c@11016000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11016000 0 0x1000>,
			      <0 0x11000500 0 0x80>;
			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C5>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C5_ARBITER>;
			clock-names = "main", "dma", "arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c11: i2c@11017000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x11017000 0 0x1000>,
			      <0 0x11000580 0 0x80>;
			interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C5_IMM>,
				 <&infracfg CLK_INFRA_AP_DMA>,
				 <&infracfg CLK_INFRA_I2C5_ARBITER>;
			clock-names = "main", "dma", "arb";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi4: spi@11018000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x11018000 0 0x1000>;
			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI4>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		spi5: spi@11019000 {
			compatible = "mediatek,mt8183-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0 0x11019000 0 0x1000>;
			interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_SYSPLL_D5_D2>,
				 <&topckgen CLK_TOP_MUX_SPI>,
				 <&infracfg CLK_INFRA_SPI5>;
			clock-names = "parent-clk", "sel-clk", "spi-clk";
			status = "disabled";
		};

		i2c7: i2c@1101a000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x1101a000 0 0x1000>,
			      <0 0x11000680 0 0x80>;
			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C7>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c8: i2c@1101b000 {
			compatible = "mediatek,mt8183-i2c";
			reg = <0 0x1101b000 0 0x1000>,
			      <0 0x11000700 0 0x80>;
			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&infracfg CLK_INFRA_I2C8>,
				 <&infracfg CLK_INFRA_AP_DMA>;
			clock-names = "main", "dma";
			clock-div = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		ssusb: usb@11201000 {
			compatible = "mediatek,mt8183-mtu3", "mediatek,mtu3";
			reg = <0 0x11201000 0 0x2e00>,
			      <0 0x11203e00 0 0x0100>;
			reg-names = "mac", "ippc";
			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_LOW>;
			phys = <&u2port0 PHY_TYPE_USB2>,
			       <&u3port0 PHY_TYPE_USB3>;
			clocks = <&infracfg CLK_INFRA_UNIPRO_SCK>,
				 <&infracfg CLK_INFRA_USB>;
			clock-names = "sys_ck", "ref_ck";
			mediatek,syscon-wakeup = <&pericfg 0x420 101>;
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;
			status = "disabled";

			usb_host: usb@11200000 {
				compatible = "mediatek,mt8183-xhci",
					     "mediatek,mtk-xhci";
				reg = <0 0x11200000 0 0x1000>;
				reg-names = "mac";
				interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_LOW>;
				clocks = <&infracfg CLK_INFRA_UNIPRO_SCK>,
					 <&infracfg CLK_INFRA_USB>;
				clock-names = "sys_ck", "ref_ck";
				status = "disabled";
			};
		};

		audiosys: audio-controller@11220000 {
			compatible = "mediatek,mt8183-audiosys", "syscon";
			reg = <0 0x11220000 0 0x1000>;
			#clock-cells = <1>;
			afe: mt8183-afe-pcm {
				compatible = "mediatek,mt8183-audio";
				interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_LOW>;
				resets = <&watchdog MT8183_TOPRGU_AUDIO_SW_RST>;
				reset-names = "audiosys";
				power-domains =
					<&spm MT8183_POWER_DOMAIN_AUDIO>;
				clocks = <&audiosys CLK_AUDIO_AFE>,
					 <&audiosys CLK_AUDIO_DAC>,
					 <&audiosys CLK_AUDIO_DAC_PREDIS>,
					 <&audiosys CLK_AUDIO_ADC>,
					 <&audiosys CLK_AUDIO_PDN_ADDA6_ADC>,
					 <&audiosys CLK_AUDIO_22M>,
					 <&audiosys CLK_AUDIO_24M>,
					 <&audiosys CLK_AUDIO_APLL_TUNER>,
					 <&audiosys CLK_AUDIO_APLL2_TUNER>,
					 <&audiosys CLK_AUDIO_I2S1>,
					 <&audiosys CLK_AUDIO_I2S2>,
					 <&audiosys CLK_AUDIO_I2S3>,
					 <&audiosys CLK_AUDIO_I2S4>,
					 <&audiosys CLK_AUDIO_TDM>,
					 <&audiosys CLK_AUDIO_TML>,
					 <&infracfg CLK_INFRA_AUDIO>,
					 <&infracfg CLK_INFRA_AUDIO_26M_BCLK>,
					 <&topckgen CLK_TOP_MUX_AUDIO>,
					 <&topckgen CLK_TOP_MUX_AUD_INTBUS>,
					 <&topckgen CLK_TOP_SYSPLL_D2_D4>,
					 <&topckgen CLK_TOP_MUX_AUD_1>,
					 <&topckgen CLK_TOP_APLL1_CK>,
					 <&topckgen CLK_TOP_MUX_AUD_2>,
					 <&topckgen CLK_TOP_APLL2_CK>,
					 <&topckgen CLK_TOP_MUX_AUD_ENG1>,
					 <&topckgen CLK_TOP_APLL1_D8>,
					 <&topckgen CLK_TOP_MUX_AUD_ENG2>,
					 <&topckgen CLK_TOP_APLL2_D8>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S0>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S1>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S2>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S3>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S4>,
					 <&topckgen CLK_TOP_MUX_APLL_I2S5>,
					 <&topckgen CLK_TOP_APLL12_DIV0>,
					 <&topckgen CLK_TOP_APLL12_DIV1>,
					 <&topckgen CLK_TOP_APLL12_DIV2>,
					 <&topckgen CLK_TOP_APLL12_DIV3>,
					 <&topckgen CLK_TOP_APLL12_DIV4>,
					 <&topckgen CLK_TOP_APLL12_DIVB>,
					 /*<&topckgen CLK_TOP_APLL12_DIV5>,*/
					 <&clk26m>;
				clock-names = "aud_afe_clk",
						  "aud_dac_clk",
						  "aud_dac_predis_clk",
						  "aud_adc_clk",
						  "aud_adc_adda6_clk",
						  "aud_apll22m_clk",
						  "aud_apll24m_clk",
						  "aud_apll1_tuner_clk",
						  "aud_apll2_tuner_clk",
						  "aud_i2s1_bclk_sw",
						  "aud_i2s2_bclk_sw",
						  "aud_i2s3_bclk_sw",
						  "aud_i2s4_bclk_sw",
						  "aud_tdm_clk",
						  "aud_tml_clk",
						  "aud_infra_clk",
						  "mtkaif_26m_clk",
						  "top_mux_audio",
						  "top_mux_aud_intbus",
						  "top_syspll_d2_d4",
						  "top_mux_aud_1",
						  "top_apll1_ck",
						  "top_mux_aud_2",
						  "top_apll2_ck",
						  "top_mux_aud_eng1",
						  "top_apll1_d8",
						  "top_mux_aud_eng2",
						  "top_apll2_d8",
						  "top_i2s0_m_sel",
						  "top_i2s1_m_sel",
						  "top_i2s2_m_sel",
						  "top_i2s3_m_sel",
						  "top_i2s4_m_sel",
						  "top_i2s5_m_sel",
						  "top_apll12_div0",
						  "top_apll12_div1",
						  "top_apll12_div2",
						  "top_apll12_div3",
						  "top_apll12_div4",
						  "top_apll12_divb",
						  /*"top_apll12_div5",*/
						  "top_clk26m_clk";
			};
		};

		mmc0: mmc@11230000 {
			compatible = "mediatek,mt8183-mmc";
			reg = <0 0x11230000 0 0x1000>,
			      <0 0x11f50000 0 0x1000>;
			interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_MUX_MSDC50_0>,
				 <&infracfg CLK_INFRA_MSDC0>,
				 <&infracfg CLK_INFRA_MSDC0_SCK>;
			clock-names = "source", "hclk", "source_cg";
			status = "disabled";
		};

		mmc1: mmc@11240000 {
			compatible = "mediatek,mt8183-mmc";
			reg = <0 0x11240000 0 0x1000>,
			      <0 0x11e10000 0 0x1000>;
			interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_LOW>;
			clocks = <&topckgen CLK_TOP_MUX_MSDC30_1>,
				 <&infracfg CLK_INFRA_MSDC1>,
				 <&infracfg CLK_INFRA_MSDC1_SCK>;
			clock-names = "source", "hclk", "source_cg";
			status = "disabled";
		};

		mipi_tx0: dsi-phy@11e50000 {
			compatible = "mediatek,mt8183-mipi-tx";
			reg = <0 0x11e50000 0 0x1000>;
			clocks = <&apmixedsys CLK_APMIXED_MIPID0_26M>;
			#clock-cells = <0>;
			#phy-cells = <0>;
			clock-output-names = "mipi_tx0_pll";
			nvmem-cells = <&mipi_tx_calibration>;
			nvmem-cell-names = "calibration-data";
		};

		efuse: efuse@11f10000 {
			compatible = "mediatek,mt8183-efuse",
				     "mediatek,efuse";
			reg = <0 0x11f10000 0 0x1000>;
			#address-cells = <1>;
			#size-cells = <1>;
			thermal_calibration: calib@180 {
				reg = <0x180 0xc>;
			};

			mipi_tx_calibration: calib@190 {
				reg = <0x190 0xc>;
			};

			svs_calibration: calib@580 {
				reg = <0x580 0x64>;
			};
		};

		u3phy: t-phy@11f40000 {
			compatible = "mediatek,mt8183-tphy",
				     "mediatek,generic-tphy-v2";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x11f40000 0x1000>;
			status = "okay";

			u2port0: usb-phy@0 {
				reg = <0x0 0x700>;
				clocks = <&clk26m>;
				clock-names = "ref";
				#phy-cells = <1>;
				mediatek,discth = <15>;
				status = "okay";
			};

			u3port0: usb-phy@700 {
				reg = <0x0700 0x900>;
				clocks = <&clk26m>;
				clock-names = "ref";
				#phy-cells = <1>;
				status = "okay";
			};
		};

		mfgcfg: syscon@13000000 {
			compatible = "mediatek,mt8183-mfgcfg", "syscon";
			reg = <0 0x13000000 0 0x1000>;
			#clock-cells = <1>;
		};

		gpu: gpu@13040000 {
			compatible = "mediatek,mt8183-mali", "arm,mali-bifrost";
			reg = <0 0x13040000 0 0x4000>;
			interrupts =
				<GIC_SPI 280 IRQ_TYPE_LEVEL_LOW>,
				<GIC_SPI 279 IRQ_TYPE_LEVEL_LOW>,
				<GIC_SPI 278 IRQ_TYPE_LEVEL_LOW>;
			interrupt-names = "job", "mmu", "gpu";

			clocks = <&topckgen CLK_TOP_MFGPLL_CK>;

			power-domains =
				<&spm MT8183_POWER_DOMAIN_MFG_CORE0>,
				<&spm MT8183_POWER_DOMAIN_MFG_CORE1>,
				<&spm MT8183_POWER_DOMAIN_MFG_2D>;
			power-domain-names = "core0", "core1", "core2";

			operating-points-v2 = <&gpu_opp_table>;
		};

		mmsys: syscon@14000000 {
			compatible = "mediatek,mt8183-mmsys", "syscon";
			reg = <0 0x14000000 0 0x1000>;
			#clock-cells = <1>;
			#reset-cells = <1>;
			mboxes = <&gce 0 CMDQ_THR_PRIO_HIGHEST>,
				 <&gce 1 CMDQ_THR_PRIO_HIGHEST>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0 0x1000>;
		};

		mdp3-rdma0@14001000 {
			compatible = "mediatek,mt8183-mdp3-rdma";
			reg = <0 0x14001000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x1000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_RDMA0_SOF>,
					      <CMDQ_EVENT_MDP_RDMA0_EOF>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_MDP_RDMA0>,
				 <&mmsys CLK_MM_MDP_RSZ1>;
			iommus = <&iommu M4U_PORT_MDP_RDMA0>;
			mboxes = <&gce 20 CMDQ_THR_PRIO_LOWEST 0>,
				 <&gce 21 CMDQ_THR_PRIO_LOWEST 0>;
		};

		mdp3-rsz0@14003000 {
			compatible = "mediatek,mt8183-mdp3-rsz";
			reg = <0 0x14003000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x3000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_RSZ0_SOF>,
					      <CMDQ_EVENT_MDP_RSZ0_EOF>;
			clocks = <&mmsys CLK_MM_MDP_RSZ0>;
		};

		mdp3-rsz1@14004000 {
			compatible = "mediatek,mt8183-mdp3-rsz";
			reg = <0 0x14004000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x4000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_RSZ1_SOF>,
					      <CMDQ_EVENT_MDP_RSZ1_EOF>;
			clocks = <&mmsys CLK_MM_MDP_RSZ1>;
		};

		mdp3-wrot0@14005000 {
			compatible = "mediatek,mt8183-mdp3-wrot";
			reg = <0 0x14005000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x5000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_WROT0_SOF>,
					      <CMDQ_EVENT_MDP_WROT0_EOF>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_MDP_WROT0>;
			iommus = <&iommu M4U_PORT_MDP_WROT0>;
		};

		mdp3-wdma@14006000 {
			compatible = "mediatek,mt8183-mdp3-wdma";
			reg = <0 0x14006000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x6000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_WDMA0_SOF>,
					      <CMDQ_EVENT_MDP_WDMA0_EOF>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_MDP_WDMA0>;
			iommus = <&iommu M4U_PORT_MDP_WDMA0>;
		};

		ovl0: ovl@14008000 {
			compatible = "mediatek,mt8183-disp-ovl";
			reg = <0 0x14008000 0 0x1000>;
			interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_OVL0>;
			iommus = <&iommu M4U_PORT_DISP_OVL0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x8000 0x1000>;
		};

		ovl_2l0: ovl@14009000 {
			compatible = "mediatek,mt8183-disp-ovl-2l";
			reg = <0 0x14009000 0 0x1000>;
			interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_OVL0_2L>;
			iommus = <&iommu M4U_PORT_DISP_2L_OVL0_LARB0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x9000 0x1000>;
		};

		ovl_2l1: ovl@1400a000 {
			compatible = "mediatek,mt8183-disp-ovl-2l";
			reg = <0 0x1400a000 0 0x1000>;
			interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_OVL1_2L>;
			iommus = <&iommu M4U_PORT_DISP_2L_OVL1_LARB0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xa000 0x1000>;
		};

		rdma0: rdma@1400b000 {
			compatible = "mediatek,mt8183-disp-rdma";
			reg = <0 0x1400b000 0 0x1000>;
			interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_RDMA0>;
			iommus = <&iommu M4U_PORT_DISP_RDMA0>;
			mediatek,rdma-fifo-size = <5120>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xb000 0x1000>;
		};

		rdma1: rdma@1400c000 {
			compatible = "mediatek,mt8183-disp-rdma";
			reg = <0 0x1400c000 0 0x1000>;
			interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_RDMA1>;
			iommus = <&iommu M4U_PORT_DISP_RDMA1>;
			mediatek,rdma-fifo-size = <2048>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xc000 0x1000>;
		};

		color0: color@1400e000 {
			compatible = "mediatek,mt8183-disp-color",
				     "mediatek,mt8173-disp-color";
			reg = <0 0x1400e000 0 0x1000>;
			interrupts = <GIC_SPI 231 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_COLOR0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xe000 0x1000>;
		};

		ccorr0: ccorr@1400f000 {
			compatible = "mediatek,mt8183-disp-ccorr";
			reg = <0 0x1400f000 0 0x1000>;
			interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_CCORR0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xf000 0x1000>;
		};

		aal0: aal@14010000 {
			compatible = "mediatek,mt8183-disp-aal";
			reg = <0 0x14010000 0 0x1000>;
			interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_AAL0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1401XXXX 0 0x1000>;
		};

		gamma0: gamma@14011000 {
			compatible = "mediatek,mt8183-disp-gamma";
			reg = <0 0x14011000 0 0x1000>;
			interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_GAMMA0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1401XXXX 0x1000 0x1000>;
		};

		dither0: dither@14012000 {
			compatible = "mediatek,mt8183-disp-dither";
			reg = <0 0x14012000 0 0x1000>;
			interrupts = <GIC_SPI 235 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DISP_DITHER0>;
			mediatek,gce-client-reg = <&gce SUBSYS_1401XXXX 0x2000 0x1000>;
		};

		dsi0: dsi@14014000 {
			compatible = "mediatek,mt8183-dsi";
			reg = <0 0x14014000 0 0x1000>;
			interrupts = <GIC_SPI 236 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clocks = <&mmsys CLK_MM_DSI0_MM>,
				 <&mmsys CLK_MM_DSI0_IF>,
				 <&mipi_tx0>;
			clock-names = "engine", "digital", "hs";
			resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>;
			phys = <&mipi_tx0>;
			phy-names = "dphy";
		};

		mutex: mutex@14016000 {
			compatible = "mediatek,mt8183-disp-mutex";
			reg = <0 0x14016000 0 0x1000>;
			interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_LOW>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			mediatek,gce-events = <CMDQ_EVENT_MUTEX_STREAM_DONE0>,
					      <CMDQ_EVENT_MUTEX_STREAM_DONE1>;
			mediatek,gce-client-reg = <&gce SUBSYS_1401XXXX 0x6000 0x1000>;
		};

		larb0: larb@14017000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x14017000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&mmsys CLK_MM_SMI_LARB0>,
				 <&mmsys CLK_MM_SMI_LARB0>;
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
			clock-names = "apb", "smi";
		};

		smi_common: smi@14019000 {
			compatible = "mediatek,mt8183-smi-common";
			reg = <0 0x14019000 0 0x1000>;
			clocks = <&mmsys CLK_MM_SMI_COMMON>,
				 <&mmsys CLK_MM_SMI_COMMON>,
				 <&mmsys CLK_MM_GALS_COMM0>,
				 <&mmsys CLK_MM_GALS_COMM1>;
			clock-names = "apb", "smi", "gals0", "gals1";
			power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
		};

		mdp3-ccorr@1401c000 {
			compatible = "mediatek,mt8183-mdp3-ccorr";
			reg = <0 0x1401c000 0 0x1000>;
			mediatek,gce-client-reg = <&gce SUBSYS_1401XXXX 0xc000 0x1000>;
			mediatek,gce-events = <CMDQ_EVENT_MDP_CCORR_SOF>,
					      <CMDQ_EVENT_MDP_CCORR_EOF>;
			clocks = <&mmsys CLK_MM_MDP_CCORR>;
		};

		imgsys: syscon@15020000 {
			compatible = "mediatek,mt8183-imgsys", "syscon";
			reg = <0 0x15020000 0 0x1000>;
			#clock-cells = <1>;
		};

		larb5: larb@15021000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x15021000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&imgsys CLK_IMG_LARB5>, <&imgsys CLK_IMG_LARB5>,
				 <&mmsys CLK_MM_GALS_IMG2MM>;
			clock-names = "apb", "smi", "gals";
			power-domains = <&spm MT8183_POWER_DOMAIN_ISP>;
		};

		larb2: larb@1502f000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x1502f000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&imgsys CLK_IMG_LARB2>, <&imgsys CLK_IMG_LARB2>,
				 <&mmsys CLK_MM_GALS_IPU2MM>;
			clock-names = "apb", "smi", "gals";
			power-domains = <&spm MT8183_POWER_DOMAIN_ISP>;
		};

		vdecsys: syscon@16000000 {
			compatible = "mediatek,mt8183-vdecsys", "syscon";
			reg = <0 0x16000000 0 0x1000>;
			#clock-cells = <1>;
		};

		larb1: larb@16010000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x16010000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&vdecsys CLK_VDEC_VDEC>, <&vdecsys CLK_VDEC_LARB1>;
			clock-names = "apb", "smi";
			power-domains = <&spm MT8183_POWER_DOMAIN_VDEC>;
		};

		vencsys: syscon@17000000 {
			compatible = "mediatek,mt8183-vencsys", "syscon";
			reg = <0 0x17000000 0 0x1000>;
			#clock-cells = <1>;
		};

		larb4: larb@17010000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x17010000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&vencsys CLK_VENC_LARB>,
				 <&vencsys CLK_VENC_LARB>;
			clock-names = "apb", "smi";
			power-domains = <&spm MT8183_POWER_DOMAIN_VENC>;
		};

		venc_jpg: venc_jpg@17030000 {
			compatible = "mediatek,mt8183-jpgenc", "mediatek,mtk-jpgenc";
			reg = <0 0x17030000 0 0x1000>;
			interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_LOW>;
			iommus = <&iommu M4U_PORT_JPGENC_RDMA>,
				 <&iommu M4U_PORT_JPGENC_BSDMA>;
			power-domains = <&spm MT8183_POWER_DOMAIN_VENC>;
			clocks = <&vencsys CLK_VENC_JPGENC>;
			clock-names = "jpgenc";
		};

		ipu_conn: syscon@19000000 {
			compatible = "mediatek,mt8183-ipu_conn", "syscon";
			reg = <0 0x19000000 0 0x1000>;
			#clock-cells = <1>;
		};

		ipu_adl: syscon@19010000 {
			compatible = "mediatek,mt8183-ipu_adl", "syscon";
			reg = <0 0x19010000 0 0x1000>;
			#clock-cells = <1>;
		};

		ipu_core0: syscon@19180000 {
			compatible = "mediatek,mt8183-ipu_core0", "syscon";
			reg = <0 0x19180000 0 0x1000>;
			#clock-cells = <1>;
		};

		ipu_core1: syscon@19280000 {
			compatible = "mediatek,mt8183-ipu_core1", "syscon";
			reg = <0 0x19280000 0 0x1000>;
			#clock-cells = <1>;
		};

		camsys: syscon@1a000000 {
			compatible = "mediatek,mt8183-camsys", "syscon";
			reg = <0 0x1a000000 0 0x1000>;
			#clock-cells = <1>;
		};

		larb6: larb@1a001000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x1a001000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&camsys CLK_CAM_LARB6>, <&camsys CLK_CAM_LARB6>,
				 <&mmsys CLK_MM_GALS_CAM2MM>;
			clock-names = "apb", "smi", "gals";
			power-domains = <&spm MT8183_POWER_DOMAIN_CAM>;
		};

		larb3: larb@1a002000 {
			compatible = "mediatek,mt8183-smi-larb";
			reg = <0 0x1a002000 0 0x1000>;
			mediatek,smi = <&smi_common>;
			clocks = <&camsys CLK_CAM_LARB3>, <&camsys CLK_CAM_LARB3>,
				 <&mmsys CLK_MM_GALS_IPU12MM>;
			clock-names = "apb", "smi", "gals";
			power-domains = <&spm MT8183_POWER_DOMAIN_CAM>;
		};
	};
};


code:
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * Copyright (C) 2022 MediaTek Inc.
 */
/dts-v1/;
#include "mt8186.dtsi"

/ {
	model = "MediaTek MT8186 evaluation board";
	compatible = "mediatek,mt8186-evb", "mediatek,mt8186";

	aliases {
		serial0 = &uart0;
	};

	chosen {
		stdout-path = "serial0:921600n8";
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x80000000>;
	};
};

&i2c0 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
};

&i2c1 {
	status = "okay";

	clock-frequency = <400000>;
	i2c-scl-internal-delay-ns = <8000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
};

&i2c2 {
	status = "okay";

	clock-frequency = <400000>;
	i2c-scl-internal-delay-ns = <10000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;
};

&i2c3 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c3_pins>;
};

&i2c4 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c4_pins>;
};

&i2c5 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c5_pins>;
};

&i2c6 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c6_pins>;
};

&i2c7 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c7_pins>;
};

&i2c8 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c8_pins>;
};

&i2c9 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c9_pins>;
};

&pio {
	i2c0_pins: i2c0-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO128__FUNC_SDA0>,
				 <PINMUX_GPIO127__FUNC_SCL0>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c1_pins: i2c1-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO130__FUNC_SDA1>,
				 <PINMUX_GPIO129__FUNC_SCL1>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c2_pins: i2c2-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO132__FUNC_SDA2>,
				 <PINMUX_GPIO131__FUNC_SCL2>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c3_pins: i2c3-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO134__FUNC_SDA3>,
				 <PINMUX_GPIO133__FUNC_SCL3>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c4_pins: i2c4-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO136__FUNC_SDA4>,
				 <PINMUX_GPIO135__FUNC_SCL4>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c5_pins: i2c5-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO138__FUNC_SDA5>,
				 <PINMUX_GPIO137__FUNC_SCL5>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c6_pins: i2c6-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO140__FUNC_SDA6>,
				 <PINMUX_GPIO139__FUNC_SCL6>;
			bias-pull-up = <MTK_PULL_SET_RSEL_001>;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c7_pins: i2c7-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO142__FUNC_SDA7>,
				 <PINMUX_GPIO141__FUNC_SCL7>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c8_pins: i2c8-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO144__FUNC_SDA8>,
				 <PINMUX_GPIO143__FUNC_SCL8>;
			bias-disable;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};

	i2c9_pins: i2c9-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO146__FUNC_SDA9>,
				 <PINMUX_GPIO145__FUNC_SCL9>;
			bias-pull-up = <MTK_PULL_SET_RSEL_001>;
			drive-strength-microamp = <1000>;
			input-enable;
		};
	};
};

&u3phy0 {
	status = "okay";
};

&u3phy1 {
	status = "okay";
};

&uart0 {
	status = "okay";
};