code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4 SoC series common 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 Exynos4 SoC series device nodes are listed in this file.  Particular
 * SoCs from Exynos4 series can include this file and provide values for SoCs
 * specfic bindings.
 *
 * Note: This file does not include device nodes for all the controllers in
 * Exynos4 SoCs. As device tree coverage for Exynos4 increases, additional
 * nodes can be added to this file.
 */

#include <dt-bindings/clock/exynos4.h>
#include <dt-bindings/clock/exynos-audss-clk.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	interrupt-parent = <&gic>;
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		spi0 = &spi_0;
		spi1 = &spi_1;
		spi2 = &spi_2;
		i2c0 = &i2c_0;
		i2c1 = &i2c_1;
		i2c2 = &i2c_2;
		i2c3 = &i2c_3;
		i2c4 = &i2c_4;
		i2c5 = &i2c_5;
		i2c6 = &i2c_6;
		i2c7 = &i2c_7;
		i2c8 = &i2c_8;
		csis0 = &csis_0;
		csis1 = &csis_1;
		fimc0 = &fimc_0;
		fimc1 = &fimc_1;
		fimc2 = &fimc_2;
		fimc3 = &fimc_3;
		serial0 = &serial_0;
		serial1 = &serial_1;
		serial2 = &serial_2;
		serial3 = &serial_3;
	};

	pmu: pmu {
		compatible = "arm,cortex-a9-pmu";
		interrupt-parent = <&combiner>;
		status = "disabled";
	};

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

		clock_audss: clock-controller@3810000 {
			compatible = "samsung,exynos4210-audss-clock";
			reg = <0x03810000 0x0C>;
			#clock-cells = <1>;
			clocks = <&clock CLK_FIN_PLL>, <&clock CLK_FOUT_EPLL>,
				 <&clock CLK_SCLK_AUDIO0>,
				 <&clock CLK_SCLK_AUDIO0>;
			clock-names = "pll_ref", "pll_in", "sclk_audio",
				      "sclk_pcm_in";
		};

		i2s0: i2s@3830000 {
			compatible = "samsung,s5pv210-i2s";
			reg = <0x03830000 0x100>;
			clocks = <&clock_audss EXYNOS_I2S_BUS>,
				 <&clock_audss EXYNOS_DOUT_AUD_BUS>,
				 <&clock_audss EXYNOS_SCLK_I2S>;
			clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
			#clock-cells = <1>;
			clock-output-names = "i2s_cdclk0";
			dmas = <&pdma0 12>, <&pdma0 11>, <&pdma0 10>;
			dma-names = "tx", "rx", "tx-sec";
			samsung,idma-addr = <0x03000000>;
			#sound-dai-cells = <1>;
			status = "disabled";
		};

		chipid@10000000 {
			compatible = "samsung,exynos4210-chipid";
			reg = <0x10000000 0x100>;
		};

		scu: snoop-control-unit@10500000 {
			compatible = "arm,cortex-a9-scu";
			reg = <0x10500000 0x2000>;
		};

		memory-controller@12570000 {
			compatible = "samsung,exynos4210-srom";
			reg = <0x12570000 0x14>;
		};

		mipi_phy: video-phy {
			compatible = "samsung,s5pv210-mipi-video-phy";
			#phy-cells = <1>;
			syscon = <&pmu_system_controller>;
		};

		pd_mfc: power-domain@10023c40 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023C40 0x20>;
			#power-domain-cells = <0>;
			label = "MFC";
		};

		pd_g3d: power-domain@10023c60 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023C60 0x20>;
			#power-domain-cells = <0>;
			label = "G3D";
		};

		pd_lcd0: power-domain@10023c80 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023C80 0x20>;
			#power-domain-cells = <0>;
			label = "LCD0";
		};

		pd_tv: power-domain@10023c20 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023C20 0x20>;
			#power-domain-cells = <0>;
			power-domains = <&pd_lcd0>;
			label = "TV";
		};

		pd_cam: power-domain@10023c00 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023C00 0x20>;
			#power-domain-cells = <0>;
			label = "CAM";
		};

		pd_gps: power-domain@10023ce0 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023CE0 0x20>;
			#power-domain-cells = <0>;
			label = "GPS";
		};

		pd_gps_alive: power-domain@10023d00 {
			compatible = "samsung,exynos4210-pd";
			reg = <0x10023D00 0x20>;
			#power-domain-cells = <0>;
			label = "GPS alive";
		};

		gic: interrupt-controller@10490000 {
			compatible = "arm,cortex-a9-gic";
			#interrupt-cells = <3>;
			interrupt-controller;
			reg = <0x10490000 0x10000>, <0x10480000 0x10000>;
		};

		combiner: interrupt-controller@10440000 {
			compatible = "samsung,exynos4210-combiner";
			#interrupt-cells = <2>;
			interrupt-controller;
			reg = <0x10440000 0x1000>;
		};

		sys_reg: syscon@10010000 {
			compatible = "samsung,exynos4-sysreg", "syscon";
			reg = <0x10010000 0x400>;
		};

		pmu_system_controller: system-controller@10020000 {
			compatible = "samsung,exynos4210-pmu", "syscon";
			reg = <0x10020000 0x4000>;
			interrupt-controller;
			#interrupt-cells = <3>;
			interrupt-parent = <&gic>;
		};

		dsi_0: dsi@11c80000 {
			compatible = "samsung,exynos4210-mipi-dsi";
			reg = <0x11C80000 0x10000>;
			interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
			power-domains = <&pd_lcd0>;
			phys = <&mipi_phy 1>;
			phy-names = "dsim";
			clocks = <&clock CLK_DSIM0>, <&clock CLK_SCLK_MIPI0>;
			clock-names = "bus_clk", "sclk_mipi";
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		camera: camera {
			compatible = "samsung,fimc", "simple-bus";
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <1>;
			#clock-cells = <1>;
			clock-output-names = "cam_a_clkout", "cam_b_clkout";
			ranges;

			fimc_0: fimc@11800000 {
				compatible = "samsung,exynos4210-fimc";
				reg = <0x11800000 0x1000>;
				interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_FIMC0>,
					 <&clock CLK_SCLK_FIMC0>;
				clock-names = "fimc", "sclk_fimc";
				power-domains = <&pd_cam>;
				samsung,sysreg = <&sys_reg>;
				iommus = <&sysmmu_fimc0>;
				status = "disabled";
			};

			fimc_1: fimc@11810000 {
				compatible = "samsung,exynos4210-fimc";
				reg = <0x11810000 0x1000>;
				interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_FIMC1>,
					 <&clock CLK_SCLK_FIMC1>;
				clock-names = "fimc", "sclk_fimc";
				power-domains = <&pd_cam>;
				samsung,sysreg = <&sys_reg>;
				iommus = <&sysmmu_fimc1>;
				status = "disabled";
			};

			fimc_2: fimc@11820000 {
				compatible = "samsung,exynos4210-fimc";
				reg = <0x11820000 0x1000>;
				interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_FIMC2>,
					 <&clock CLK_SCLK_FIMC2>;
				clock-names = "fimc", "sclk_fimc";
				power-domains = <&pd_cam>;
				samsung,sysreg = <&sys_reg>;
				iommus = <&sysmmu_fimc2>;
				status = "disabled";
			};

			fimc_3: fimc@11830000 {
				compatible = "samsung,exynos4210-fimc";
				reg = <0x11830000 0x1000>;
				interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_FIMC3>,
					 <&clock CLK_SCLK_FIMC3>;
				clock-names = "fimc", "sclk_fimc";
				power-domains = <&pd_cam>;
				samsung,sysreg = <&sys_reg>;
				iommus = <&sysmmu_fimc3>;
				status = "disabled";
			};

			csis_0: csis@11880000 {
				compatible = "samsung,exynos4210-csis";
				reg = <0x11880000 0x4000>;
				interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_CSIS0>,
					 <&clock CLK_SCLK_CSIS0>;
				clock-names = "csis", "sclk_csis";
				bus-width = <4>;
				power-domains = <&pd_cam>;
				phys = <&mipi_phy 0>;
				phy-names = "csis";
				status = "disabled";
				#address-cells = <1>;
				#size-cells = <0>;
			};

			csis_1: csis@11890000 {
				compatible = "samsung,exynos4210-csis";
				reg = <0x11890000 0x4000>;
				interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&clock CLK_CSIS1>,
					 <&clock CLK_SCLK_CSIS1>;
				clock-names = "csis", "sclk_csis";
				bus-width = <2>;
				power-domains = <&pd_cam>;
				phys = <&mipi_phy 2>;
				phy-names = "csis";
				status = "disabled";
				#address-cells = <1>;
				#size-cells = <0>;
			};
		};

		rtc: rtc@10070000 {
			compatible = "samsung,s3c6410-rtc";
			reg = <0x10070000 0x100>;
			interrupt-parent = <&pmu_system_controller>;
			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_RTC>;
			clock-names = "rtc";
			status = "disabled";
		};

		keypad: keypad@100a0000 {
			compatible = "samsung,s5pv210-keypad";
			reg = <0x100A0000 0x100>;
			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_KEYIF>;
			clock-names = "keypad";
			status = "disabled";
		};

		sdhci_0: mmc@12510000 {
			compatible = "samsung,exynos4210-sdhci";
			reg = <0x12510000 0x100>;
			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SDMMC0>, <&clock CLK_SCLK_MMC0>;
			clock-names = "hsmmc", "mmc_busclk.2";
			status = "disabled";
		};

		sdhci_1: mmc@12520000 {
			compatible = "samsung,exynos4210-sdhci";
			reg = <0x12520000 0x100>;
			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SDMMC1>, <&clock CLK_SCLK_MMC1>;
			clock-names = "hsmmc", "mmc_busclk.2";
			status = "disabled";
		};

		sdhci_2: mmc@12530000 {
			compatible = "samsung,exynos4210-sdhci";
			reg = <0x12530000 0x100>;
			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SDMMC2>, <&clock CLK_SCLK_MMC2>;
			clock-names = "hsmmc", "mmc_busclk.2";
			status = "disabled";
		};

		sdhci_3: mmc@12540000 {
			compatible = "samsung,exynos4210-sdhci";
			reg = <0x12540000 0x100>;
			interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SDMMC3>, <&clock CLK_SCLK_MMC3>;
			clock-names = "hsmmc", "mmc_busclk.2";
			status = "disabled";
		};

		exynos_usbphy: exynos-usbphy@125b0000 {
			compatible = "samsung,exynos4210-usb2-phy";
			reg = <0x125B0000 0x100>;
			samsung,pmureg-phandle = <&pmu_system_controller>;
			clocks = <&clock CLK_USB_DEVICE>, <&clock CLK_XUSBXTI>;
			clock-names = "phy", "ref";
			#phy-cells = <1>;
			status = "disabled";
		};

		hsotg: hsotg@12480000 {
			compatible = "samsung,s3c6400-hsotg";
			reg = <0x12480000 0x20000>;
			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_USB_DEVICE>;
			clock-names = "otg";
			phys = <&exynos_usbphy 0>;
			phy-names = "usb2-phy";
			status = "disabled";
		};

		ehci: usb@12580000 {
			compatible = "samsung,exynos4210-ehci";
			reg = <0x12580000 0x100>;
			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_USB_HOST>;
			clock-names = "usbhost";
			status = "disabled";
			phys = <&exynos_usbphy 1>, <&exynos_usbphy 2>, <&exynos_usbphy 3>;
			phy-names = "host", "hsic0", "hsic1";
		};

		ohci: usb@12590000 {
			compatible = "samsung,exynos4210-ohci";
			reg = <0x12590000 0x100>;
			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_USB_HOST>;
			clock-names = "usbhost";
			status = "disabled";
			phys = <&exynos_usbphy 1>;
			phy-names = "host";
		};

		gpu: gpu@13000000 {
			compatible = "samsung,exynos4210-mali", "arm,mali-400";
			reg = <0x13000000 0x10000>;
			/*
			 * CLK_G3D is not actually bus clock but a IP-level clock.
			 * The bus clock is not described in hardware manual.
			 */
			clocks = <&clock CLK_G3D>,
				 <&clock CLK_SCLK_G3D>;
			clock-names = "bus", "core";
			power-domains = <&pd_g3d>;
			status = "disabled";
		};

		i2s1: i2s@13960000 {
			compatible = "samsung,s3c6410-i2s";
			reg = <0x13960000 0x100>;
			clocks = <&clock CLK_I2S1>;
			clock-names = "iis";
			#clock-cells = <1>;
			clock-output-names = "i2s_cdclk1";
			dmas = <&pdma1 12>, <&pdma1 11>;
			dma-names = "tx", "rx";
			#sound-dai-cells = <1>;
			status = "disabled";
		};

		i2s2: i2s@13970000 {
			compatible = "samsung,s3c6410-i2s";
			reg = <0x13970000 0x100>;
			clocks = <&clock CLK_I2S2>;
			clock-names = "iis";
			#clock-cells = <1>;
			clock-output-names = "i2s_cdclk2";
			dmas = <&pdma0 14>, <&pdma0 13>;
			dma-names = "tx", "rx";
			#sound-dai-cells = <1>;
			status = "disabled";
		};

		mfc: codec@13400000 {
			compatible = "samsung,mfc-v5";
			reg = <0x13400000 0x10000>;
			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
			power-domains = <&pd_mfc>;
			clocks = <&clock CLK_MFC>, <&clock CLK_SCLK_MFC>;
			clock-names = "mfc", "sclk_mfc";
			iommus = <&sysmmu_mfc_l>, <&sysmmu_mfc_r>;
			iommu-names = "left", "right";
		};

		serial_0: serial@13800000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x13800000 0x100>;
			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_UART0>, <&clock CLK_SCLK_UART0>;
			clock-names = "uart", "clk_uart_baud0";
			dmas = <&pdma0 15>, <&pdma0 16>;
			dma-names = "rx", "tx";
			status = "disabled";
		};

		serial_1: serial@13810000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x13810000 0x100>;
			interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_UART1>, <&clock CLK_SCLK_UART1>;
			clock-names = "uart", "clk_uart_baud0";
			dmas = <&pdma1 15>, <&pdma1 16>;
			dma-names = "rx", "tx";
			status = "disabled";
		};

		serial_2: serial@13820000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x13820000 0x100>;
			interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;
			clock-names = "uart", "clk_uart_baud0";
			dmas = <&pdma0 17>, <&pdma0 18>;
			dma-names = "rx", "tx";
			status = "disabled";
		};

		serial_3: serial@13830000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x13830000 0x100>;
			interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
			clock-names = "uart", "clk_uart_baud0";
			dmas = <&pdma1 17>, <&pdma1 18>;
			dma-names = "rx", "tx";
			status = "disabled";
		};

		i2c_0: i2c@13860000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x13860000 0x100>;
			interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C0>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c0_bus>;
			status = "disabled";
		};

		i2c_1: i2c@13870000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x13870000 0x100>;
			interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C1>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c1_bus>;
			status = "disabled";
		};

		i2c_2: i2c@13880000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x13880000 0x100>;
			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C2>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c2_bus>;
			status = "disabled";
		};

		i2c_3: i2c@13890000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x13890000 0x100>;
			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C3>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c3_bus>;
			status = "disabled";
		};

		i2c_4: i2c@138a0000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x138A0000 0x100>;
			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C4>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c4_bus>;
			status = "disabled";
		};

		i2c_5: i2c@138b0000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x138B0000 0x100>;
			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C5>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c5_bus>;
			status = "disabled";
		};

		i2c_6: i2c@138c0000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x138C0000 0x100>;
			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C6>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c6_bus>;
			status = "disabled";
		};

		i2c_7: i2c@138d0000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-i2c";
			reg = <0x138D0000 0x100>;
			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C7>;
			clock-names = "i2c";
			pinctrl-names = "default";
			pinctrl-0 = <&i2c7_bus>;
			status = "disabled";
		};

		i2c_8: i2c@138e0000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "samsung,s3c2440-hdmiphy-i2c";
			reg = <0x138E0000 0x100>;
			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_I2C_HDMI>;
			clock-names = "i2c";
			status = "disabled";

			hdmi_i2c_phy: hdmiphy@38 {
				compatible = "exynos4210-hdmiphy";
				reg = <0x38>;
			};
		};

		spi_0: spi@13920000 {
			compatible = "samsung,exynos4210-spi";
			reg = <0x13920000 0x100>;
			interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
			dmas = <&pdma0 7>, <&pdma0 6>;
			dma-names = "tx", "rx";
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock CLK_SPI0>, <&clock CLK_SCLK_SPI0>;
			clock-names = "spi", "spi_busclk0";
			pinctrl-names = "default";
			pinctrl-0 = <&spi0_bus>;
			status = "disabled";
		};

		spi_1: spi@13930000 {
			compatible = "samsung,exynos4210-spi";
			reg = <0x13930000 0x100>;
			interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
			dmas = <&pdma1 7>, <&pdma1 6>;
			dma-names = "tx", "rx";
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock CLK_SPI1>, <&clock CLK_SCLK_SPI1>;
			clock-names = "spi", "spi_busclk0";
			pinctrl-names = "default";
			pinctrl-0 = <&spi1_bus>;
			status = "disabled";
		};

		spi_2: spi@13940000 {
			compatible = "samsung,exynos4210-spi";
			reg = <0x13940000 0x100>;
			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
			dmas = <&pdma0 9>, <&pdma0 8>;
			dma-names = "tx", "rx";
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock CLK_SPI2>, <&clock CLK_SCLK_SPI2>;
			clock-names = "spi", "spi_busclk0";
			pinctrl-names = "default";
			pinctrl-0 = <&spi2_bus>;
			status = "disabled";
		};

		pwm: pwm@139d0000 {
			compatible = "samsung,exynos4210-pwm";
			reg = <0x139D0000 0x1000>;
			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_PWM>;
			clock-names = "timers";
			#pwm-cells = <3>;
			status = "disabled";
		};

		pdma0: dma-controller@12680000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12680000 0x1000>;
			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_PDMA0>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
		};

		pdma1: dma-controller@12690000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12690000 0x1000>;
			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_PDMA1>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
		};

		mdma1: dma-controller@12850000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0x12850000 0x1000>;
			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_MDMA>;
			clock-names = "apb_pclk";
			#dma-cells = <1>;
		};

		fimd: fimd@11c00000 {
			compatible = "samsung,exynos4210-fimd";
			interrupt-parent = <&combiner>;
			reg = <0x11c00000 0x20000>;
			interrupt-names = "fifo", "vsync", "lcd_sys";
			interrupts = <11 0>, <11 1>, <11 2>;
			clocks = <&clock CLK_SCLK_FIMD0>, <&clock CLK_FIMD0>;
			clock-names = "sclk_fimd", "fimd";
			power-domains = <&pd_lcd0>;
			iommus = <&sysmmu_fimd0>;
			samsung,sysreg = <&sys_reg>;
			status = "disabled";
		};

		tmu: tmu@100c0000 {
			interrupt-parent = <&combiner>;
			reg = <0x100C0000 0x100>;
			interrupts = <2 4>;
			status = "disabled";
			#thermal-sensor-cells = <0>;
		};

		jpeg_codec: jpeg-codec@11840000 {
			compatible = "samsung,exynos4210-jpeg";
			reg = <0x11840000 0x1000>;
			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_JPEG>;
			clock-names = "jpeg";
			power-domains = <&pd_cam>;
			iommus = <&sysmmu_jpeg>;
		};

		rotator: rotator@12810000 {
			compatible = "samsung,exynos4210-rotator";
			reg = <0x12810000 0x64>;
			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_ROTATOR>;
			clock-names = "rotator";
			iommus = <&sysmmu_rotator>;
		};

		hdmi: hdmi@12d00000 {
			compatible = "samsung,exynos4210-hdmi";
			reg = <0x12D00000 0x70000>;
			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
			clock-names = "hdmi", "sclk_hdmi", "sclk_pixel",
				      "sclk_hdmiphy", "mout_hdmi";
			clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>,
				 <&clock CLK_SCLK_PIXEL>,
				 <&clock CLK_SCLK_HDMIPHY>,
				 <&clock CLK_MOUT_HDMI>;
			phy = <&hdmi_i2c_phy>;
			power-domains = <&pd_tv>;
			samsung,syscon-phandle = <&pmu_system_controller>;
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		hdmicec: cec@100b0000 {
			compatible = "samsung,s5p-cec";
			reg = <0x100B0000 0x200>;
			interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_HDMI_CEC>;
			clock-names = "hdmicec";
			samsung,syscon-phandle = <&pmu_system_controller>;
			hdmi-phandle = <&hdmi>;
			pinctrl-names = "default";
			pinctrl-0 = <&hdmi_cec>;
			status = "disabled";
		};

		mixer: mixer@12c10000 {
			compatible = "samsung,exynos4210-mixer";
			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
			reg = <0x12C10000 0x2100>, <0x12c00000 0x300>;
			power-domains = <&pd_tv>;
			iommus = <&sysmmu_tv>;
			status = "disabled";
		};

		ppmu_dmc0: ppmu@106a0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x106a0000 0x2000>;
			clocks = <&clock CLK_PPMUDMC0>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_dmc1: ppmu@106b0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x106b0000 0x2000>;
			clocks = <&clock CLK_PPMUDMC1>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_cpu: ppmu@106c0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x106c0000 0x2000>;
			clocks = <&clock CLK_PPMUCPU>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_rightbus: ppmu@112a0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x112a0000 0x2000>;
			clocks = <&clock CLK_PPMURIGHT>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_leftbus: ppmu@116a0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x116a0000 0x2000>;
			clocks = <&clock CLK_PPMULEFT>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_camif: ppmu@11ac0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x11ac0000 0x2000>;
			clocks = <&clock CLK_PPMUCAMIF>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_lcd0: ppmu@11e40000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x11e40000 0x2000>;
			clocks = <&clock CLK_PPMULCD0>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_fsys: ppmu@12630000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x12630000 0x2000>;
			status = "disabled";
		};

		ppmu_image: ppmu@12aa0000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x12aa0000 0x2000>;
			clocks = <&clock CLK_PPMUIMAGE>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_tv: ppmu@12e40000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x12e40000 0x2000>;
			clocks = <&clock CLK_PPMUTV>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_g3d: ppmu@13220000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x13220000 0x2000>;
			clocks = <&clock CLK_PPMUG3D>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_mfc_left: ppmu@13660000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x13660000 0x2000>;
			clocks = <&clock CLK_PPMUMFC_L>;
			clock-names = "ppmu";
			status = "disabled";
		};

		ppmu_mfc_right: ppmu@13670000 {
			compatible = "samsung,exynos-ppmu";
			reg = <0x13670000 0x2000>;
			clocks = <&clock CLK_PPMUMFC_R>;
			clock-names = "ppmu";
			status = "disabled";
		};

		sysmmu_mfc_l: sysmmu@13620000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x13620000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <5 5>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_MFCL>, <&clock CLK_MFC>;
			power-domains = <&pd_mfc>;
			#iommu-cells = <0>;
		};

		sysmmu_mfc_r: sysmmu@13630000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x13630000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <5 6>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_MFCR>, <&clock CLK_MFC>;
			power-domains = <&pd_mfc>;
			#iommu-cells = <0>;
		};

		sysmmu_tv: sysmmu@12e20000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x12E20000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <5 4>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_TV>, <&clock CLK_MIXER>;
			power-domains = <&pd_tv>;
			#iommu-cells = <0>;
		};

		sysmmu_fimc0: sysmmu@11a20000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11A20000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 2>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMC0>, <&clock CLK_FIMC0>;
			power-domains = <&pd_cam>;
			#iommu-cells = <0>;
		};

		sysmmu_fimc1: sysmmu@11a30000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11A30000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 3>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMC1>, <&clock CLK_FIMC1>;
			power-domains = <&pd_cam>;
			#iommu-cells = <0>;
		};

		sysmmu_fimc2: sysmmu@11a40000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11A40000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 4>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMC2>, <&clock CLK_FIMC2>;
			power-domains = <&pd_cam>;
			#iommu-cells = <0>;
		};

		sysmmu_fimc3: sysmmu@11a50000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11A50000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 5>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMC3>, <&clock CLK_FIMC3>;
			power-domains = <&pd_cam>;
			#iommu-cells = <0>;
		};

		sysmmu_jpeg: sysmmu@11a60000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11A60000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <4 6>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_JPEG>, <&clock CLK_JPEG>;
			power-domains = <&pd_cam>;
			#iommu-cells = <0>;
		};

		sysmmu_rotator: sysmmu@12a30000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x12A30000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <5 0>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_ROTATOR>,
				 <&clock CLK_ROTATOR>;
			#iommu-cells = <0>;
		};

		sysmmu_fimd0: sysmmu@11e20000 {
			compatible = "samsung,exynos-sysmmu";
			reg = <0x11E20000 0x1000>;
			interrupt-parent = <&combiner>;
			interrupts = <5 2>;
			clock-names = "sysmmu", "master";
			clocks = <&clock CLK_SMMU_FIMD0>, <&clock CLK_FIMD0>;
			power-domains = <&pd_lcd0>;
			#iommu-cells = <0>;
		};

		sss: sss@10830000 {
			compatible = "samsung,exynos4210-secss";
			reg = <0x10830000 0x300>;
			interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock CLK_SSS>;
			clock-names = "secss";
		};

		prng: rng@10830400 {
			compatible = "samsung,exynos4-rng";
			reg = <0x10830400 0x200>;
			clocks = <&clock CLK_SSS>;
			clock-names = "secss";
		};
	};
};

#include "exynos-syscon-restart.dtsi"


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 based Galaxy S2 (GT-I9100 version) device tree
 *
 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2020 Stenkin Evgeniy <stenkinevgeniy@gmail.com>
 * Copyright (c) 2020 Paul Cercueil <paul@crapouillou.net>
 */

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

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>

/ {
	model = "Samsung Galaxy S2 (GT-I9100)";
	compatible = "samsung,i9100", "samsung,exynos4210", "samsung,exynos4";
	chassis-type = "handset";

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

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

	vemmc_reg: regulator-0 {
		compatible = "regulator-fixed";
		regulator-name = "VMEM_VDD_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpk0 2 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	tsp_reg: regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "TSP_FIXED_VOLTAGES";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpl0 3 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <70000>;
		enable-active-high;
		regulator-boot-on;
		regulator-always-on;
	};

	cam_af_28v_reg: regulator-2 {
		compatible = "regulator-fixed";
		regulator-name = "8M_AF_2.8V_EN";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpk1 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

	cam_io_12v_reg: regulator-4 {
		compatible = "regulator-fixed";
		regulator-name = "8M_1.2V_EN";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		gpio = <&gpe2 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	vt_core_15v_reg: regulator-5 {
		compatible = "regulator-fixed";
		regulator-name = "VT_CORE_1.5V";
		regulator-min-microvolt = <1500000>;
		regulator-max-microvolt = <1500000>;
		gpio = <&gpe2 2 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

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

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

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

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

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

	i2c_max17042_fuel: i2c-gpio-0 {
		compatible = "i2c-gpio";
		#address-cells = <1>;
		#size-cells = <0>;

		sda-gpios = <&gpy4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpy4 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <5>;

		battery@36 {
			compatible = "maxim,max17042";

			interrupt-parent = <&gpx2>;
			interrupts = <3 IRQ_TYPE_LEVEL_LOW>;

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

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

	i2c_s5k5baf: i2c-gpio-1 {
		compatible = "i2c-gpio";
		#address-cells = <1>;
		#size-cells = <0>;

		sda-gpios = <&gpc1 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpc1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;

		image-sensor@2d {
			compatible = "samsung,s5k5baf";
			reg = <0x2d>;
			vdda-supply = <&cam_io_en_reg>;
			vddreg-supply = <&vt_core_15v_reg>;
			vddio-supply = <&vtcam_reg>;
			clocks = <&camera 0>;
			clock-names = "mclk";
			stbyn-gpios = <&gpl2 0 GPIO_ACTIVE_LOW>;
			rstn-gpios = <&gpl2 1 GPIO_ACTIVE_LOW>;
			clock-frequency = <24000000>;

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

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

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

		lcd@0 {
			compatible = "samsung,ld9040";
			reg = <0>;

			spi-max-frequency = <1200000>;

			vdd3-supply = <&vmipi_reg>;
			vci-supply = <&vcclcd_reg>;

			reset-gpios = <&gpy4 5 GPIO_ACTIVE_HIGH>;
			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>;
				};
			};
		};
	};

	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 max8997 PMIC */
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};
};

&camera {
	pinctrl-0 = <&cam_port_a_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>;
};

&csis_1 {
	status = "okay";
	vddcore-supply = <&vusb_reg>;
	vddio-supply = <&vmipi_reg>;
	clock-frequency = <160000000>;
	#address-cells = <1>;
	#size-cells = <0>;

	port@4 {
		reg = <4>;
		csis1_ep: endpoint {
			remote-endpoint = <&s5k5bafx_ep>;
			data-lanes = <1>;
			samsung,csis-hs-settle = <6>;
		};
	};
};

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

&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 = <&safe1_sreg>;
};

&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 {
	/* Back camera not implemented */
	status = "disabled";

	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 {
	/* Back camera not implemented */
	status = "disabled";

	assigned-clocks = <&clock CLK_MOUT_FIMC3>, <&clock CLK_SCLK_FIMC3>;
	assigned-clock-parents = <&clock CLK_SCLK_MPLL>;
	assigned-clock-rates = <0>, <160000000>;
};

&fimd {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

	samsung,invert-vden;
	samsung,invert-vclk;

	pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
	pinctrl-names = "default";

	port@3 {
		reg = <3>;

		fimd_dpi_ep: endpoint {
			remote-endpoint = <&lcd_ep>;
		};
	};
};

&gpu {
	status = "okay";

	mali-supply = <&vg3d_breg>;
};

&hsotg {
	status = "okay";

	dr_mode = "otg";
	vusb_d-supply = <&vusb_reg>;
	vusb_a-supply = <&vusbdac_reg>;
};

&i2c_3 {
	status = "okay";

	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;

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

	touchscreen@4a {
		compatible = "atmel,maxtouch";
		reg = <0x4a>;

		interrupt-parent = <&gpx0>;
		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
	};
};

&i2c_5 {
	status = "okay";

	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <100000>;

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

	pmic@66 {
		compatible = "maxim,max8997-pmic";
		reg = <0x66>;

		interrupts-extended = <&gpx0 7 IRQ_TYPE_NONE>,
				      <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;

		max8997,pmic-buck1-uses-gpio-dvs;
		max8997,pmic-buck2-uses-gpio-dvs;
		max8997,pmic-buck5-uses-gpio-dvs;

		max8997,pmic-ignore-gpiodvs-side-effect;
		max8997,pmic-buck125-default-dvs-idx = <0>;

		max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
						 <&gpx0 6 GPIO_ACTIVE_HIGH>,
						 <&gpl0 0 GPIO_ACTIVE_HIGH>;

		max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
						 <1250000>, <1200000>,
						 <1150000>, <1100000>,
						 <1000000>, <950000>;

		max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
						 <950000>,  <900000>,
						 <1100000>, <1000000>,
						 <950000>,  <900000>;

		max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>;

		pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
		pinctrl-names = "default";

		charger-supply = <&charger_reg>;

		regulators {
			vadc_reg: LDO1 {
				regulator-name = "VADC_3.3V_C210";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;

			};
			valive_reg: LDO2 {
				regulator-name = "VALIVE_1.1V_C210";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;

			};

			vusb_reg: LDO3 {
				regulator-name = "VUSB_1.1V_C210";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
			};

			vmipi_reg: LDO4 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vhsic_reg: LDO5 {
				regulator-name = "VHSIC_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			vpda_reg: LDO6 {
				regulator-name = "VCC_1.8V_PDA";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vcam_reg: LDO7 {
				regulator-name = "CAM_ISP_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			vusbdac_reg: LDO8 {
				regulator-name = "VUSB+VDAC_3.3V_C210";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

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

			vtouch_reg: LDO11 {
				regulator-name = "TOUCH_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
			};

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

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

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

			vmotor_reg: LDO14 {
				regulator-name = "VCC_2.8V_MOTOR";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			vled_reg: LDO15 {
				regulator-name = "LED_A_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			camsensor_reg: LDO16 {
				regulator-name = "CAM_SENSOR_IO_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

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

			vtouchled_reg: LDO18 {
				regulator-name = "TOUCH_LED_3.3V";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3300000>;
			};

			vddq_reg: LDO21 {
				regulator-name = "VDDQ_M1M2_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			varm_breg: BUCK1 {
				regulator-name = "VARM_1.2V_C210";
				regulator-min-microvolt = <65000>;
				regulator-max-microvolt = <2225000>;
				regulator-always-on;
			};

			vint_breg: BUCK2 {
				regulator-name = "VINT_1.1V_C210";
				regulator-min-microvolt = <65000>;
				regulator-max-microvolt = <2225000>;
				regulator-always-on;
			};

			vg3d_breg: BUCK3 {
				regulator-name = "G3D_1.1V";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1200000>;
				regulator-microvolt-offset = <50000>;
				regulator-always-on;
			};

			camisp_breg: BUCK4 {
				regulator-name = "CAM_ISP_CORE_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

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

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

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

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

			EN32KHZ_AP {
				regulator-name = "EN32KHZ_AP";
				regulator-always-on;
			};

			EN32KHZ_CP {
				regulator-name = "EN32KHZ_CP";
				regulator-always-on;
			};

			charger_reg: CHARGER {
				regulator-name = "CHARGER";
				regulator-min-microamp = <200000>;
				regulator-max-microamp = <950000>;
			};

			chargercv_reg: CHARGER_CV {
				regulator-name = "CHARGER_CV";
				regulator-min-microvolt = <4200000>;
				regulator-max-microvolt = <4200000>;
				regulator-always-on;
			};

			CHARGER_TOPOFF {
				regulator-name = "CHARGER_TOPOFF";
				regulator-min-microamp = <200000>;
				regulator-max-microamp = <200000>;
				regulator-always-on;
			};
		};
	};
};

&i2c_7 {
	status = "okay";

	samsung,i2c-sda-delay = <100>;
	samsung,i2c-slave-addr = <0x10>;
	samsung,i2c-max-bus-freq = <400000>;

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

	magnetometer@c {
		compatible = "asahi-kasei,ak8975";
		reg = <0x0c>;

		gpios = <&gpx2 2 GPIO_ACTIVE_HIGH>;
	};
};

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

	sleep0: sleep-state {
		gpa0-0-pin {
			samsung,pins = "gpa0-0";
			samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
			samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
		};

		gpa0-1-pin {
			samsung,pins = "gpa0-1";
			samsung,pin-con-pdn = <EXYNOS_PIN_PDN_OUT0>;
			samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
		};

		gpa0-2-pin {
			samsung,pins = "gpa0-2";
			samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
			samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
		};

		gpa0-3-pin {
			samsung,pins = "gpa0-3";
			samsung,pin-con-pdn = <EXYNOS_PIN_PDN_OUT1>;
			samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
		};
	};
};

&pinctrl_1 {
	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>;
	};

	usb_sel: usb-sel-pins {
		samsung,pins = "gpl0-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
		samsung,pin-val = <0>;
	};

	bt_en: bt-en-pins {
		samsung,pins = "gpl0-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
		samsung,pin-val = <0>;
	};

	bt_res: bt-res-pins {
		samsung,pins = "gpl1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
		samsung,pin-val = <0>;
	};

	otg_gp: otg-gp-pins {
		samsung,pins = "gpx3-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
		samsung,pin-val = <0>;
	};

	mag_mhl_gpio: mag-mhl-pins {
		samsung,pins = "gpd0-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

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

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

	tsp224_irq: tsp224-irq-pins {
		samsung,pins = "gpx0-4";
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
	};
};

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

&sdhci_0 {
	status = "okay";

	bus-width = <8>;
	non-removable;
	vmmc-supply = <&vemmc_reg>;

	pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_bus8>;
	pinctrl-names = "default";
};

&sdhci_2 {
	status = "okay";

	bus-width = <4>;
	cd-gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
	vmmc-supply = <&vtf_reg>;

	pinctrl-0 = <&sd2_clk>, <&sd2_cmd>, <&sd2_bus4>;
	pinctrl-names = "default";
};

&sdhci_3 {
	status = "okay";

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

	non-removable;
	bus-width = <4>;
	mmc-pwrseq = <&wlan_pwrseq>;
	vmmc-supply = <&vtf_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";

	pinctrl-names = "default";
	pinctrl-0 = <&bt_en>, <&bt_res>, <&uart0_data>, <&uart0_fctl>;

	bluetooth {
		compatible = "brcm,bcm4330-bt";

		shutdown-gpios = <&gpl0 4 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpl1 0 GPIO_ACTIVE_LOW>;
		device-wakeup-gpios = <&gpx3 1 GPIO_ACTIVE_HIGH>;

		interrupt-parent = <&gpx2>;
		interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
		interrupt-names = "host-wakeup";
	};
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

&tmu {
	status = "okay";
};

repo_name: angery/linux


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 based Origen board device tree source
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2010-2011 Linaro Ltd.
 *		www.linaro.org
 *
 * Device tree source file for Insignal's Origen board which is based on
 * Samsung's Exynos4210 SoC.
 */

/dts-v1/;
#include "exynos4210.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include "exynos-mfc-reserved-memory.dtsi"

/ {
	model = "Insignal Origen evaluation board based on Exynos4210";
	compatible = "insignal,origen", "samsung,exynos4210", "samsung,exynos4";

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

	chosen {
		bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M init=/linuxrc";
		stdout-path = "serial2:115200n8";
	};

	mmc_reg: voltage-regulator {
		compatible = "regulator-fixed";
		regulator-name = "VMEM_VDD_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

		key-up {
			label = "Up";
			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_UP>;
			wakeup-source;
		};

		key-down {
			label = "Down";
			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_DOWN>;
			wakeup-source;
		};

		key-back {
			label = "Back";
			gpios = <&gpx1 7 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_BACK>;
			wakeup-source;
		};

		key-home {
			label = "Home";
			gpios = <&gpx1 6 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_HOME>;
			wakeup-source;
		};

		key-menu {
			label = "Menu";
			gpios = <&gpx1 5 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_MENU>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";
		status {
			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
			function = LED_FUNCTION_HEARTBEAT;
			linux,default-trigger = "heartbeat";
		};
	};

	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 max8997 PMIC */
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	display-timings {
		native-mode = <&timing0>;
		timing0: timing {
			clock-frequency = <47500000>;
			hactive = <1024>;
			vactive = <600>;
			hfront-porch = <64>;
			hback-porch = <16>;
			hsync-len = <48>;
			vback-porch = <64>;
			vfront-porch = <16>;
			vsync-len = <3>;
		};
	};
};

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

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

&exynos_usbphy {
	status = "okay";
};

&fimd {
	pinctrl-0 = <&lcd_en &lcd_clk &lcd_data24 &pwm0_out>;
	pinctrl-names = "default";
	status = "okay";
};

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

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

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

	pmic@66 {
		compatible = "maxim,max8997-pmic";
		reg = <0x66>;
		interrupt-parent = <&gpx0>;
		interrupts = <4 IRQ_TYPE_NONE>, <3 IRQ_TYPE_NONE>;
		pinctrl-names = "default";
		pinctrl-0 = <&max8997_irq>;

		max8997,pmic-buck1-dvs-voltage = <1350000>;
		max8997,pmic-buck2-dvs-voltage = <1100000>;
		max8997,pmic-buck5-dvs-voltage = <1200000>;

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ABB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			ldo3_reg: LDO3 {
				regulator-name = "VMIPI_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
			};

			ldo4_reg: LDO4 {
				regulator-name = "VDD_RTC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			ldo6_reg: LDO6 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

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

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

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

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

			ldo11_reg: LDO11 {
				regulator-name = "VDD_AUD_3V";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
			};

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

			ldo17_reg: LDO17 {
				regulator-name = "VDD_SWB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			ldo21_reg: LDO21 {
				regulator-name = "VDD_MIF_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VDD_ARM_1.2V";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "VDD_INT_1.1V";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck3_reg: BUCK3 {
				regulator-name = "VDD_G3D_1.1V";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
			};

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

			buck7_reg: BUCK7 {
				regulator-name = "VDD_LCD_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			EN32KHZ_AP {
				regulator-name = "EN32KHZ_AP";
				regulator-always-on;
			};
		};
	};
};

&pinctrl_1 {
	max8997_irq: max8997-irq-pins {
		samsung,pins = "gpx0-3", "gpx0-4";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};
};

&sdhci_0 {
	bus-width = <4>;
	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_cd>;
	pinctrl-names = "default";
	vmmc-supply = <&mmc_reg>;
	status = "okay";
};

&sdhci_2 {
	bus-width = <4>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
	pinctrl-names = "default";
	vmmc-supply = <&mmc_reg>;
	status = "okay";
};

&serial_0 {
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

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

&tmu {
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 SoC pin-mux and pin-config device tree source
 *
 * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2011-2012 Linaro Ltd.
 *		www.linaro.org
 *
 * Samsung's Exynos4210 SoC pin-mux and pin-config optiosn are listed as device
 * tree nodes are listed in this file.
 */

#include "exynos-pinctrl.h"

&pinctrl_0 {
	gpa0: gpa0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpa1: gpa1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb: gpb-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpc0: gpc0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpc1: gpc1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd0: gpd0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd1: gpd1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpe0: gpe0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpe1: gpe1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpe2: gpe2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpe3: gpe3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpe4: gpe4-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf0: gpf0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf1: gpf1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf2: gpf2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf3: gpf3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	uart0_data: uart0-data-pins {
		samsung,pins = "gpa0-0", "gpa0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart0_fctl: uart0-fctl-pins {
		samsung,pins = "gpa0-2", "gpa0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart1_data: uart1-data-pins {
		samsung,pins = "gpa0-4", "gpa0-5";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart1_fctl: uart1-fctl-pins {
		samsung,pins = "gpa0-6", "gpa0-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c2_bus: i2c2-bus-pins {
		samsung,pins = "gpa0-6", "gpa0-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart2_data: uart2-data-pins {
		samsung,pins = "gpa1-0", "gpa1-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart2_fctl: uart2-fctl-pins {
		samsung,pins = "gpa1-2", "gpa1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart_audio_a: uart-audio-a-pins {
		samsung,pins = "gpa1-0", "gpa1-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c3_bus: i2c3-bus-pins {
		samsung,pins = "gpa1-2", "gpa1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart3_data: uart3-data-pins {
		samsung,pins = "gpa1-4", "gpa1-5";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	uart_audio_b: uart-audio-b-pins {
		samsung,pins = "gpa1-4", "gpa1-5";
		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	spi0_bus: spi0-bus-pins {
		samsung,pins = "gpb-0", "gpb-2", "gpb-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c4_bus: i2c4-bus-pins {
		samsung,pins = "gpb-2", "gpb-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	spi1_bus: spi1-bus-pins {
		samsung,pins = "gpb-4", "gpb-6", "gpb-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c5_bus: i2c5-bus-pins {
		samsung,pins = "gpb-6", "gpb-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2s1_bus: i2s1-bus-pins {
		samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
				"gpc0-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pcm1_bus: pcm1-bus-pins {
		samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
				"gpc0-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	ac97_bus: ac97-bus-pins {
		samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
				"gpc0-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2s2_bus: i2s2-bus-pins {
		samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3",
				"gpc1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pcm2_bus: pcm2-bus-pins {
		samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3",
				"gpc1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	spdif_bus: spdif-bus-pins {
		samsung,pins = "gpc1-0", "gpc1-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c6_bus: i2c6-bus-pins {
		samsung,pins = "gpc1-3", "gpc1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	spi2_bus: spi2-bus-pins {
		samsung,pins = "gpc1-1", "gpc1-2", "gpc1-3", "gpc1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_5>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c7_bus: i2c7-bus-pins {
		samsung,pins = "gpd0-2", "gpd0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c0_bus: i2c0-bus-pins {
		samsung,pins = "gpd1-0", "gpd1-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	i2c1_bus: i2c1-bus-pins {
		samsung,pins = "gpd1-2", "gpd1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pwm0_out: pwm0-out-pins {
		samsung,pins = "gpd0-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pwm1_out: pwm1-out-pins {
		samsung,pins = "gpd0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pwm2_out: pwm2-out-pins {
		samsung,pins = "gpd0-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pwm3_out: pwm3-out-pins {
		samsung,pins = "gpd0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_ctrl: lcd-ctrl-pins {
		samsung,pins = "gpd0-0", "gpd0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_sync: lcd-sync-pins {
		samsung,pins = "gpf0-0", "gpf0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_en: lcd-en-pins {
		samsung,pins = "gpe3-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_clk: lcd-clk-pins {
		samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_data16: lcd-data-width16-pins {
		samsung,pins = "gpf0-7", "gpf1-0", "gpf1-1", "gpf1-2",
				"gpf1-3", "gpf1-6", "gpf1-7", "gpf2-0",
				"gpf2-1", "gpf2-2", "gpf2-3", "gpf2-7",
				"gpf3-0", "gpf3-1", "gpf3-2", "gpf3-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_data18: lcd-data-width18-pins {
		samsung,pins = "gpf0-6", "gpf0-7", "gpf1-0", "gpf1-1",
				"gpf1-2", "gpf1-3", "gpf1-6", "gpf1-7",
				"gpf2-0", "gpf2-1", "gpf2-2", "gpf2-3",
				"gpf2-6", "gpf2-7", "gpf3-0", "gpf3-1",
				"gpf3-2", "gpf3-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	lcd_data24: lcd-data-width24-pins {
		samsung,pins = "gpf0-4", "gpf0-5", "gpf0-6", "gpf0-7",
				"gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3",
				"gpf1-4", "gpf1-5", "gpf1-6", "gpf1-7",
				"gpf2-0", "gpf2-1", "gpf2-2", "gpf2-3",
				"gpf2-4", "gpf2-5", "gpf2-6", "gpf2-7",
				"gpf3-0", "gpf3-1", "gpf3-2", "gpf3-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};

&pinctrl_1 {
	gpj0: gpj0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpj1: gpj1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpk0: gpk0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpk1: gpk1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpk2: gpk2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpk3: gpk3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpl0: gpl0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpl1: gpl1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpl2: gpl2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpy0: gpy0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy1: gpy1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy2: gpy2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy3: gpy3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy4: gpy4-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy5: gpy5-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpy6: gpy6-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	gpx0: gpx0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
		#interrupt-cells = <2>;
	};

	gpx1: gpx1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
		#interrupt-cells = <2>;
	};

	gpx2: gpx2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpx3: gpx3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	sd0_clk: sd0-clk-pins {
		samsung,pins = "gpk0-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd0_cmd: sd0-cmd-pins {
		samsung,pins = "gpk0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd0_cd: sd0-cd-pins {
		samsung,pins = "gpk0-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd0_bus1: sd0-bus-width1-pins {
		samsung,pins = "gpk0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd0_bus4: sd0-bus-width4-pins {
		samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd0_bus8: sd0-bus-width8-pins {
		samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_clk: sd4-clk-pins {
		samsung,pins = "gpk0-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_cmd: sd4-cmd-pins {
		samsung,pins = "gpk0-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_cd: sd4-cd-pins {
		samsung,pins = "gpk0-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_bus1: sd4-bus-width1-pins {
		samsung,pins = "gpk0-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_bus4: sd4-bus-width4-pins {
		samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd4_bus8: sd4-bus-width8-pins {
		samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd1_clk: sd1-clk-pins {
		samsung,pins = "gpk1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd1_cmd: sd1-cmd-pins {
		samsung,pins = "gpk1-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd1_cd: sd1-cd-pins {
		samsung,pins = "gpk1-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd1_bus1: sd1-bus-width1-pins {
		samsung,pins = "gpk1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd1_bus4: sd1-bus-width4-pins {
		samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_clk: sd2-clk-pins {
		samsung,pins = "gpk2-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_cmd: sd2-cmd-pins {
		samsung,pins = "gpk2-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_cd: sd2-cd-pins {
		samsung,pins = "gpk2-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_bus1: sd2-bus-width1-pins {
		samsung,pins = "gpk2-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_bus4: sd2-bus-width4-pins {
		samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd2_bus8: sd2-bus-width8-pins {
		samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd3_clk: sd3-clk-pins {
		samsung,pins = "gpk3-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd3_cmd: sd3-cmd-pins {
		samsung,pins = "gpk3-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd3_cd: sd3-cd-pins {
		samsung,pins = "gpk3-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd3_bus1: sd3-bus-width1-pins {
		samsung,pins = "gpk3-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	sd3_bus4: sd3-bus-width4-pins {
		samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	eint0: ext-int0-pins {
		samsung,pins = "gpx0-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	eint8: ext-int8-pins {
		samsung,pins = "gpx1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	eint15: ext-int15-pins {
		samsung,pins = "gpx1-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	eint16: ext-int16-pins {
		samsung,pins = "gpx2-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	eint31: ext-int31-pins {
		samsung,pins = "gpx3-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	cam_port_a_io: cam-port-a-io-pins {
		samsung,pins = "gpj0-0", "gpj0-1", "gpj0-2", "gpj0-3",
				"gpj0-4", "gpj0-5", "gpj0-6", "gpj0-7",
				"gpj1-0", "gpj1-1", "gpj1-2", "gpj1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	cam_port_a_clk_active: cam-port-a-clk-active-pins {
		samsung,pins = "gpj1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
	};

	cam_port_a_clk_idle: cam-port-a-clk-idle-pins {
		samsung,pins = "gpj1-3";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	hdmi_cec: hdmi-cec-pins {
		samsung,pins = "gpx3-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};

&pinctrl_2 {
	gpz: gpz-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};

	i2s0_bus: i2s0-bus-pins {
		samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
				"gpz-4", "gpz-5", "gpz-6";
		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	pcm0_bus: pcm0-bus-pins {
		samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
				"gpz-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung's Exynos4210 based SMDKV310 board device tree source
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2010-2011 Linaro Ltd.
 *		www.linaro.org
 *
 * Device tree source file for Samsung's SMDKV310 board which is based on
 * Samsung's Exynos4210 SoC.
 */

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

/ {
	model = "Samsung smdkv310 evaluation board based on Exynos4210";
	compatible = "samsung,smdkv310", "samsung,exynos4210", "samsung,exynos4";

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

	chosen {
		bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M init=/linuxrc";
		stdout-path = "serial1:115200n8";
	};

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

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

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

&i2c_0 {
	#address-cells = <1>;
	#size-cells = <0>;
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <100000>;
	status = "okay";

	eeprom@50 {
		compatible = "samsung,24ad0xd1";
		reg = <0x50>;
	};

	eeprom@52 {
		compatible = "samsung,24ad0xd1";
		reg = <0x52>;
	};
};

&keypad {
	samsung,keypad-num-rows = <2>;
	samsung,keypad-num-columns = <8>;
	linux,keypad-no-autorepeat;
	wakeup-source;
	pinctrl-names = "default";
	pinctrl-0 = <&keypad_rows &keypad_cols>;
	status = "okay";

	key-1 {
		keypad,row = <0>;
		keypad,column = <3>;
		linux,code = <2>;
	};

	key-2 {
		keypad,row = <0>;
		keypad,column = <4>;
		linux,code = <3>;
	};

	key-3 {
		keypad,row = <0>;
		keypad,column = <5>;
		linux,code = <4>;
	};

	key-4 {
		keypad,row = <0>;
		keypad,column = <6>;
		linux,code = <5>;
	};

	key-5 {
		keypad,row = <0>;
		keypad,column = <7>;
		linux,code = <6>;
	};

	key-a {
		keypad,row = <1>;
		keypad,column = <3>;
		linux,code = <30>;
	};

	key-b {
		keypad,row = <1>;
		keypad,column = <4>;
		linux,code = <48>;
	};

	key-c {
		keypad,row = <1>;
		keypad,column = <5>;
		linux,code = <46>;
	};

	key-d {
		keypad,row = <1>;
		keypad,column = <6>;
		linux,code = <32>;
	};

	key-e {
		keypad,row = <1>;
		keypad,column = <7>;
		linux,code = <18>;
	};
};

&pinctrl_1 {
	keypad_rows: keypad-rows-pins {
		samsung,pins = "gpx2-0", "gpx2-1";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	keypad_cols: keypad-cols-pins {
		samsung,pins = "gpx1-0", "gpx1-1", "gpx1-2", "gpx1-3",
			       "gpx1-4", "gpx1-5", "gpx1-6", "gpx1-7";
		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};
};

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

&sdhci_2 {
	bus-width = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
	status = "okay";
};

&serial_0 {
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

&spi_2 {
	cs-gpios = <&gpc1 2 GPIO_ACTIVE_HIGH>;
	status = "okay";

	flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "w25x80";
		reg = <0>;
		spi-max-frequency = <1000000>;

		controller-data {
			samsung,spi-feedback-delay = <0>;
		};

		partition@0 {
			label = "U-Boot";
			reg = <0x0 0x40000>;
			read-only;
		};

		partition@40000 {
			label = "Kernel";
			reg = <0x40000 0xc0000>;
		};
	};
};


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

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

/ {
	model = "Samsung Trats based on Exynos4210";
	compatible = "samsung,trats", "samsung,exynos4210", "samsung,exynos4";
	chassis-type = "handset";

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

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

	vemmc_reg: regulator-0 {
		compatible = "regulator-fixed";
		regulator-name = "VMEM_VDD_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpk0 2 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

	cam_af_28v_reg: regulator-2 {
		compatible = "regulator-fixed";
		regulator-name = "8M_AF_2.8V_EN";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpk1 1 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

	cam_io_12v_reg: regulator-4 {
		compatible = "regulator-fixed";
		regulator-name = "8M_1.2V_EN";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		gpio = <&gpe2 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	vt_core_15v_reg: regulator-5 {
		compatible = "regulator-fixed";
		regulator-name = "VT_CORE_1.5V";
		regulator-min-microvolt = <1500000>;
		regulator-max-microvolt = <1500000>;
		gpio = <&gpe2 2 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

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

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

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

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

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

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

	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 max8997 PMIC */
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};
};

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

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

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

&dsi_0 {
	vddcore-supply = <&vusb_reg>;
	vddio-supply = <&vmipi_reg>;
	samsung,burst-clock-frequency = <500000000>;
	samsung,esc-clock-frequency = <20000000>;
	samsung,pll-clock-frequency = <24000000>;
	status = "okay";

	panel@0 {
		reg = <0>;
		compatible = "samsung,s6e8aa0";
		vdd3-supply = <&vcclcd_reg>;
		vci-supply = <&vlcd_reg>;
		reset-gpios = <&gpy4 5 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>;
			};
		};
	};
};

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

&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 {
	status = "okay";
};

&gpu {
	status = "okay";
};

&hsotg {
	vusb_d-supply = <&vusb_reg>;
	vusb_a-supply = <&vusbdac_reg>;
	dr_mode = "peripheral";
	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,mms114";
		reg = <0x48>;
		interrupt-parent = <&gpx0>;
		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-size-x = <720>;
		touchscreen-size-y = <1280>;
		avdd-supply = <&tsp_reg>;
		vdd-supply = <&tsp_reg>;
	};
};

&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";

	pmic@66 {
		compatible = "maxim,max8997-pmic";

		reg = <0x66>;
		interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
				      <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;

		max8997,pmic-buck1-uses-gpio-dvs;
		max8997,pmic-buck2-uses-gpio-dvs;
		max8997,pmic-buck5-uses-gpio-dvs;

		max8997,pmic-ignore-gpiodvs-side-effect;
		max8997,pmic-buck125-default-dvs-idx = <0>;

		max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
						 <&gpx0 6 GPIO_ACTIVE_HIGH>,
						 <&gpl0 0 GPIO_ACTIVE_HIGH>;

		max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
						 <1250000>, <1200000>,
						 <1150000>, <1100000>,
						 <1000000>, <950000>;

		max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
						 <950000>,  <900000>,
						 <1100000>, <1000000>,
						 <950000>,  <900000>;

		max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>;

		regulators {
			valive_reg: LDO2 {
				regulator-name = "VALIVE_1.1V_C210";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			vusb_reg: LDO3 {
				regulator-name = "VUSB_1.1V_C210";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
			};

			vmipi_reg: LDO4 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			vpda_reg: LDO6 {
				regulator-name = "VCC_1.8V_PDA";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vcam_reg: LDO7 {
				regulator-name = "CAM_ISP_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			vusbdac_reg: LDO8 {
				regulator-name = "VUSB+VDAC_3.3V_C210";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

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

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

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

			vcclcd_reg: LDO13 {
				regulator-name = "VCC_3.3V_LCD";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			vlcd_reg: LDO15 {
				regulator-name = "VLCD_2.2V";
				regulator-min-microvolt = <2200000>;
				regulator-max-microvolt = <2200000>;
			};

			camsensor_reg: LDO16 {
				regulator-name = "CAM_SENSOR_IO_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

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

			vddq_reg: LDO21 {
				regulator-name = "VDDQ_M1M2_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			varm_breg: BUCK1 {
				regulator-name = "VARM_1.2V_C210";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
			};

			vint_breg: BUCK2 {
				regulator-name = "VINT_1.1V_C210";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			camisp_breg: BUCK4 {
				regulator-name = "CAM_ISP_CORE_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
			};

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

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

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

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

			EN32KHZ_AP {
				regulator-name = "EN32KHZ_AP";
				regulator-always-on;
			};

			EN32KHZ_CP {
				regulator-name = "EN32KHZ_CP";
				regulator-always-on;
			};
		};
	};
};

&pinctrl_1 {
	bt_shutdown: bt-shutdown-pins {
		samsung,pins = "gpl1-0";
		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>;
	};
};

&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 = <&tflash_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 = <&tflash_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";
	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 = <&gpl1 0 GPIO_ACTIVE_HIGH>;
		device-wakeup-gpios = <&gpx3 1 GPIO_ACTIVE_HIGH>;
		host-wakeup-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
	};
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

&tmu {
	status = "okay";
};