code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 based Universal C210 board device tree source
 *
 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Device tree source file for Samsung's Universal C210 board which is based on
 * Samsung's Exynos4210 rev0 SoC.
 */

/dts-v1/;
#include "exynos4210.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Samsung Universal C210 based on Exynos4210 rev0";
	compatible = "samsung,universal_c210", "samsung,exynos4210", "samsung,exynos4";
	chassis-type = "handset";

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

	chosen {
		bootargs = "root=/dev/mmcblk0p5 rw rootwait earlyprintk panic=5 maxcpus=1";
		stdout-path = "serial2:115200n8";
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};

		pmic_ap_clk: pmic-ap-clk {
			/* Workaround for missing clock on PMIC */
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	vemmc_reg: voltage-regulator {
		compatible = "regulator-fixed";
		regulator-name = "VMEM_VDD_2_8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpe1 3 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	wlan_pwrseq: sdhci3-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpe3 1 GPIO_ACTIVE_LOW>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		vol-up-key {
			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
			linux,code = <115>;
			label = "volume up";
			debounce-interval = <1>;
		};

		vol-down-key {
			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
			linux,code = <114>;
			label = "volume down";
			debounce-interval = <1>;
		};

		config-key {
			gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
			linux,code = <171>;
			label = "config";
			debounce-interval = <1>;
			wakeup-source;
		};

		camera-key {
			gpios = <&gpx2 3 GPIO_ACTIVE_LOW>;
			linux,code = <212>;
			label = "camera";
			debounce-interval = <1>;
		};

		power-key {
			gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
			linux,code = <116>;
			label = "power";
			debounce-interval = <1>;
			wakeup-source;
		};

		ok-key {
			gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
			linux,code = <352>;
			label = "ok";
			debounce-interval = <1>;
		};
	};

	tsp_reg: voltage-regulator {
		compatible = "regulator-fixed";
		regulator-name = "TSP_2_8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpe2 3 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	spi-3 {
		compatible = "spi-gpio";
		#address-cells = <1>;
		#size-cells = <0>;

		sck-gpios = <&gpy3 1 GPIO_ACTIVE_HIGH>;
		mosi-gpios = <&gpy3 3 GPIO_ACTIVE_HIGH>;
		num-chipselects = <1>;
		cs-gpios = <&gpy4 3 GPIO_ACTIVE_LOW>;

		lcd@0 {
			compatible = "samsung,ld9040";
			reg = <0>;
			vdd3-supply = <&ldo7_reg>;
			vci-supply = <&ldo17_reg>;
			reset-gpios = <&gpy4 5 GPIO_ACTIVE_HIGH>;
			spi-max-frequency = <1200000>;
			power-on-delay = <10>;
			reset-delay = <10>;
			panel-width-mm = <90>;
			panel-height-mm = <154>;
			display-timings {
				timing {
					clock-frequency = <23492370>;
					hactive = <480>;
					vactive = <800>;
					hback-porch = <16>;
					hfront-porch = <16>;
					vback-porch = <2>;
					vfront-porch = <28>;
					hsync-len = <2>;
					vsync-len = <1>;
					hsync-active = <0>;
					vsync-active = <0>;
					de-active = <0>;
					pixelclk-active = <0>;
				};
			};
			port {
				lcd_ep: endpoint {
					remote-endpoint = <&fimd_dpi_ep>;
				};
			};
		};
	};

	hdmi_en: voltage-regulator-hdmi-5v {
		compatible = "regulator-fixed";
		regulator-name = "HDMI_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpe0 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	hdmi_ddc: i2c-ddc {
		compatible = "i2c-gpio";
		sda-gpios = <&gpe4 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpe4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <100>;
		#address-cells = <1>;
		#size-cells = <0>;

		pinctrl-0 = <&i2c_ddc_bus>;
		pinctrl-names = "default";
		status = "okay";
	};
};

&camera {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <>;
};

&cpu0 {
	cpu0-supply = <&vdd_arm_reg>;
};

&cpu_thermal {
	cooling-maps {
		map0 {
			/* Corresponds to 800MHz */
			cooling-device = <&cpu0 2 2>;
		};
		map1 {
			/* Corresponds to 200MHz */
			cooling-device = <&cpu0 4 4>;
		};
	};
};

&ehci {
	status = "okay";
	phys = <&exynos_usbphy 1>;
	phy-names = "host";
};

&exynos_usbphy {
	status = "okay";
	vbus-supply = <&safeout1_reg>;
};

&fimc_0 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC0>,
			  <&clock CLK_SCLK_FIMC0>;
	assigned-clock-parents = <&clock CLK_SCLK_MPLL>;
	assigned-clock-rates = <0>, <160000000>;
};

&fimc_1 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC1>,
			  <&clock CLK_SCLK_FIMC1>;
	assigned-clock-parents = <&clock CLK_SCLK_MPLL>;
	assigned-clock-rates = <0>, <160000000>;
};

&fimc_2 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC2>,
			  <&clock CLK_SCLK_FIMC2>;
	assigned-clock-parents = <&clock CLK_SCLK_MPLL>;
	assigned-clock-rates = <0>, <160000000>;
};

&fimc_3 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC3>,
			  <&clock CLK_SCLK_FIMC3>;
	assigned-clock-parents = <&clock CLK_SCLK_MPLL>;
	assigned-clock-rates = <0>, <160000000>;
};

&fimd {
	pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
	pinctrl-names = "default";
	status = "okay";
	samsung,invert-vden;
	samsung,invert-vclk;
	#address-cells = <1>;
	#size-cells = <0>;
	port@3 {
		reg = <3>;
		fimd_dpi_ep: endpoint {
			remote-endpoint = <&lcd_ep>;
		};
	};
};

&gpu {
	mali-supply = <&buck2_reg>;
	status = "okay";
};

&hdmi {
	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&hdmi_hpd>;
	hdmi-en-supply = <&hdmi_en>;
	vdd-supply = <&ldo3_reg>;
	vdd_osc-supply = <&ldo4_reg>;
	vdd_pll-supply = <&ldo3_reg>;
	ddc = <&hdmi_ddc>;
	status = "okay";
};

&hsotg {
	vusb_d-supply = <&ldo3_reg>;
	vusb_a-supply = <&ldo8_reg>;
	dr_mode = "peripheral";
	status = "okay";
};

&i2c_3 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;
	pinctrl-0 = <&i2c3_bus>;
	pinctrl-names = "default";
	status = "okay";

	tsp@4a {
		/* TBD: Atmel maXtouch touchscreen */
		reg = <0x4a>;
	};
};

&i2c_5 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;
	pinctrl-0 = <&i2c5_bus>;
	pinctrl-names = "default";
	status = "okay";

	vdd_arm_reg: pmic@60 {
		compatible = "maxim,max8952";
		reg = <0x60>;

		max8952,vid-gpios = <&gpx0 3 GPIO_ACTIVE_HIGH>,
				    <&gpx0 4 GPIO_ACTIVE_HIGH>;
		max8952,default-mode = <0>;
		max8952,dvs-mode-microvolt = <1250000>, <1200000>,
						<1050000>, <950000>;
		max8952,sync-freq = <0>;
		max8952,ramp-speed = <0>;

		regulator-name = "VARM_1.2V_C210";
		regulator-min-microvolt = <770000>;
		regulator-max-microvolt = <1400000>;
		regulator-always-on;
		regulator-boot-on;
	};

	pmic@66 {
		compatible = "national,lp3974";
		interrupts-extended = <&gpx0 7 0>, <&gpx2 7 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&lp3974_irq>;
		reg = <0x66>;

		max8998,pmic-buck1-default-dvs-idx = <0>;
		max8998,pmic-buck1-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
						<&gpx0 6 GPIO_ACTIVE_HIGH>;
		max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
						<1100000>, <1000000>;

		max8998,pmic-buck2-default-dvs-idx = <0>;
		max8998,pmic-buck2-dvs-gpio = <&gpe2 0 GPIO_ACTIVE_HIGH>;
		max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;

		regulators {
			ldo2_reg: LDO2 {
				regulator-name = "VALIVE_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			ldo3_reg: LDO3 {
				regulator-name = "VUSB+MIPI_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			ldo4_reg: LDO4 {
				regulator-name = "VADC_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo5_reg: LDO5 {
				regulator-name = "VTF_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			ldo6_reg: LDO6 {
				regulator-name = "LDO6";
				regulator-min-microvolt = <2000000>;
				regulator-max-microvolt = <2000000>;
			};

			ldo7_reg: LDO7 {
				regulator-name = "VLCD+VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo8_reg: LDO8 {
				regulator-name = "VUSB+VDAC_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			ldo9_reg: LDO9 {
				regulator-name = "VCC_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
			};

			ldo10_reg: LDO10 {
				regulator-name = "VPLL_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo11_reg: LDO11 {
				regulator-name = "CAM_AF_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo12_reg: LDO12 {
				regulator-name = "PS_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			ldo13_reg: LDO13 {
				regulator-name = "VHIC_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

			ldo14_reg: LDO14 {
				regulator-name = "CAM_I_HOST_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo15_reg: LDO15 {
				regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

			ldo16_reg: LDO16 {
				regulator-name = "CAM_S_ANA_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			ldo17_reg: LDO17 {
				regulator-name = "VCC_3.0V_LCD";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VINT_1.1V";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
				regulator-always-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "VG3D_1.1V";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
			};

			buck3_reg: BUCK3 {
				regulator-name = "VCC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			buck4_reg: BUCK4 {
				regulator-name = "VMEM_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			ap32khz_reg: EN32KHz-AP {
				regulator-name = "32KHz AP";
				regulator-always-on;
			};

			cp32khz_reg: EN32KHz-CP {
				regulator-name = "32KHz CP";
			};

			vichg_reg: ENVICHG {
				regulator-name = "VICHG";
			};

			safeout1_reg: ESAFEOUT1 {
				regulator-name = "SAFEOUT1";
			};

			safeout2_reg: ESAFEOUT2 {
				regulator-name = "SAFEOUT2";
				regulator-boot-on;
			};
		};
	};
};

&i2c_8 {
	status = "okay";
};

&mct {
	compatible = "none";
};

&mdma1 {
	/* Use the secure mdma0 */
	status = "disabled";
};

&mixer {
	status = "okay";
};

&ohci {
	status = "okay";
};

&pinctrl_1 {
	bt_shutdown: bt-shutdown-pins {
		samsung,pins = "gpe1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	bt_host_wakeup: bt-host-wakeup-pins {
		samsung,pins = "gpx2-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	bt_device_wakeup: bt-device-wakeup-pins {
		samsung,pins = "gpx3-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	lp3974_irq: lp3974-irq-pins {
		samsung,pins = "gpx0-7", "gpx2-7";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	hdmi_hpd: hdmi-hpd-pins {
		samsung,pins = "gpx3-7";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};
};

&pinctrl_0 {
	i2c_ddc_bus: i2c-ddc-bus-pins {
		samsung,pins = "gpe4-2", "gpe4-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};

&pwm {
	compatible = "samsung,s5p6440-pwm";
	status = "okay";
};

&rtc {
	status = "okay";
	clocks = <&clock CLK_RTC>, <&pmic_ap_clk>;
	clock-names = "rtc", "rtc_src";
};

&sdhci_0 {
	bus-width = <8>;
	non-removable;
	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
	pinctrl-names = "default";
	vmmc-supply = <&vemmc_reg>;
	status = "okay";
};

&sdhci_2 {
	bus-width = <4>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
	pinctrl-names = "default";
	vmmc-supply = <&ldo5_reg>;
	cd-gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&sdhci_3 {
	status = "okay";

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

	non-removable;
	bus-width = <4>;
	mmc-pwrseq = <&wlan_pwrseq>;
	vmmc-supply = <&ldo5_reg>;

	pinctrl-names = "default";
	pinctrl-0 = <&sd3_clk>, <&sd3_cmd>, <&sd3_bus4>;

	brcmf: wifi@1 {
		compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
		reg = <1>;
		interrupt-parent = <&gpx2>;
		interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "host-wake";
	};
};

&serial_0 {
	status = "okay";
	/delete-property/dmas;
	/delete-property/dma-names;
	pinctrl-0 = <&uart0_data &uart0_fctl>;
	pinctrl-names = "default";

	bluetooth {
		compatible = "brcm,bcm4330-bt";
		pinctrl-0 = <&bt_shutdown &bt_device_wakeup &bt_host_wakeup>;
		pinctrl-names = "default";
		shutdown-gpios = <&gpe1 4 GPIO_ACTIVE_HIGH>;
		device-wakeup-gpios = <&gpx3 1 GPIO_ACTIVE_HIGH>;
		host-wakeup-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
	};
};

&serial_1 {
	status = "okay";
	/delete-property/dmas;
	/delete-property/dma-names;
};

&serial_2 {
	status = "okay";
	/delete-property/dmas;
	/delete-property/dma-names;
};

&serial_3 {
	status = "okay";
	/delete-property/dmas;
	/delete-property/dma-names;
};

&soc {
	mdma0: dma-controller@12840000 {
		compatible = "arm,pl330", "arm,primecell";
		reg = <0x12840000 0x1000>;
		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&clock CLK_MDMA>;
		clock-names = "apb_pclk";
		#dma-cells = <1>;
		power-domains = <&pd_lcd0>;
	};
};

&sysram {
	smp-sram@0 {
		status = "disabled";
	};

	smp-sram@5000 {
		compatible = "samsung,exynos4210-sysram";
		reg = <0x5000 0x1000>;
	};

	smp-sram@1f000 {
		status = "disabled";
	};
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 SoC device tree source
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2010-2011 Linaro Ltd.
 *		www.linaro.org
 *
 * Samsung's Exynos4210 SoC device nodes are listed in this file. Exynos4210
 * based board files can include this file and provide values for board specific
 * bindings.
 *
 * Note: This file does not include device nodes for all the controllers in
 * Exynos4210 SoC. As device tree coverage for Exynos4210 increases, additional
 * nodes can be added to this file.
 */

#include "exynos4.dtsi"
#include "exynos4-cpu-thermal.dtsi"

/ {
	compatible = "samsung,exynos4210", "samsung,exynos4";

	aliases {
		pinctrl0 = &pinctrl_0;
		pinctrl1 = &pinctrl_1;
		pinctrl2 = &pinctrl_2;
	};

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

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&cpu0>;
				};
				core1 {
					cpu = <&cpu1>;
				};
			};
		};

		cpu0: cpu@900 {
			device_type = "cpu";
			compatible = "arm,cortex-a9";
			reg = <0x900>;
			clocks = <&clock CLK_ARM_CLK>;
			clock-names = "cpu";
			clock-latency = <160000>;

			operating-points = <
				1200000 1250000
				1000000 1150000
				800000	1075000
				500000	975000
				400000	975000
				200000	950000
			>;
			#cooling-cells = <2>; /* min followed by max */
		};

		cpu1: cpu@901 {
			device_type = "cpu";
			compatible = "arm,cortex-a9";
			reg = <0x901>;
			clocks = <&clock CLK_ARM_CLK>;
			clock-names = "cpu";
			clock-latency = <160000>;

			operating-points = <
				1200000 1250000
				1000000 1150000
				800000	1075000
				500000	975000
				400000	975000
				200000	950000
			>;
			#cooling-cells = <2>; /* min followed by max */
		};
	};

	soc: soc {
		sysram: sram@2020000 {
			compatible = "mmio-sram";
			reg = <0x02020000 0x20000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0x02020000 0x20000>;

			smp-sram@0 {
				compatible = "samsung,exynos4210-sysram";
				reg = <0x0 0x1000>;
			};

			smp-sram@1f000 {
				compatible = "samsung,exynos4210-sysram-ns";
				reg = <0x1f000 0x1000>;
			};
		};

		pd_lcd1: power-domain@10023ca0 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023CA0 0x20>;
			#power-domain-cells = <0>;
			label = "LCD1";
		};

		l2c: cache-controller@10502000 {
			compatible = "arm,pl310-cache";
			reg = <0x10502000 0x1000>;
			cache-unified;
			cache-level = <2>;
			prefetch-data = <1>;
			prefetch-instr = <1>;
			arm,tag-latency = <2 2 1>;
			arm,data-latency = <2 2 1>;
		};

		mct: timer@10050000 {
			compatible = "samsung,exynos4210-mct";
			reg = <0x10050000 0x800>;
			clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
			clock-names = "fin_pll", "mct";
			interrupts-extended = <&gic GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
					      <&gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
					      <&combiner 12 6>,
					      <&combiner 12 7>,
					      <&gic GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
					      <&gic GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
		};

		watchdog: watchdog@10060000 {
			compatible = "samsung,s3c6410-wdt";
			reg = <0x10060000 0x100>;
			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_WDT>;
			clock-names = "watchdog";
		};

		clock: clock-controller@10030000 {
			compatible = "samsung,exynos4210-clock";
			reg = <0x10030000 0x20000>;
			#clock-cells = <1>;
		};

		pinctrl_0: pinctrl@11400000 {
			compatible = "samsung,exynos4210-pinctrl";
			reg = <0x11400000 0x1000>;
			interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
		};

		pinctrl_1: pinctrl@11000000 {
			compatible = "samsung,exynos4210-pinctrl";
			reg = <0x11000000 0x1000>;
			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;

			wakup_eint: wakeup-interrupt-controller {
				compatible = "samsung,exynos4210-wakeup-eint";
				interrupt-parent = <&gic>;
				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		pinctrl_2: pinctrl@3860000 {
			compatible = "samsung,exynos4210-pinctrl";
			reg = <0x03860000 0x1000>;
		};

		g2d: g2d@12800000 {
			compatible = "samsung,s5pv210-g2d";
			reg = <0x12800000 0x1000>;
			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SCLK_FIMG2D>, <&clock CLK_G2D>;
			clock-names = "sclk_fimg2d", "fimg2d";
			power-domains = <&pd_lcd0>;
			iommus = <&sysmmu_g2d>;
		};

		ppmu_acp: ppmu@10ae0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x10ae0000 0x2000>;
			status = "disabled";
		};

		ppmu_lcd1: ppmu@12240000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x12240000 0x2000>;
			clocks = <&clock CLK_PPMULCD1>;
			clock-names = "ppmu";
			status = "disabled";
		};

		sysmmu_g2d: sysmmu@12a20000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x12A20000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 7>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_G2D>, <&clock CLK_G2D>;
			power-domains = <&pd_lcd0>;
			#iommu-cells = <0>;
		};

		sysmmu_fimd1: sysmmu@12220000 {
			compatible = "samsung,exynos-sysmmu";
			interrupt-parent = <&combiner>;
			reg = <0x12220000 0x1000>;
			interrupts = <5 3>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMD1>, <&clock CLK_FIMD1>;
			power-domains = <&pd_lcd1>;
			#iommu-cells = <0>;
		};

		bus_dmc: bus-dmc {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_DIV_DMC>;
			clock-names = "bus";
			operating-points-v2 = <&bus_dmc_opp_table>;
			status = "disabled";
		};

		bus_acp: bus-acp {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_DIV_ACP>;
			clock-names = "bus";
			operating-points-v2 = <&bus_acp_opp_table>;
			status = "disabled";
		};

		bus_peri: bus-peri {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_ACLK100>;
			clock-names = "bus";
			operating-points-v2 = <&bus_peri_opp_table>;
			status = "disabled";
		};

		bus_fsys: bus-fsys {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_ACLK133>;
			clock-names = "bus";
			operating-points-v2 = <&bus_fsys_opp_table>;
			status = "disabled";
		};

		bus_display: bus-display {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_ACLK160>;
			clock-names = "bus";
			operating-points-v2 = <&bus_display_opp_table>;
			status = "disabled";
		};

		bus_lcd0: bus-lcd0 {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_ACLK200>;
			clock-names = "bus";
			operating-points-v2 = <&bus_leftbus_opp_table>;
			status = "disabled";
		};

		bus_leftbus: bus-leftbus {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_DIV_GDL>;
			clock-names = "bus";
			operating-points-v2 = <&bus_leftbus_opp_table>;
			status = "disabled";
		};

		bus_rightbus: bus-rightbus {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_DIV_GDR>;
			clock-names = "bus";
			operating-points-v2 = <&bus_leftbus_opp_table>;
			status = "disabled";
		};

		bus_mfc: bus-mfc {
			compatible = "samsung,exynos-bus";
			clocks = <&clock CLK_SCLK_MFC>;
			clock-names = "bus";
			operating-points-v2 = <&bus_leftbus_opp_table>;
			status = "disabled";
		};

		bus_dmc_opp_table: opp-table1 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-134000000 {
				opp-hz = /bits/ 64 <134000000>;
				opp-microvolt = <1025000>;
			};
			opp-267000000 {
				opp-hz = /bits/ 64 <267000000>;
				opp-microvolt = <1050000>;
			};
			opp-400000000 {
				opp-hz = /bits/ 64 <400000000>;
				opp-microvolt = <1150000>;
				opp-suspend;
			};
		};

		bus_acp_opp_table: opp-table2 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-134000000 {
				opp-hz = /bits/ 64 <134000000>;
			};
			opp-160000000 {
				opp-hz = /bits/ 64 <160000000>;
			};
			opp-200000000 {
				opp-hz = /bits/ 64 <200000000>;
			};
		};

		bus_peri_opp_table: opp-table3 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-5000000 {
				opp-hz = /bits/ 64 <5000000>;
			};
			opp-100000000 {
				opp-hz = /bits/ 64 <100000000>;
			};
		};

		bus_fsys_opp_table: opp-table4 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-10000000 {
				opp-hz = /bits/ 64 <10000000>;
			};
			opp-134000000 {
				opp-hz = /bits/ 64 <134000000>;
			};
		};

		bus_display_opp_table: opp-table5 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-100000000 {
				opp-hz = /bits/ 64 <100000000>;
			};
			opp-134000000 {
				opp-hz = /bits/ 64 <134000000>;
			};
			opp-160000000 {
				opp-hz = /bits/ 64 <160000000>;
			};
		};

		bus_leftbus_opp_table: opp-table6 {
			compatible = "operating-points-v2";
			opp-shared;

			opp-100000000 {
				opp-hz = /bits/ 64 <100000000>;
			};
			opp-160000000 {
				opp-hz = /bits/ 64 <160000000>;
			};
			opp-200000000 {
				opp-hz = /bits/ 64 <200000000>;
				opp-suspend;
			};
		};
	};
};

&cpu_alert0 {
	temperature = <85000>; /* millicelsius */
};

&cpu_alert1 {
	temperature = <100000>; /* millicelsius */
};

&cpu_alert2 {
	temperature = <110000>; /* millicelsius */
};

&cpu_thermal {
	polling-delay-passive = <0>;
	polling-delay = <0>;
	thermal-sensors = <&tmu 0>;
};

&gic {
	cpu-offset = <0x8000>;
};

&camera {
	clocks = <&clock CLK_SCLK_CAM0>, <&clock CLK_SCLK_CAM1>,
		 <&clock CLK_PIXELASYNCM0>, <&clock CLK_PIXELASYNCM1>;
	clock-names = "sclk_cam0", "sclk_cam1", "pxl_async0", "pxl_async1";
};

&combiner {
	samsung,combiner-nr = <16>;
	interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
};

&fimc_0 {
	samsung,pix-limits = <4224 8192 1920 4224>;
	samsung,mainscaler-ext;
	samsung,cam-if;
};

&fimc_1 {
	samsung,pix-limits = <4224 8192 1920 4224>;
	samsung,mainscaler-ext;
	samsung,cam-if;
};

&fimc_2 {
	samsung,pix-limits = <4224 8192 1920 4224>;
	samsung,mainscaler-ext;
	samsung,lcd-wb;
};

&fimc_3 {
	samsung,pix-limits = <1920 8192 1366 1920>;
	samsung,rotators = <0>;
	samsung,mainscaler-ext;
	samsung,lcd-wb;
};

&gpu {
	interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
		     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "gp",
			  "gpmmu",
			  "pp0",
			  "ppmmu0",
			  "pp1",
			  "ppmmu1",
			  "pp2",
			  "ppmmu2",
			  "pp3",
			  "ppmmu3";
	operating-points-v2 = <&gpu_opp_table>;

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

		opp-160000000 {
			opp-hz = /bits/ 64 <160000000>;
			opp-microvolt = <950000>;
		};
		opp-267000000 {
			opp-hz = /bits/ 64 <267000000>;
			opp-microvolt = <1050000>;
		};
	};
};

&mdma1 {
	power-domains = <&pd_lcd0>;
};

&mixer {
	clock-names = "mixer", "hdmi", "sclk_hdmi", "vp", "mout_mixer",
		      "sclk_mixer";
	clocks = <&clock CLK_MIXER>, <&clock CLK_HDMI>,
		 <&clock CLK_SCLK_HDMI>, <&clock CLK_VP>,
		 <&clock CLK_MOUT_MIXER>, <&clock CLK_SCLK_MIXER>;
};

&pmu {
	interrupts = <2 2>, <3 2>;
	interrupt-affinity = <&cpu0>, <&cpu1>;
	status = "okay";
};

&pmu_system_controller {
	clock-names = "clkout0", "clkout1", "clkout2", "clkout3",
			"clkout4", "clkout8", "clkout9";
	clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>,
		<&clock CLK_OUT_LEFTBUS>, <&clock CLK_OUT_RIGHTBUS>,
		<&clock CLK_OUT_CPU>, <&clock CLK_XXTI>, <&clock CLK_XUSBXTI>;
	#clock-cells = <1>;
};

&rotator {
	power-domains = <&pd_lcd0>;
};

&sysmmu_rotator {
	power-domains = <&pd_lcd0>;
};

&tmu {
	compatible = "samsung,exynos4210-tmu";
	clocks = <&clock CLK_TMU_APBIF>;
	clock-names = "tmu_apbif";
};

#include "exynos4210-pinctrl.dtsi"

repo_name: angery/linux


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4412 based Galaxy S3 board device tree source
 *
 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 */

/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "exynos4412-midas.dtsi"

/ {
	aliases {
		i2c9 = &i2c_ak8975;
		i2c10 = &i2c_cm36651;
	};

	led-controller {
		compatible = "skyworks,aat1290";
		flen-gpios = <&gpj1 1 GPIO_ACTIVE_HIGH>;
		enset-gpios = <&gpj1 2 GPIO_ACTIVE_HIGH>;

		pinctrl-names = "default", "host", "isp";
		pinctrl-0 = <&camera_flash_host>;
		pinctrl-1 = <&camera_flash_host>;
		pinctrl-2 = <&camera_flash_isp>;

		led {
			function = LED_FUNCTION_FLASH;
			color = <LED_COLOR_ID_WHITE>;
			led-max-microamp = <520833>;
			flash-max-microamp = <1012500>;
			flash-max-timeout-us = <1940000>;
		};
	};

	lcd_vdd3_reg: voltage-regulator-10 {
		compatible = "regulator-fixed";
		regulator-name = "LCD_VDD_2.2V";
		regulator-min-microvolt = <2200000>;
		regulator-max-microvolt = <2200000>;
		gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	ps_als_reg: voltage-regulator-11 {
		compatible = "regulator-fixed";
		regulator-name = "LED_A_3.0V";
		regulator-min-microvolt = <3000000>;
		regulator-max-microvolt = <3000000>;
		gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	i2c_ak8975: i2c-gpio-0 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpy2 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpy2 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;
		#address-cells = <1>;
		#size-cells = <0>;

		magnetometer@c {
			compatible = "asahi-kasei,ak8975";
			reg = <0x0c>;
			gpios = <&gpj0 7 GPIO_ACTIVE_HIGH>;
		};
	};

	i2c_cm36651: i2c-gpio-2 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpf0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpf0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;
		#address-cells = <1>;
		#size-cells = <0>;

		light-sensor@18 {
			compatible = "capella,cm36651";
			reg = <0x18>;
			interrupt-parent = <&gpx0>;
			interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
			vled-supply = <&ps_als_reg>;
		};
	};
};

&buck9_reg {
	maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
};

&cam_af_reg {
	gpio = <&gpm0 4 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&cam_io_reg {
	gpio = <&gpm0 2 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&dsi_0 {
	status = "okay";

	panel@0 {
		compatible = "samsung,s6e8aa0";
		reg = <0>;
		vdd3-supply = <&lcd_vdd3_reg>;
		vci-supply = <&ldo25_reg>;
		reset-gpios = <&gpf2 1 GPIO_ACTIVE_HIGH>;
		power-on-delay = <50>;
		reset-delay = <100>;
		init-delay = <100>;
		flip-horizontal;
		flip-vertical;
		panel-width-mm = <58>;
		panel-height-mm = <103>;

		display-timings {
			timing-0 {
				clock-frequency = <57153600>;
				hactive = <720>;
				vactive = <1280>;
				hfront-porch = <5>;
				hback-porch = <5>;
				hsync-len = <5>;
				vfront-porch = <13>;
				vback-porch = <1>;
				vsync-len = <2>;
			};
		};
	};
};

&i2c_3 {
	touchscreen@48 {
		compatible = "melfas,mms114";
		reg = <0x48>;
		interrupt-parent = <&gpm2>;
		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-size-x = <720>;
		touchscreen-size-y = <1280>;
		avdd-supply = <&ldo23_reg>;
		vdd-supply = <&ldo24_reg>;
	};
};

&ldo25_reg {
	regulator-name = "LCD_VCC_3.3V";
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <2800000>;
};

&pinctrl_0 {
	camera_flash_host: camera-flash-host-pins {
		samsung,pins = "gpj1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-val = <0>;
	};

	camera_flash_isp: camera-flash-isp-pins {
		samsung,pins = "gpj1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-val = <1>;
	};
};

&s5c73m3 {
	standby-gpios = <&gpm0 1 GPIO_ACTIVE_LOW>;   /* ISP_STANDBY */
	vdda-supply = <&ldo17_reg>;
	status = "okay";
};

&sound {
	samsung,audio-routing =
		"HP", "HPOUT1L",
		"HP", "HPOUT1R",

		"SPK", "SPKOUTLN",
		"SPK", "SPKOUTLP",
		"SPK", "SPKOUTRN",
		"SPK", "SPKOUTRP",

		"RCV", "HPOUT2N",
		"RCV", "HPOUT2P",

		"HDMI", "LINEOUT1N",
		"HDMI", "LINEOUT1P",

		"LINE", "LINEOUT2N",
		"LINE", "LINEOUT2P",

		"IN1LP", "MICBIAS1",
		"IN1LN", "MICBIAS1",
		"Main Mic", "MICBIAS1",

		"IN1RP", "Sub Mic",
		"IN1RN", "Sub Mic",

		"IN2LP:VXRN", "MICBIAS2",
		"Headset Mic", "MICBIAS2",

		"IN2RN", "FM In",
		"IN2RP:VXRP", "FM In";
};

&submic_bias_reg {
	gpio = <&gpf2 0 GPIO_ACTIVE_HIGH>;
	enable-active-high;
};

&touchkey_reg {
	gpio = <&gpm0 0 GPIO_ACTIVE_HIGH>;
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4412 based M0 (GT-I9300) board device tree source
 *
 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 */

/dts-v1/;
#include "exynos4412-galaxy-s3.dtsi"

/ {
	model = "Samsung Galaxy S3 (GT-I9300) based on Exynos4412";
	compatible = "samsung,i9300", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
	chassis-type = "handset";

	/* bootargs are passed in by bootloader */

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

&sound {
	fm-sel-gpios = <&gpl0 3 GPIO_ACTIVE_HIGH>;
};


code:
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "exynos4412-galaxy-s3.dtsi"

/ {
	model = "Samsung Galaxy S3 (GT-I9305) based on Exynos4412";
	compatible = "samsung,i9305", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
	chassis-type = "handset";

	/* bootargs are passed in by bootloader */

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

&i2c0_bus {
	/* SCL and SDA pins are swapped */
	samsung,pins = "gpd1-1", "gpd1-0";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * TOPEET's Exynos4412 based itop board device tree source
 *
 * Copyright (c) 2016 SUMOMO Computer Association
 *			https://www.sumomo.mobi
 *			Randy Li <ayaka@soulik.info>
 *
 * Device tree source file for TOPEET iTop Exynos 4412 core board
 * which is based on Samsung's Exynos4412 SoC.
 */

/dts-v1/;
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/sound/samsung-i2s.h>
#include "exynos4412-itop-scp-core.dtsi"

/ {
	model = "TOPEET iTop 4412 Elite board based on Exynos4412";
	compatible = "topeet,itop4412-elite", "samsung,exynos4412", "samsung,exynos4";

	chosen {
		bootargs = "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootdelay=1 rootwait";
		stdout-path = "serial2:115200n8";
	};

	leds {
		compatible = "gpio-leds";

		led2 {
			function = LED_FUNCTION_HEARTBEAT;
			color = <LED_COLOR_ID_RED>;
			gpios = <&gpx1 0 GPIO_ACTIVE_HIGH>;
			default-state = "off";
			linux,default-trigger = "heartbeat";
		};

		led3 {
			label = "red:user";
			color = <LED_COLOR_ID_RED>;
			gpios = <&gpk1 1 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		key-home {
			label = "GPIO Key Home";
			linux,code = <KEY_HOME>;
			gpios = <&gpx1 1 GPIO_ACTIVE_LOW>;
		};

		key-back {
			label = "GPIO Key Back";
			linux,code = <KEY_BACK>;
			gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
		};

		key-sleep {
			label = "GPIO Key Sleep";
			linux,code = <KEY_POWER>;
			gpios = <&gpx3 3 GPIO_ACTIVE_LOW>;
		};

		key-vol-up {
			label = "GPIO Key Vol+";
			linux,code = <KEY_UP>;
			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
		};

		key-vol-down {
			label = "GPIO Key Vol-";
			linux,code = <KEY_DOWN>;
			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
		};
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "wm-sound";

		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&link0_codec>;
		simple-audio-card,frame-master = <&link0_codec>;

		simple-audio-card,widgets =
			"Microphone", "Mic Jack",
			"Line", "Line In",
			"Line", "Line Out",
			"Speaker", "Speaker",
			"Headphone", "Headphone Jack";
		simple-audio-card,routing =
			"Headphone Jack", "HP_L",
			"Headphone Jack", "HP_R",
			"Speaker", "SPK_LP",
			"Speaker", "SPK_LN",
			"Speaker", "SPK_RP",
			"Speaker", "SPK_RN",
			"LINPUT1", "Mic Jack",
			"LINPUT3", "Mic Jack",
			"RINPUT1", "Mic Jack",
			"RINPUT2", "Mic Jack";

		simple-audio-card,cpu {
			sound-dai = <&i2s0 0>;
		};

		link0_codec: simple-audio-card,codec {
			sound-dai = <&codec>;
			clocks = <&i2s0 CLK_I2S_CDCLK>;
			system-clock-frequency = <11289600>;
		};
	};

	beep {
		compatible = "pwm-beeper";
		pwms = <&pwm 0 4000000 PWM_POLARITY_INVERTED>;
	};
};

&adc {
	vdd-supply = <&ldo3_reg>;
	status = "okay";
};

&camera {
	pinctrl-0 = <&cam_port_a_clk_active>;
	pinctrl-names = "default";
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_CAM0>;
	assigned-clock-parents = <&clock CLK_XUSBXTI>;
};

&clock_audss {
	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
			<&clock_audss EXYNOS_MOUT_I2S>,
			<&clock_audss EXYNOS_DOUT_SRP>,
			<&clock_audss EXYNOS_DOUT_AUD_BUS>;
	assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
			<&clock_audss EXYNOS_MOUT_AUDSS>;
	assigned-clock-rates = <0>, <0>, <112896000>, <11289600>;
};

&ehci {
	status = "okay";
	/* In order to reset USB ethernet */
	samsung,vbus-gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;

	phys = <&exynos_usbphy 1>, <&exynos_usbphy 3>;
	phy-names = "host", "hsic1";
};

&exynos_usbphy {
	status = "okay";
};

&fimc_0 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC0>,
			<&clock CLK_SCLK_FIMC0>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&hsotg {
	dr_mode = "peripheral";
	status = "okay";
};

&i2c_4 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;
	pinctrl-0 = <&i2c4_bus>;
	pinctrl-names = "default";
	status = "okay";

	codec: audio-codec@1a {
		compatible = "wlf,wm8960";
		reg = <0x1a>;
		clocks = <&pmu_system_controller 0>;
		clock-names = "MCLK1";
		wlf,shared-lrclk;
		#sound-dai-cells = <0>;
	};
};

&i2s0 {
	pinctrl-0 = <&i2s0_bus>;
	pinctrl-names = "default";
	status = "okay";
};

&pinctrl_1 {
	ether-reset-pins {
		samsung,pins = "gpc0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};

&pwm {
	status = "okay";
	pinctrl-0 = <&pwm0_out>;
	pinctrl-names = "default";
	samsung,pwm-outputs = <0>;
};

&sdhci_2 {
	bus-width = <4>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
	pinctrl-names = "default";
	cd-gpio = <&gpx0 7 GPIO_ACTIVE_LOW>;
	cap-sd-highspeed;
	vmmc-supply = <&ldo23_reg>;
	vqmmc-supply = <&ldo17_reg>;
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * TOPEET's Exynos4412 based itop board device tree source
 *
 * Copyright (c) 2016 SUMOMO Computer Association
 *			https://www.sumomo.mobi
 *			Randy Li <ayaka@soulik.info>
 *
 * Device tree source file for TOPEET iTop Exynos 4412 SCP package core
 * board which is based on Samsung's Exynos4412 SoC.
 */

#include <dt-bindings/clock/samsung,s2mps11.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "exynos4412.dtsi"
#include "exynos4412-ppmu-common.dtsi"
#include "exynos-mfc-reserved-memory.dtsi"

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

	firmware@203f000 {
		compatible = "samsung,secure-firmware";
		reg = <0x0203F000 0x1000>;
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};

	thermal-zones {
		cpu_thermal: cpu-thermal {
			cooling-maps {
				map0 {
				     /* Corresponds to 800MHz at freq_table */
				     cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
						      <&cpu2 7 7>, <&cpu3 7 7>;
				};
				map1 {
				     /* Corresponds to 200MHz at freq_table */
				     cooling-device = <&cpu0 13 13>,
						      <&cpu1 13 13>,
						      <&cpu2 13 13>,
						      <&cpu3 13 13>;
			       };
		       };
		};
	};

	usb-hub {
		compatible = "smsc,usb3503a";
		reset-gpios = <&gpm2 4 GPIO_ACTIVE_LOW>;
		connect-gpios = <&gpm3 3 GPIO_ACTIVE_HIGH>;
		intn-gpios = <&gpx2 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&hsic_reset>;
	};
};

&bus_dmc {
	devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
	vdd-supply = <&buck1_reg>;
	status = "okay";
};

&bus_acp {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_c2c {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_leftbus {
	devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
	vdd-supply = <&buck3_reg>;
	status = "okay";
};

&bus_rightbus {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_fsys {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_peri {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_mfc {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&cpu0 {
	cpu0-supply = <&buck2_reg>;
};

&gpu {
	mali-supply = <&buck4_reg>;
	status = "okay";
};

&hsotg {
	vusb_d-supply = <&ldo15_reg>;
	vusb_a-supply = <&ldo12_reg>;
};

&i2c_1 {
	#address-cells = <1>;
	#size-cells = <0>;
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <400000>;
	pinctrl-0 = <&i2c1_bus>;
	pinctrl-names = "default";
	status = "okay";

	s5m8767: pmic@66 {
		compatible = "samsung,s5m8767-pmic";
		reg = <0x66>;

		s5m8767,pmic-buck-default-dvs-idx = <3>;

		s5m8767,pmic-buck-dvs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>,
						 <&gpb 6 GPIO_ACTIVE_HIGH>,
						 <&gpb 7 GPIO_ACTIVE_HIGH>;

		s5m8767,pmic-buck-ds-gpios = <&gpm3 5 GPIO_ACTIVE_HIGH>,
						<&gpm3 6 GPIO_ACTIVE_HIGH>,
						<&gpm3 7 GPIO_ACTIVE_HIGH>;

		/* VDD_ARM */
		s5m8767,pmic-buck2-dvs-voltage = <1356250>, <1300000>,
						 <1243750>, <1118750>,
						 <1068750>, <1012500>,
						 <956250>, <900000>;
		/* VDD_INT */
		s5m8767,pmic-buck3-dvs-voltage = <1000000>, <1000000>,
						 <925000>, <925000>,
						 <887500>, <887500>,
						 <850000>, <850000>;
		/* VDD_G3D */
		s5m8767,pmic-buck4-dvs-voltage = <1081250>, <1081250>,
						 <1025000>, <950000>,
						 <918750>, <900000>,
						 <875000>, <831250>;
		wakeup-source;

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ALIVE";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			/* SCP uses 1.5v, POP uses 1.2v */
			ldo2_reg: LDO2 {
				regulator-name = "VDDQ_M12";
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo3_reg: LDO3 {
				regulator-name = "VDDIOAP_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo4_reg: LDO4 {
				regulator-name = "VDDQ_PRE";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo5_reg: LDO5 {
				regulator-name = "VDD_LDO5";
				op_mode = <0>; /* Always off Mode */
			};

			ldo6_reg: LDO6 {
				regulator-name = "VDD10_MPLL";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo7_reg: LDO7 {
				regulator-name = "VDD10_XPLL";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo8_reg: LDO8 {
				regulator-name = "VDD10_MIPI";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo9_reg: LDO9 {
				regulator-name = "VDD33_LCD";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo10_reg: LDO10 {
				regulator-name = "VDD18_MIPI";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo11_reg: LDO11 {
				regulator-name = "VDD18_ABB1";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo12_reg: LDO12 {
				regulator-name = "VDD33_UOTG";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo13_reg: LDO13 {
				regulator-name = "VDDIOPERI_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo14_reg: LDO14 {
				regulator-name = "VDD18_ABB02";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo15_reg: LDO15 {
				regulator-name = "VDD10_USH";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo16_reg: LDO16 {
				regulator-name = "VDD18_HSIC";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo17_reg: LDO17 {
				regulator-name = "VDDIOAP_MMC012_28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <1>; /* Normal Mode */
			};

			/* Used by HSIC */
			ldo18_reg: LDO18 {
				regulator-name = "VDDIOPERI_28";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			ldo19_reg: LDO19 {
				regulator-name = "VDD_LDO19";
				op_mode = <0>; /* Always off Mode */
			};

			ldo20_reg: LDO20 {
				regulator-name = "VDD28_CAM";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo21_reg: LDO21 {
				regulator-name = "VDD28_AF";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo22_reg: LDO22 {
				regulator-name = "VDDA28_2M";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo23_reg: LDO23 {
				regulator-name = "VDD28_TF";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo24_reg: LDO24 {
				regulator-name = "VDD33_A31";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo25_reg: LDO25 {
				regulator-name = "VDD18_CAM";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo26_reg: LDO26 {
				regulator-name = "VDD18_A31";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo27_reg: LDO27 {
				regulator-name = "GPS_1V8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				op_mode = <1>; /* Normal Mode */
			};

			ldo28_reg: LDO28 {
				regulator-name = "DVDD12";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				op_mode = <1>; /* Normal Mode */
			};

			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck2_reg: BUCK2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1456250>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck3_reg: BUCK3 {
				regulator-name = "vdd_int";
				regulator-min-microvolt = <875000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck4_reg: BUCK4 {
				regulator-name = "vdd_g3d";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck5_reg: BUCK5 {
				regulator-name = "vdd_m12";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck6_reg: BUCK6 {
				regulator-name = "vdd12_5m";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck7_reg: BUCK7 {
				regulator-name = "pvdd_buck7";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <2000000>;
				regulator-boot-on;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck8_reg: BUCK8 {
				regulator-name = "pvdd_buck8";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
				regulator-always-on;
				op_mode = <1>; /* Normal Mode */
			};

			buck9_reg: BUCK9 {
				regulator-name = "vddf28_emmc";
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <3000000>;
				op_mode = <1>; /* Normal Mode */
			};
		};

		s5m8767_osc: clocks {
			compatible = "samsung,s5m8767-clk";
			#clock-cells = <1>;
			clock-output-names = "s5m8767_ap",
					"s5m8767_cp", "s5m8767_bt";
		};

	};
};

&mfc {
	status = "okay";
};

&mshc_0 {
	pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
	pinctrl-names = "default";
	status = "okay";
	vmmc-supply = <&buck9_reg>;
	broken-cd;
	card-detect-delay = <200>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <2 3>;
	samsung,dw-mshc-ddr-timing = <1 2>;
	bus-width = <8>;
	cap-mmc-highspeed;
};

&pinctrl_1 {
	hsic_reset: hsic-reset-pins {
		samsung,pins = "gpm2-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};
};

&rtc {
	status = "okay";
	clocks = <&clock CLK_RTC>, <&s5m8767_osc S2MPS11_CLK_AP>;
	clock-names = "rtc", "rtc_src";
};

&tmu {
	vtmu-supply = <&ldo16_reg>;
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4412 based Trats 2 board device tree source
 *
 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Device tree source file for Samsung's Trats 2 board which is based on
 * Samsung's Exynos4412 SoC.
 */

/dts-v1/;
#include "exynos4412.dtsi"
#include "exynos4412-ppmu-common.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/maxim,max77686.h>
#include "exynos-pinctrl.h"

/ {
	compatible = "samsung,midas", "samsung,exynos4412", "samsung,exynos4";

	aliases {
		i2c11 = &i2c_max77693;
		i2c12 = &i2c_max77693_fuel;
	};

	chosen {
		stdout-path = &serial_2;
	};

	firmware@204f000 {
		compatible = "samsung,secure-firmware";
		reg = <0x0204F000 0x1000>;
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};

	cam_io_reg: voltage-regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "CAM_SENSOR_A";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		enable-active-high;
		status = "disabled";
	};

	cam_af_reg: voltage-regulator-2 {
		compatible = "regulator-fixed";
		regulator-name = "CAM_AF";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		enable-active-high;
		status = "disabled";
	};

	vsil12: voltage-regulator-3 {
		compatible = "regulator-fixed";
		regulator-name = "VSIL_1.2V";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		vin-supply = <&buck7_reg>;
	};

	vcc33mhl: voltage-regulator-4 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3.3_MHL";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	vcc18mhl: voltage-regulator-5 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_1.8_MHL";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	touchkey_reg: voltage-regulator-6 {
		compatible = "regulator-fixed";
		regulator-name = "LED_VDD_3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		enable-active-high;
		status = "disabled";
	};

	vbatt_reg: voltage-regulator-7 {
		compatible = "regulator-fixed";
		regulator-name = "VBATT";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
	};

	mic_bias_reg: voltage-regulator-8 {
		compatible = "regulator-fixed";
		regulator-name = "MICBIAS_LDO_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpf1 7 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	submic_bias_reg: voltage-regulator-9 {
		compatible = "regulator-fixed";
		regulator-name = "SUB_MICBIAS_LDO_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_keys>;

		key-down {
			gpios = <&gpx3 3 GPIO_ACTIVE_LOW>;
			linux,code = <114>;
			label = "volume down";
			debounce-interval = <10>;
		};

		key-up {
			gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
			linux,code = <115>;
			label = "volume up";
			debounce-interval = <10>;
		};

		key-power {
			gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
			linux,code = <116>;
			label = "power";
			debounce-interval = <10>;
			wakeup-source;
		};

		key-ok {
			gpios = <&gpx0 1 GPIO_ACTIVE_LOW>;
			linux,code = <139>;
			label = "ok";
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	i2c_max77693: i2c-gpio-1 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpm2 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpm2 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;
		#address-cells = <1>;
		#size-cells = <0>;

		pmic@66 {
			compatible = "maxim,max77693";
			interrupt-parent = <&gpx1>;
			interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
			pinctrl-names = "default";
			pinctrl-0 = <&max77693_irq>;
			reg = <0x66>;

			regulators {
				esafeout1_reg: ESAFEOUT1 {
					regulator-name = "ESAFEOUT1";
				};
				esafeout2_reg: ESAFEOUT2 {
					regulator-name = "ESAFEOUT2";
				};
				charger_reg: CHARGER {
					regulator-name = "CHARGER";
					regulator-min-microamp = <60000>;
					regulator-max-microamp = <2580000>;
				};
			};

			motor-driver {
				compatible = "maxim,max77693-haptic";
				haptic-supply = <&ldo26_reg>;
				pwms = <&pwm 0 38022 0>;
			};

			charger {
				compatible = "maxim,max77693-charger";

				maxim,constant-microvolt = <4350000>;
				maxim,min-system-microvolt = <3600000>;
				maxim,thermal-regulation-celsius = <100>;
				maxim,battery-overcurrent-microamp = <3500000>;
				maxim,charge-input-threshold-microvolt = <4300000>;
			};
		};
	};

	i2c_max77693_fuel: i2c-gpio-3 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpf1 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpf1 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;
		#address-cells = <1>;
		#size-cells = <0>;

		fuel-gauge@36 {
			compatible = "maxim,max17047";
			interrupt-parent = <&gpx2>;
			interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
			pinctrl-names = "default";
			pinctrl-0 = <&max77693_fuel_irq>;
			reg = <0x36>;

			maxim,over-heat-temp = <700>;
			maxim,over-volt = <4500>;
		};
	};

	i2c-gpio-4 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpl0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpl0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;
		#address-cells = <1>;
		#size-cells = <0>;

		touchkey@20 {
			compatible = "cypress,midas-touchkey";
			reg = <0x20>;
			vdd-supply = <&touchkey_reg>;
			vcc-supply = <&ldo5_reg>;
			interrupt-parent = <&gpj0>;
			interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
			linux,keycodes = <KEY_BACK KEY_MENU>;
		};
	};

	i2c-mhl {
		compatible = "i2c-gpio";
		sda-gpios = <&gpf0 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpf0 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <100>;
		#address-cells = <1>;
		#size-cells = <0>;

		pinctrl-0 = <&i2c_mhl_bus>;
		pinctrl-names = "default";

		sii9234: hdmi-bridge@39 {
			compatible = "sil,sii9234";
			avcc33-supply = <&vcc33mhl>;
			iovcc18-supply = <&vcc18mhl>;
			avcc12-supply = <&vsil12>;
			cvcc12-supply = <&vsil12>;
			reset-gpios = <&gpf3 4 GPIO_ACTIVE_LOW>;
			interrupt-parent = <&gpf3>;
			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
			reg = <0x39>;

			port {
				mhl_to_hdmi: endpoint {
					remote-endpoint = <&hdmi_to_mhl>;
				};
			};
		};
	};

	wlan_pwrseq: sdhci3-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpj0 0 GPIO_ACTIVE_LOW>;
		clocks = <&max77686 MAX77686_CLK_PMIC>;
		clock-names = "ext_clock";
	};

	sound: sound {
		compatible = "samsung,midas-audio";
		model = "Midas";
		mic-bias-supply = <&mic_bias_reg>;
		submic-bias-supply = <&submic_bias_reg>;

		cpu {
			sound-dai = <&i2s0 0>;
		};
		codec {
			sound-dai = <&wm1811>;
		};
	};

	thermistor-ap {
		compatible = "murata,ncp15wb473";
		pullup-uv = <1800000>;	 /* VCC_1.8V_AP */
		pullup-ohm = <100000>;	 /* 100K */
		pulldown-ohm = <100000>; /* 100K */
		io-channels = <&adc 1>;  /* AP temperature */
	};

	thermistor-battery {
		compatible = "murata,ncp15wb473";
		pullup-uv = <1800000>;	 /* VCC_1.8V_AP */
		pullup-ohm = <100000>;	 /* 100K */
		pulldown-ohm = <100000>; /* 100K */
		io-channels = <&adc 2>;  /* Battery temperature */
	};
};

&adc {
	vdd-supply = <&ldo3_reg>;
	status = "okay";
};

&bus_dmc {
	devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
	vdd-supply = <&buck1_reg>;
	status = "okay";
};

&bus_acp {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_c2c {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_leftbus {
	devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
	vdd-supply = <&buck3_reg>;
	status = "okay";
};

&bus_rightbus {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_display {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_fsys {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_peri {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_mfc {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&camera {
	pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
	pinctrl-names = "default";
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_CAM0>,
		<&clock CLK_MOUT_CAM1>;
	assigned-clock-parents = <&clock CLK_XUSBXTI>,
		<&clock CLK_XUSBXTI>;
};

&cpu0 {
	cpu0-supply = <&buck2_reg>;
};

&cpu_thermal {
	cooling-maps {
		map0 {
			/* Corresponds to 800MHz at freq_table */
			cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
					 <&cpu2 7 7>, <&cpu3 7 7>;
		};
		map1 {
			/* Corresponds to 200MHz at freq_table */
			cooling-device = <&cpu0 13 13>, <&cpu1 13 13>,
					 <&cpu2 13 13>, <&cpu3 13 13>;
		};
	};
};

&csis_0 {
	status = "okay";
	vddcore-supply = <&ldo8_reg>;
	vddio-supply = <&ldo10_reg>;
	assigned-clocks = <&clock CLK_MOUT_CSIS0>,
			<&clock CLK_SCLK_CSIS0>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;

	/* Camera C (3) MIPI CSI-2 (CSIS0) */
	port@3 {
		reg = <3>;
		csis0_ep: endpoint {
			remote-endpoint = <&s5c73m3_ep>;
			data-lanes = <1 2 3 4>;
			samsung,csis-hs-settle = <12>;
		};
	};
};

&csis_1 {
	status = "okay";
	vddcore-supply = <&ldo8_reg>;
	vddio-supply = <&ldo10_reg>;
	assigned-clocks = <&clock CLK_MOUT_CSIS1>,
			<&clock CLK_SCLK_CSIS1>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;

	/* Camera D (4) MIPI CSI-2 (CSIS1) */
	port@4 {
		reg = <4>;
		csis1_ep: endpoint {
			remote-endpoint = <&is_s5k6a3_ep>;
			data-lanes = <1>;
			samsung,csis-hs-settle = <18>;
			samsung,csis-wclk;
		};
	};
};

&dsi_0 {
	vddcore-supply = <&ldo8_reg>;
	vddio-supply = <&ldo10_reg>;
	samsung,burst-clock-frequency = <500000000>;
	samsung,esc-clock-frequency = <20000000>;
	samsung,pll-clock-frequency = <24000000>;
};

&exynos_usbphy {
	vbus-supply = <&esafeout1_reg>;
	status = "okay";
};

&fimc_0 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC0>,
			<&clock CLK_SCLK_FIMC0>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_1 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC1>,
			<&clock CLK_SCLK_FIMC1>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_2 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC2>,
			<&clock CLK_SCLK_FIMC2>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_3 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC3>,
			<&clock CLK_SCLK_FIMC3>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_is {
	pinctrl-0 = <&fimc_is_uart>;
	pinctrl-names = "default";
	status = "okay";

	};

&fimc_lite_0 {
	status = "okay";
};

&fimc_lite_1 {
	status = "okay";
};

&fimd {
	status = "okay";
};

&gpu {
	mali-supply = <&buck4_reg>;
	status = "okay";
};

&hdmi {
	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&hdmi_hpd>;
	vdd-supply = <&ldo3_reg>;
	vdd_osc-supply = <&ldo4_reg>;
	vdd_pll-supply = <&ldo3_reg>;
	ddc = <&i2c_5>;
	status = "okay";

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

		port@1 {
			reg = <1>;
			hdmi_to_mhl: endpoint {
				remote-endpoint = <&mhl_to_hdmi>;
			};
		};
	};
};

&hsotg {
	vusb_d-supply = <&ldo15_reg>;
	vusb_a-supply = <&ldo12_reg>;
	dr_mode = "peripheral";
	status = "okay";
};

&i2c_0 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <400000>;
	pinctrl-0 = <&i2c0_bus>;
	pinctrl-names = "default";
	status = "okay";

	s5c73m3: image-sensor@3c {
		compatible = "samsung,s5c73m3";
		reg = <0x3c>;
		xshutdown-gpios = <&gpf1 3 GPIO_ACTIVE_LOW>; /* ISP_RESET */
		vdd-int-supply = <&buck9_reg>;
		vddio-cis-supply = <&ldo9_reg>;
		vddio-host-supply = <&ldo18_reg>;
		vdd-af-supply = <&cam_af_reg>;
		vdd-reg-supply = <&cam_io_reg>;
		clock-frequency = <24000000>;
		/* CAM_A_CLKOUT */
		clocks = <&camera 0>;
		clock-names = "cis_extclk";
		status = "disabled";
		port {
			s5c73m3_ep: endpoint {
				remote-endpoint = <&csis0_ep>;
				data-lanes = <1 2 3 4>;
			};
		};
	};
};

&i2c1_isp {
	pinctrl-0 = <&fimc_is_i2c1>;
	pinctrl-names = "default";

	image-sensor@10 {
		compatible = "samsung,s5k6a3";
		reg = <0x10>;
		svdda-supply = <&cam_io_reg>;
		svddio-supply = <&ldo19_reg>;
		afvdd-supply = <&ldo19_reg>;
		clock-frequency = <24000000>;
		/* CAM_B_CLKOUT */
		clocks = <&camera 1>;
		clock-names = "extclk";
		samsung,camclk-out = <1>;
		gpios = <&gpm1 6 GPIO_ACTIVE_LOW>;

		port {
			is_s5k6a3_ep: endpoint {
				remote-endpoint = <&csis1_ep>;
				data-lanes = <1>;
			};
		};
	};
};

&i2c_3 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <400000>;
	pinctrl-0 = <&i2c3_bus>;
	pinctrl-names = "default";
	status = "okay";
};

&i2c_4 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;
	pinctrl-0 = <&i2c4_bus>;
	pinctrl-names = "default";
	status = "okay";

	wm1811: audio-codec@1a {
		compatible = "wlf,wm1811";
		reg = <0x1a>;
		clocks = <&pmu_system_controller 0>,
			<&max77686 MAX77686_CLK_PMIC>;
		clock-names = "MCLK1", "MCLK2";
		interrupt-controller;
		#interrupt-cells = <2>;
		interrupt-parent = <&gpx3>;
		interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;

		gpio-controller;
		#gpio-cells = <2>;
		#sound-dai-cells = <0>;

		wlf,gpio-cfg = <0x3 0x0 0x0 0x0 0x0 0x0
			0x0 0x8000 0x0 0x0 0x0>;
		wlf,micbias-cfg = <0x2f 0x2b>;

		wlf,lineout1-feedback;
		wlf,lineout1-se;
		wlf,lineout2-se;
		wlf,ldoena-always-driven;

		AVDD2-supply = <&vbatt_reg>;
		DBVDD1-supply = <&ldo3_reg>;
		DBVDD2-supply = <&vbatt_reg>;
		DBVDD3-supply = <&vbatt_reg>;
		DCVDD-supply = <&ldo3_reg>;
		CPVDD-supply = <&vbatt_reg>;
		SPKVDD1-supply = <&vbatt_reg>;
		SPKVDD2-supply = <&vbatt_reg>;
		wlf,ldo1ena = <&gpj0 4 0>;
		wlf,ldo2ena = <&gpj0 4 0>;
	};
};

&i2c_5 {
	status = "okay";
};

&i2c_7 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;
	pinctrl-0 = <&i2c7_bus>;
	pinctrl-names = "default";
	status = "okay";

	max77686: pmic@9 {
		compatible = "maxim,max77686";
		interrupt-parent = <&gpx0>;
		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-0 = <&max77686_irq>;
		pinctrl-names = "default";
		wakeup-source;
		reg = <0x09>;
		#clock-cells = <1>;

		voltage-regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VALIVE_1.0V_AP";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VM1M2_1.2V_AP";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			ldo3_reg: LDO3 {
				regulator-name = "VCC_1.8V_AP";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo4_reg: LDO4 {
				regulator-name = "VCC_2.8V_AP";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
			};

			ldo5_reg: LDO5 {
				regulator-name = "VCC_1.8V_IO";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo6_reg: LDO6 {
				regulator-name = "VMPLL_1.0V_AP";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			ldo7_reg: LDO7 {
				regulator-name = "VPLL_1.0V_AP";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			ldo8_reg: LDO8 {
				regulator-name = "VMIPI_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			ldo9_reg: LDO9 {
				regulator-name = "CAM_ISP_MIPI_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

			ldo10_reg: LDO10 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			ldo11_reg: LDO11 {
				regulator-name = "VABB1_1.95V";
				regulator-min-microvolt = <1950000>;
				regulator-max-microvolt = <1950000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			ldo12_reg: LDO12 {
				regulator-name = "VUOTG_3.0V";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			ldo13_reg: LDO13 {
				regulator-name = "NFC_AVDD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo14_reg: LDO14 {
				regulator-name = "VABB2_1.95V";
				regulator-min-microvolt = <1950000>;
				regulator-max-microvolt = <1950000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			ldo15_reg: LDO15 {
				regulator-name = "VHSIC_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			ldo16_reg: LDO16 {
				regulator-name = "VHSIC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			ldo17_reg: LDO17 {
				regulator-name = "CAM_SENSOR_CORE_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

			ldo18_reg: LDO18 {
				regulator-name = "CAM_ISP_SEN_IO_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo19_reg: LDO19 {
				regulator-name = "VT_CAM_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo20_reg: LDO20 {
				regulator-name = "VDDQ_PRE_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo21_reg: LDO21 {
				regulator-name = "VTF_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				maxim,ena-gpios = <&gpy2 0 GPIO_ACTIVE_HIGH>;
			};

			ldo22_reg: LDO22 {
				regulator-name = "VMEM_VDD_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
			};

			ldo23_reg: LDO23 {
				regulator-name = "TSP_AVDD_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo24_reg: LDO24 {
				regulator-name = "TSP_VDD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo25_reg: LDO25 {
				regulator-name = "LDO25";
			};

			ldo26_reg: LDO26 {
				regulator-name = "MOTOR_VCC_3.0V";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VDD_MIF";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			buck2_reg: BUCK2 {
				regulator-name = "VDD_ARM";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			buck3_reg: BUCK3 {
				regulator-name = "VDD_INT";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1150000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			buck4_reg: BUCK4 {
				regulator-name = "VDD_G3D";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1150000>;
				regulator-boot-on;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			buck5_reg: BUCK5 {
				regulator-name = "VMEM_1.2V_AP";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			buck6_reg: BUCK6 {
				regulator-name = "VCC_SUB_1.35V";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
			};

			buck7_reg: BUCK7 {
				regulator-name = "VCC_SUB_2.0V";
				regulator-min-microvolt = <2000000>;
				regulator-max-microvolt = <2000000>;
				regulator-always-on;
			};

			buck8_reg: BUCK8 {
				regulator-name = "VMEM_VDDF_3.0V";
				regulator-min-microvolt = <2850000>;
				regulator-max-microvolt = <2850000>;
				maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
			};

			buck9_reg: BUCK9 {
				regulator-name = "CAM_ISP_CORE_1.2V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1200000>;
			};
		};
	};
};

&i2c_8 {
	status = "okay";
};

&i2s0 {
	pinctrl-0 = <&i2s0_bus>;
	pinctrl-names = "default";
	status = "okay";
};

&mixer {
	status = "okay";
};

&mshc_0 {
	broken-cd;
	non-removable;
	card-detect-delay = <200>;
	vmmc-supply = <&ldo22_reg>;
	clock-frequency = <400000000>;
	samsung,dw-mshc-ciu-div = <0>;
	samsung,dw-mshc-sdr-timing = <2 3>;
	samsung,dw-mshc-ddr-timing = <1 2>;
	pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
	pinctrl-names = "default";
	status = "okay";
	bus-width = <8>;
	cap-mmc-highspeed;
};

&pmu_system_controller {
	assigned-clocks = <&pmu_system_controller 0>;
	assigned-clock-parents =  <&clock CLK_XUSBXTI>;
};

&pinctrl_0 {
	pinctrl-names = "default";
	pinctrl-0 = <&sleep0>;

	mhl_int: mhl-int-pins {
		samsung,pins = "gpf3-5";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	i2c_mhl_bus: i2c-mhl-bus-pins {
		samsung,pins = "gpf0-4", "gpf0-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	sleep0: sleep-state {
		PIN_SLP(gpa0-0, INPUT, NONE);
		PIN_SLP(gpa0-1, OUT0, NONE);
		PIN_SLP(gpa0-2, INPUT, NONE);
		PIN_SLP(gpa0-3, INPUT, UP);
		PIN_SLP(gpa0-4, INPUT, NONE);
		PIN_SLP(gpa0-5, INPUT, DOWN);
		PIN_SLP(gpa0-6, INPUT, DOWN);
		PIN_SLP(gpa0-7, INPUT, UP);

		PIN_SLP(gpa1-0, INPUT, DOWN);
		PIN_SLP(gpa1-1, INPUT, DOWN);
		PIN_SLP(gpa1-2, INPUT, DOWN);
		PIN_SLP(gpa1-3, INPUT, DOWN);
		PIN_SLP(gpa1-4, INPUT, DOWN);
		PIN_SLP(gpa1-5, INPUT, DOWN);

		PIN_SLP(gpb-0, INPUT, NONE);
		PIN_SLP(gpb-1, INPUT, NONE);
		PIN_SLP(gpb-2, INPUT, NONE);
		PIN_SLP(gpb-3, INPUT, NONE);
		PIN_SLP(gpb-4, INPUT, DOWN);
		PIN_SLP(gpb-5, INPUT, UP);
		PIN_SLP(gpb-6, INPUT, DOWN);
		PIN_SLP(gpb-7, INPUT, DOWN);

		PIN_SLP(gpc0-0, INPUT, DOWN);
		PIN_SLP(gpc0-1, INPUT, DOWN);
		PIN_SLP(gpc0-2, INPUT, DOWN);
		PIN_SLP(gpc0-3, INPUT, DOWN);
		PIN_SLP(gpc0-4, INPUT, DOWN);

		PIN_SLP(gpc1-0, INPUT, NONE);
		PIN_SLP(gpc1-1, PREV, NONE);
		PIN_SLP(gpc1-2, INPUT, NONE);
		PIN_SLP(gpc1-3, INPUT, NONE);
		PIN_SLP(gpc1-4, INPUT, NONE);

		PIN_SLP(gpd0-0, INPUT, DOWN);
		PIN_SLP(gpd0-1, INPUT, DOWN);
		PIN_SLP(gpd0-2, INPUT, NONE);
		PIN_SLP(gpd0-3, INPUT, NONE);

		PIN_SLP(gpd1-0, INPUT, DOWN);
		PIN_SLP(gpd1-1, INPUT, DOWN);
		PIN_SLP(gpd1-2, INPUT, NONE);
		PIN_SLP(gpd1-3, INPUT, NONE);

		PIN_SLP(gpf0-0, INPUT, NONE);
		PIN_SLP(gpf0-1, INPUT, NONE);
		PIN_SLP(gpf0-2, INPUT, DOWN);
		PIN_SLP(gpf0-3, INPUT, DOWN);
		PIN_SLP(gpf0-4, INPUT, NONE);
		PIN_SLP(gpf0-5, INPUT, DOWN);
		PIN_SLP(gpf0-6, INPUT, NONE);
		PIN_SLP(gpf0-7, INPUT, DOWN);

		PIN_SLP(gpf1-0, INPUT, DOWN);
		PIN_SLP(gpf1-1, INPUT, DOWN);
		PIN_SLP(gpf1-2, INPUT, DOWN);
		PIN_SLP(gpf1-3, INPUT, DOWN);
		PIN_SLP(gpf1-4, INPUT, NONE);
		PIN_SLP(gpf1-5, INPUT, NONE);
		PIN_SLP(gpf1-6, INPUT, DOWN);
		PIN_SLP(gpf1-7, PREV, NONE);

		PIN_SLP(gpf2-0, PREV, NONE);
		PIN_SLP(gpf2-1, INPUT, DOWN);
		PIN_SLP(gpf2-2, INPUT, DOWN);
		PIN_SLP(gpf2-3, INPUT, DOWN);
		PIN_SLP(gpf2-4, INPUT, DOWN);
		PIN_SLP(gpf2-5, INPUT, DOWN);
		PIN_SLP(gpf2-6, INPUT, NONE);
		PIN_SLP(gpf2-7, INPUT, NONE);

		PIN_SLP(gpf3-0, INPUT, NONE);
		PIN_SLP(gpf3-1, PREV, NONE);
		PIN_SLP(gpf3-2, PREV, NONE);
		PIN_SLP(gpf3-3, PREV, NONE);
		PIN_SLP(gpf3-4, OUT1, NONE);
		PIN_SLP(gpf3-5, INPUT, DOWN);

		PIN_SLP(gpj0-0, PREV, NONE);
		PIN_SLP(gpj0-1, PREV, NONE);
		PIN_SLP(gpj0-2, PREV, NONE);
		PIN_SLP(gpj0-3, INPUT, DOWN);
		PIN_SLP(gpj0-4, PREV, NONE);
		PIN_SLP(gpj0-5, PREV, NONE);
		PIN_SLP(gpj0-6, INPUT, DOWN);
		PIN_SLP(gpj0-7, INPUT, DOWN);

		PIN_SLP(gpj1-0, INPUT, DOWN);
		PIN_SLP(gpj1-1, PREV, NONE);
		PIN_SLP(gpj1-2, PREV, NONE);
		PIN_SLP(gpj1-3, INPUT, DOWN);
		PIN_SLP(gpj1-4, INPUT, DOWN);
	};
};

&pinctrl_1 {
	pinctrl-names = "default";
	pinctrl-0 = <&sleep1>;

	gpio_keys: gpio-keys-pins {
		samsung,pins = "gpx0-1", "gpx2-2", "gpx2-7", "gpx3-3";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	bt_shutdown: bt-shutdown-pins {
		samsung,pins = "gpl0-6";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	bt_host_wakeup: bt-host-wakeup-pins {
		samsung,pins = "gpx2-6";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	bt_device_wakeup: bt-device-wakeup-pins {
		samsung,pins = "gpx3-1";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	max77686_irq: max77686-irq-pins {
		samsung,pins = "gpx0-7";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	max77693_irq: max77693-irq-pins {
		samsung,pins = "gpx1-5";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	max77693_fuel_irq: max77693-fuel-irq-pins {
		samsung,pins = "gpx2-3";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	sdhci2_cd: sdhci2-cd-irq-pins {
		samsung,pins = "gpx3-4";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	hdmi_hpd: hdmi-hpd-pins {
		samsung,pins = "gpx3-7";
		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
	};

	sleep1: sleep-state {
		PIN_SLP(gpk0-0, PREV, NONE);
		PIN_SLP(gpk0-1, PREV, NONE);
		PIN_SLP(gpk0-2, OUT0, NONE);
		PIN_SLP(gpk0-3, PREV, NONE);
		PIN_SLP(gpk0-4, PREV, NONE);
		PIN_SLP(gpk0-5, PREV, NONE);
		PIN_SLP(gpk0-6, PREV, NONE);

		PIN_SLP(gpk1-0, INPUT, DOWN);
		PIN_SLP(gpk1-1, INPUT, DOWN);
		PIN_SLP(gpk1-2, INPUT, DOWN);
		PIN_SLP(gpk1-3, PREV, NONE);
		PIN_SLP(gpk1-4, PREV, NONE);
		PIN_SLP(gpk1-5, PREV, NONE);
		PIN_SLP(gpk1-6, PREV, NONE);

		PIN_SLP(gpk2-0, INPUT, DOWN);
		PIN_SLP(gpk2-1, INPUT, DOWN);
		PIN_SLP(gpk2-2, INPUT, DOWN);
		PIN_SLP(gpk2-3, INPUT, DOWN);
		PIN_SLP(gpk2-4, INPUT, DOWN);
		PIN_SLP(gpk2-5, INPUT, DOWN);
		PIN_SLP(gpk2-6, INPUT, DOWN);

		PIN_SLP(gpk3-0, OUT0, NONE);
		PIN_SLP(gpk3-1, INPUT, NONE);
		PIN_SLP(gpk3-2, INPUT, DOWN);
		PIN_SLP(gpk3-3, INPUT, NONE);
		PIN_SLP(gpk3-4, INPUT, NONE);
		PIN_SLP(gpk3-5, INPUT, NONE);
		PIN_SLP(gpk3-6, INPUT, NONE);

		PIN_SLP(gpl0-0, INPUT, DOWN);
		PIN_SLP(gpl0-1, INPUT, DOWN);
		PIN_SLP(gpl0-2, INPUT, DOWN);
		PIN_SLP(gpl0-3, INPUT, DOWN);
		PIN_SLP(gpl0-4, PREV, NONE);
		PIN_SLP(gpl0-6, PREV, NONE);

		PIN_SLP(gpl1-0, INPUT, DOWN);
		PIN_SLP(gpl1-1, INPUT, DOWN);
		PIN_SLP(gpl2-0, INPUT, DOWN);
		PIN_SLP(gpl2-1, INPUT, DOWN);
		PIN_SLP(gpl2-2, INPUT, DOWN);
		PIN_SLP(gpl2-3, INPUT, DOWN);
		PIN_SLP(gpl2-4, INPUT, DOWN);
		PIN_SLP(gpl2-5, INPUT, DOWN);
		PIN_SLP(gpl2-6, PREV, NONE);
		PIN_SLP(gpl2-7, INPUT, DOWN);

		PIN_SLP(gpm0-0, INPUT, DOWN);
		PIN_SLP(gpm0-1, INPUT, DOWN);
		PIN_SLP(gpm0-2, INPUT, DOWN);
		PIN_SLP(gpm0-3, INPUT, DOWN);
		PIN_SLP(gpm0-4, INPUT, DOWN);
		PIN_SLP(gpm0-5, INPUT, DOWN);
		PIN_SLP(gpm0-6, INPUT, DOWN);
		PIN_SLP(gpm0-7, INPUT, DOWN);

		PIN_SLP(gpm1-0, INPUT, DOWN);
		PIN_SLP(gpm1-1, INPUT, DOWN);
		PIN_SLP(gpm1-2, INPUT, NONE);
		PIN_SLP(gpm1-3, INPUT, NONE);
		PIN_SLP(gpm1-4, INPUT, NONE);
		PIN_SLP(gpm1-5, INPUT, NONE);
		PIN_SLP(gpm1-6, INPUT, DOWN);

		PIN_SLP(gpm2-0, INPUT, NONE);
		PIN_SLP(gpm2-1, INPUT, NONE);
		PIN_SLP(gpm2-2, INPUT, DOWN);
		PIN_SLP(gpm2-3, INPUT, DOWN);
		PIN_SLP(gpm2-4, INPUT, DOWN);

		PIN_SLP(gpm3-0, PREV, NONE);
		PIN_SLP(gpm3-1, PREV, NONE);
		PIN_SLP(gpm3-2, PREV, NONE);
		PIN_SLP(gpm3-3, OUT1, NONE);
		PIN_SLP(gpm3-4, INPUT, DOWN);
		PIN_SLP(gpm3-5, INPUT, DOWN);
		PIN_SLP(gpm3-6, INPUT, DOWN);
		PIN_SLP(gpm3-7, INPUT, DOWN);

		PIN_SLP(gpm4-0, INPUT, DOWN);
		PIN_SLP(gpm4-1, INPUT, DOWN);
		PIN_SLP(gpm4-2, INPUT, DOWN);
		PIN_SLP(gpm4-3, INPUT, DOWN);
		PIN_SLP(gpm4-4, INPUT, DOWN);
		PIN_SLP(gpm4-5, INPUT, DOWN);
		PIN_SLP(gpm4-6, INPUT, DOWN);
		PIN_SLP(gpm4-7, INPUT, DOWN);

		PIN_SLP(gpy0-0, INPUT, DOWN);
		PIN_SLP(gpy0-1, INPUT, DOWN);
		PIN_SLP(gpy0-2, INPUT, DOWN);
		PIN_SLP(gpy0-3, INPUT, DOWN);
		PIN_SLP(gpy0-4, INPUT, DOWN);
		PIN_SLP(gpy0-5, INPUT, DOWN);

		PIN_SLP(gpy1-0, INPUT, DOWN);
		PIN_SLP(gpy1-1, INPUT, DOWN);
		PIN_SLP(gpy1-2, INPUT, DOWN);
		PIN_SLP(gpy1-3, INPUT, DOWN);

		PIN_SLP(gpy2-0, PREV, NONE);
		PIN_SLP(gpy2-1, INPUT, DOWN);
		PIN_SLP(gpy2-2, INPUT, NONE);
		PIN_SLP(gpy2-3, INPUT, NONE);
		PIN_SLP(gpy2-4, INPUT, NONE);
		PIN_SLP(gpy2-5, INPUT, NONE);

		PIN_SLP(gpy3-0, INPUT, DOWN);
		PIN_SLP(gpy3-1, INPUT, DOWN);
		PIN_SLP(gpy3-2, INPUT, DOWN);
		PIN_SLP(gpy3-3, INPUT, DOWN);
		PIN_SLP(gpy3-4, INPUT, DOWN);
		PIN_SLP(gpy3-5, INPUT, DOWN);
		PIN_SLP(gpy3-6, INPUT, DOWN);
		PIN_SLP(gpy3-7, INPUT, DOWN);

		PIN_SLP(gpy4-0, INPUT, DOWN);
		PIN_SLP(gpy4-1, INPUT, DOWN);
		PIN_SLP(gpy4-2, INPUT, DOWN);
		PIN_SLP(gpy4-3, INPUT, DOWN);
		PIN_SLP(gpy4-4, INPUT, DOWN);
		PIN_SLP(gpy4-5, INPUT, DOWN);
		PIN_SLP(gpy4-6, INPUT, DOWN);
		PIN_SLP(gpy4-7, INPUT, DOWN);

		PIN_SLP(gpy5-0, INPUT, DOWN);
		PIN_SLP(gpy5-1, INPUT, DOWN);
		PIN_SLP(gpy5-2, INPUT, DOWN);
		PIN_SLP(gpy5-3, INPUT, DOWN);
		PIN_SLP(gpy5-4, INPUT, DOWN);
		PIN_SLP(gpy5-5, INPUT, DOWN);
		PIN_SLP(gpy5-6, INPUT, DOWN);
		PIN_SLP(gpy5-7, INPUT, DOWN);

		PIN_SLP(gpy6-0, INPUT, DOWN);
		PIN_SLP(gpy6-1, INPUT, DOWN);
		PIN_SLP(gpy6-2, INPUT, DOWN);
		PIN_SLP(gpy6-3, INPUT, DOWN);
		PIN_SLP(gpy6-4, INPUT, DOWN);
		PIN_SLP(gpy6-5, INPUT, DOWN);
		PIN_SLP(gpy6-6, INPUT, DOWN);
		PIN_SLP(gpy6-7, INPUT, DOWN);
	};
};

&pinctrl_2 {
	pinctrl-names = "default";
	pinctrl-0 = <&sleep2>;

	sleep2: sleep-state {
		PIN_SLP(gpz-0, INPUT, DOWN);
		PIN_SLP(gpz-1, INPUT, DOWN);
		PIN_SLP(gpz-2, INPUT, DOWN);
		PIN_SLP(gpz-3, INPUT, DOWN);
		PIN_SLP(gpz-4, INPUT, DOWN);
		PIN_SLP(gpz-5, INPUT, DOWN);
		PIN_SLP(gpz-6, INPUT, DOWN);
	};
};

&pinctrl_3 {
	pinctrl-names = "default";
	pinctrl-0 = <&sleep3>;

	sleep3: sleep-state {
		PIN_SLP(gpv0-0, INPUT, DOWN);
		PIN_SLP(gpv0-1, INPUT, DOWN);
		PIN_SLP(gpv0-2, INPUT, DOWN);
		PIN_SLP(gpv0-3, INPUT, DOWN);
		PIN_SLP(gpv0-4, INPUT, DOWN);
		PIN_SLP(gpv0-5, INPUT, DOWN);
		PIN_SLP(gpv0-6, INPUT, DOWN);
		PIN_SLP(gpv0-7, INPUT, DOWN);

		PIN_SLP(gpv1-0, INPUT, DOWN);
		PIN_SLP(gpv1-1, INPUT, DOWN);
		PIN_SLP(gpv1-2, INPUT, DOWN);
		PIN_SLP(gpv1-3, INPUT, DOWN);
		PIN_SLP(gpv1-4, INPUT, DOWN);
		PIN_SLP(gpv1-5, INPUT, DOWN);
		PIN_SLP(gpv1-6, INPUT, DOWN);
		PIN_SLP(gpv1-7, INPUT, DOWN);

		PIN_SLP(gpv2-0, INPUT, DOWN);
		PIN_SLP(gpv2-1, INPUT, DOWN);
		PIN_SLP(gpv2-2, INPUT, DOWN);
		PIN_SLP(gpv2-3, INPUT, DOWN);
		PIN_SLP(gpv2-4, INPUT, DOWN);
		PIN_SLP(gpv2-5, INPUT, DOWN);
		PIN_SLP(gpv2-6, INPUT, DOWN);
		PIN_SLP(gpv2-7, INPUT, DOWN);

		PIN_SLP(gpv3-0, INPUT, DOWN);
		PIN_SLP(gpv3-1, INPUT, DOWN);
		PIN_SLP(gpv3-2, INPUT, DOWN);
		PIN_SLP(gpv3-3, INPUT, DOWN);
		PIN_SLP(gpv3-4, INPUT, DOWN);
		PIN_SLP(gpv3-5, INPUT, DOWN);
		PIN_SLP(gpv3-6, INPUT, DOWN);
		PIN_SLP(gpv3-7, INPUT, DOWN);

		PIN_SLP(gpv4-0, INPUT, DOWN);
	};
};

&pwm {
	pinctrl-0 = <&pwm0_out>;
	pinctrl-names = "default";
	samsung,pwm-outputs = <0>;
	status = "okay";
};

&rtc {
	status = "okay";
	clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
	clock-names = "rtc", "rtc_src";
};

&sdhci_2 {
	bus-width = <4>;
	cd-gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sdhci2_cd>;
	pinctrl-names = "default";
	vmmc-supply = <&ldo21_reg>;
	status = "okay";
};

&sdhci_3 {
	#address-cells = <1>;
	#size-cells = <0>;
	non-removable;
	bus-width = <4>;

	mmc-pwrseq = <&wlan_pwrseq>;
	pinctrl-names = "default";
	pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
	status = "okay";

	brcmf: wifi@1 {
		reg = <1>;
		compatible = "brcm,bcm4329-fmac";
		interrupt-parent = <&gpx2>;
		interrupts = <5 IRQ_TYPE_NONE>;
		interrupt-names = "host-wake";
	};
};

&serial_0 {
	pinctrl-0 = <&uart0_data &uart0_fctl>;
	pinctrl-names = "default";
	status = "okay";

	bluetooth {
		compatible = "brcm,bcm4330-bt";
		pinctrl-0 = <&bt_shutdown &bt_device_wakeup &bt_host_wakeup>;
		pinctrl-names = "default";
		max-speed = <3000000>;
		shutdown-gpios = <&gpl0 6 GPIO_ACTIVE_HIGH>;
		device-wakeup-gpios = <&gpx3 1 GPIO_ACTIVE_HIGH>;
		host-wakeup-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
		clocks = <&max77686 MAX77686_CLK_PMIC>;
	};
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

&spi_1 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi1_bus>;
	cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
	status = "okay";

	s5c73m3_spi: image-sensor@0 {
		compatible = "samsung,s5c73m3";
		spi-max-frequency = <50000000>;
		reg = <0>;
		controller-data {
			samsung,spi-feedback-delay = <2>;
		};
	};
};

&tmu {
	vtmu-supply = <&ldo10_reg>;
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "exynos4412-midas.dtsi"

/ {
	compatible = "samsung,n710x", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
	model = "Samsung Galaxy Note 2 (GT-N7100, GT-N7105) based on Exynos4412";
	chassis-type = "handset";

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

	/* bootargs are passed in by bootloader */

	cam_vdda_reg: voltage-regulator-10 {
		compatible = "regulator-fixed";
		regulator-name = "CAM_SENSOR_CORE_1.2V";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		gpio = <&gpm4 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
};

&buck9_reg {
	maxim,ena-gpios = <&gpm1 0 GPIO_ACTIVE_HIGH>;
};

&cam_af_reg {
	gpio = <&gpm1 1 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&cam_io_reg {
	gpio = <&gpm0 7 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&i2c_3 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <400000>;
	pinctrl-0 = <&i2c3_bus>;
	pinctrl-names = "default";
	status = "okay";

	touchscreen@48 {
		compatible = "melfas,mms152";
		reg = <0x48>;
		interrupt-parent = <&gpm2>;
		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-size-x = <720>;
		touchscreen-size-y = <1280>;
		avdd-supply = <&ldo23_reg>;
		vdd-supply = <&ldo24_reg>;
	};
};

&ldo13_reg {
	regulator-name = "VCC_1.8V_LCD";
	regulator-always-on;
};

&ldo25_reg {
	regulator-name = "VCI_3.0V_LCD";
	regulator-min-microvolt = <3000000>;
	regulator-max-microvolt = <3000000>;
};

&s5c73m3 {
	standby-gpios = <&gpm0 6 GPIO_ACTIVE_LOW>;   /* ISP_STANDBY */
	vdda-supply = <&cam_vdda_reg>;
	status = "okay";
};

&sound {
	samsung,audio-routing =
		"HP", "HPOUT1L",
		"HP", "HPOUT1R",

		"SPK", "SPKOUTLN",
		"SPK", "SPKOUTLP",

		"RCV", "HPOUT2N",
		"RCV", "HPOUT2P",

		"HDMI", "LINEOUT1N",
		"HDMI", "LINEOUT1P",

		"LINE", "LINEOUT2N",
		"LINE", "LINEOUT2P",

		"IN1LP", "MICBIAS2",
		"IN1LN", "MICBIAS2",
		"Headset Mic", "MICBIAS2",

		"IN1RP", "Sub Mic",
		"IN1RN", "Sub Mic",

		"IN2LP:VXRN", "Main Mic",
		"IN2LN", "Main Mic",

		"IN2RN", "FM In",
		"IN2RP:VXRP", "FM In";
};

&submic_bias_reg {
	regulator-always-on;
};

&touchkey_reg {
	gpio = <&gpm0 5 GPIO_ACTIVE_HIGH>;
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards
 * device tree source
 */

#include <dt-bindings/sound/samsung-i2s.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/clock/maxim,max77686.h>
#include "exynos4412.dtsi"
#include "exynos4412-ppmu-common.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include "exynos-mfc-reserved-memory.dtsi"

/ {
	chosen {
		stdout-path = &serial_1;
	};

	firmware@204f000 {
		compatible = "samsung,secure-firmware";
		reg = <0x0204F000 0x1000>;
	};

	gpio_keys: gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_power_key>;

		power-key {
			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			label = "power key";
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	sound: sound {
		compatible = "hardkernel,odroid-xu4-audio";

		cpu {
			sound-dai = <&i2s0 0>;
		};

		codec {
			sound-dai = <&hdmi>, <&max98090>;
		};
	};

	emmc_pwrseq: pwrseq {
		pinctrl-0 = <&emmc_rstn>;
		pinctrl-names = "default";
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>;
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};
};

&bus_dmc {
	devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
	vdd-supply = <&buck1_reg>;
	status = "okay";
};

&bus_acp {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_c2c {
	devfreq = <&bus_dmc>;
	status = "okay";
};

&bus_leftbus {
	devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
	vdd-supply = <&buck3_reg>;
	status = "okay";
};

&bus_rightbus {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_display {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_fsys {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_peri {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

&bus_mfc {
	devfreq = <&bus_leftbus>;
	status = "okay";
};

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

&clock {
	clocks = <&clock CLK_XUSBXTI>;
	assigned-clocks = <&clock CLK_FOUT_EPLL>;
	assigned-clock-rates = <45158401>;
};

&clock_audss {
	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
			<&clock_audss EXYNOS_MOUT_I2S>,
			<&clock_audss EXYNOS_DOUT_SRP>,
			<&clock_audss EXYNOS_DOUT_AUD_BUS>,
			<&clock_audss EXYNOS_DOUT_I2S>;

	assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
			  <&clock_audss EXYNOS_MOUT_AUDSS>;

	assigned-clock-rates = <0>, <0>,
			<196608001>,
			<(196608001 / 2)>,
			<(196608001 / 8)>;
};

&cpu0 {
	cpu0-supply = <&buck2_reg>;
};

&cpu0_opp_table {
	opp-1000000000 {
		opp-suspend;
	};
	opp-800000000 {
		/delete-property/opp-suspend;
	};
};

&cpu_thermal {
	cooling-maps {
		cooling_map0: map0 {
			/* Corresponds to 800MHz at freq_table */
			cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
					 <&cpu2 7 7>, <&cpu3 7 7>;
		};
		cooling_map1: map1 {
			/* Corresponds to 200MHz at freq_table */
			cooling-device = <&cpu0 13 13>, <&cpu1 13 13>,
					 <&cpu2 13 13>, <&cpu3 13 13>;
		};
	};
};

&pinctrl_1 {
	gpio_power_key: power-key-pins {
		samsung,pins = "gpx1-3";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	max77686_irq: max77686-irq-pins {
		samsung,pins = "gpx3-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	hdmi_hpd: hdmi-hpd-pins {
		samsung,pins = "gpx3-7";
		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
	};

	emmc_rstn: emmc-rstn-pins {
		samsung,pins = "gpk1-2";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};
};

&ehci {
	status = "okay";
};

&exynos_usbphy {
	status = "okay";
};

&fimc_0 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC0>,
			<&clock CLK_SCLK_FIMC0>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_1 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC1>,
			<&clock CLK_SCLK_FIMC1>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_2 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC2>,
			<&clock CLK_SCLK_FIMC2>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&fimc_3 {
	status = "okay";
	assigned-clocks = <&clock CLK_MOUT_FIMC3>,
			<&clock CLK_SCLK_FIMC3>;
	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
	assigned-clock-rates = <0>, <176000000>;
};

&gpu {
	mali-supply = <&buck4_reg>;
	status = "okay";
};

&hdmi {
	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&hdmi_hpd>;
	vdd-supply = <&ldo8_reg>;
	vdd_osc-supply = <&ldo10_reg>;
	vdd_pll-supply = <&ldo8_reg>;
	ddc = <&i2c_2>;
	status = "okay";
};

&hdmicec {
	status = "okay";
};

&hsotg {
	status = "okay";
	vusb_d-supply = <&ldo15_reg>;
	vusb_a-supply = <&ldo12_reg>;
};

&i2c_0 {
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <400000>;
	status = "okay";

	usb3503: usb-hub@8 {
		compatible = "smsc,usb3503";
		reg = <0x08>;

		intn-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
		connect-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
		initial-mode = <1>;
	};

	max77686: pmic@9 {
		compatible = "maxim,max77686";
		interrupt-parent = <&gpx3>;
		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&max77686_irq>;
		wakeup-source;
		reg = <0x09>;
		#clock-cells = <1>;

		voltage-regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ALIVE_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDDQ_M1_2_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo3_reg: LDO3 {
				regulator-name = "VDDQ_EXT_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo4_reg: LDO4 {
				regulator-name = "VDDQ_MMC2_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-boot-on;
			};

			ldo5_reg: LDO5 {
				regulator-name = "VDDQ_MMC1_3_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo6_reg: LDO6 {
				regulator-name = "VDD10_MPLL_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			ldo7_reg: LDO7 {
				regulator-name = "VDD10_XPLL_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			ldo8_reg: LDO8 {
				regulator-name = "VDD10_HDMI_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
			};

			ldo10_reg: LDO10 {
				regulator-name = "VDDQ_MIPIHSI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo11_reg: LDO11 {
				regulator-name = "VDD18_ABB1_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo12_reg: LDO12 {
				regulator-name = "VDD33_USB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo13_reg: LDO13 {
				regulator-name = "VDDQ_C2C_W_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo14_reg: LDO14 {
				regulator-name = "VDD18_ABB0_2_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo15_reg: LDO15 {
				regulator-name = "VDD10_HSIC_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo16_reg: LDO16 {
				regulator-name = "VDD18_HSIC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo20_reg: LDO20 {
				regulator-name = "LDO20_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo21_reg: LDO21 {
				regulator-name = "TFLASH_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-boot-on;
			};

			ldo22_reg: LDO22 {
				/*
				 * Only U3 uses it, so let it define the
				 * constraints
				 */
				regulator-name = "LDO22";
				regulator-boot-on;
			};

			ldo25_reg: LDO25 {
				regulator-name = "VDDQ_LCD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VDD_MIF";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "VDD_ARM";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck3_reg: BUCK3 {
				regulator-name = "VDD_INT";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1050000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck4_reg: BUCK4 {
				regulator-name = "VDD_G3D";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
				regulator-microvolt-offset = <50000>;
			};

			buck5_reg: BUCK5 {
				regulator-name = "VDDQ_CKEM1_2_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck6_reg: BUCK6 {
				regulator-name = "BUCK6_1.35V";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck7_reg: BUCK7 {
				regulator-name = "BUCK7_2.0V";
				regulator-min-microvolt = <2000000>;
				regulator-max-microvolt = <2000000>;
				regulator-always-on;
			};

			buck8_reg: BUCK8 {
				/*
				 * Constraints set by specific board: X,
				 * X2 and U3.
				 */
				regulator-name = "BUCK8_2.8V";
			};
		};
	};
};

&i2c_1 {
	status = "okay";
	max98090: audio-codec@10 {
		compatible = "maxim,max98090";
		reg = <0x10>;
		interrupt-parent = <&gpx0>;
		interrupts = <0 IRQ_TYPE_NONE>;
		clocks = <&i2s0 CLK_I2S_CDCLK>;
		clock-names = "mclk";
		#sound-dai-cells = <0>;
	};
};

&i2c_2 {
	status = "okay";
};

&i2c_8 {
	status = "okay";
};

&i2s0 {
	pinctrl-0 = <&i2s0_bus>;
	pinctrl-names = "default";
	status = "okay";
	assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
	assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
};

&mixer {
	status = "okay";
};

&mshc_0 {
	pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
	pinctrl-names = "default";
	vmmc-supply = <&ldo20_reg>;
	mmc-pwrseq = <&emmc_pwrseq>;
	status = "okay";

	broken-cd;
	card-detect-delay = <200>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <2 3>;
	samsung,dw-mshc-ddr-timing = <1 2>;
	bus-width = <8>;
	cap-mmc-highspeed;
};

&rtc {
	status = "okay";
	clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
	clock-names = "rtc", "rtc_src";
};

&sdhci_2 {
	bus-width = <4>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
	pinctrl-names = "default";
	vmmc-supply = <&ldo21_reg>;
	vqmmc-supply = <&ldo4_reg>;
	cd-gpios = <&gpk2 2 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&serial_0 {
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&tmu {
	vtmu-supply = <&ldo10_reg>;
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Hardkernel's Exynos4412 based ODROID-U3 board device tree source
 *
 * Copyright (c) 2014 Marek Szyprowski <m.szyprowski@samsung.com>
 *
 * Device tree source file for Hardkernel's ODROID-U3 board which is based
 * on Samsung's Exynos4412 SoC.
 */

/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "exynos4412-odroid-common.dtsi"
#include "exynos4412-prime.dtsi"

/ {
	model = "Hardkernel ODROID-U3 board based on Exynos4412";
	compatible = "hardkernel,odroid-u3", "samsung,exynos4412", "samsung,exynos4";

	aliases {
		ethernet = &ethernet;
	};

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

	vbus_otg_reg: regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "VBUS_VDD_5.0V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpl2 0 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	leds {
		compatible = "gpio-leds";
		led1 {
			function = LED_FUNCTION_HEARTBEAT;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpc1 0 GPIO_ACTIVE_LOW>;
			default-state = "on";
			linux,default-trigger = "heartbeat";
		};
	};

	fan0: pwm-fan {
		compatible = "pwm-fan";
		pwms = <&pwm 0 10000 0>;
		#cooling-cells = <2>;
		cooling-levels = <0 102 170 230>;
	};
};

&adc {
	vdd-supply = <&ldo10_reg>;
	/* Nothing connected to ADC inputs, keep it disabled */
};

/* Supply for LAN9730/SMSC95xx */
&buck8_reg {
	regulator-name = "BUCK8_P3V3";
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
};

&cpu_thermal {
	cooling-maps {
		map0 {
			trip = <&cpu_alert1>;
			cooling-device = <&cpu0 9 9>, <&cpu1 9 9>,
					 <&cpu2 9 9>, <&cpu3 9 9>,
					 <&fan0 1 2>;
		};
		map1 {
			trip = <&cpu_alert2>;
			cooling-device = <&cpu0 15 15>, <&cpu1 15 15>,
					 <&cpu2 15 15>, <&cpu3 15 15>,
					 <&fan0 2 3>;
		};
		map2 {
			trip = <&cpu_alert0>;
			cooling-device = <&fan0 0 1>;
		};
	};
};

&hdmicec {
	needs-hpd;
};

/* VDDQ for MSHC (eMMC card) */
&ldo22_reg {
	regulator-name = "LDO22_VDDQ_MMC4_2.8V";
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <2800000>;
};

&mshc_0 {
	vqmmc-supply = <&ldo22_reg>;
};

&pwm {
	pinctrl-0 = <&pwm0_out>;
	pinctrl-names = "default";
	samsung,pwm-outputs = <0>;
	status = "okay";
};

&usb3503 {
	clock-names = "refclk";
	clocks = <&pmu_system_controller 0>;
	refclk-frequency = <24000000>;
};

&ehci {
	#address-cells = <1>;
	#size-cells = <0>;
	phys = <&exynos_usbphy 2>, <&exynos_usbphy 3>;
	phy-names = "hsic0", "hsic1";

	ethernet: ethernet@2 {
		compatible = "usb424,9730";
		reg = <2>;
		local-mac-address = [00 00 00 00 00 00]; /* Filled in by a bootloader */
	};
};

&hsotg {
	dr_mode = "otg";
	vbus-supply = <&vbus_otg_reg>;
};

&sound {
	model = "Odroid-U3";
	samsung,audio-widgets =
		"Headphone", "Headphone Jack",
		"Speakers", "Speakers";
	samsung,audio-routing =
		"Headphone Jack", "HPL",
		"Headphone Jack", "HPR",
		"Headphone Jack", "MICBIAS",
		"IN1", "Headphone Jack",
		"Speakers", "SPKL",
		"Speakers", "SPKR";
};

&spi_1 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi1_bus>;
	cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
	status = "okay";
};