/*
 * 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.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;
#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 {
			label = "red:system";
			gpios = <&gpx1 0 GPIO_ACTIVE_HIGH>;
			default-state = "off";
			linux,default-trigger = "heartbeat";
		};

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

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

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

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

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

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

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

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

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

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

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

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

	port@0 {
		status = "okay";
	};

	port@2 {
		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>;
};

&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: wm8960@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";
	clocks = <&clock_audss EXYNOS_I2S_BUS>,
		 <&clock_audss EXYNOS_DOUT_AUD_BUS>,
		 <&clock_audss EXYNOS_SCLK_I2S>;
	clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
};

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