xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/exynos4412-itop-elite.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * TOPEET's Exynos4412 based itop board device tree source
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (c) 2016 SUMOMO Computer Association
6*4882a593Smuzhiyun *			https://www.sumomo.mobi
7*4882a593Smuzhiyun *			Randy Li <ayaka@soulik.info>
8*4882a593Smuzhiyun *
9*4882a593Smuzhiyun * Device tree source file for TOPEET iTop Exynos 4412 core board
10*4882a593Smuzhiyun * which is based on Samsung's Exynos4412 SoC.
11*4882a593Smuzhiyun */
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun/dts-v1/;
14*4882a593Smuzhiyun#include <dt-bindings/pwm/pwm.h>
15*4882a593Smuzhiyun#include <dt-bindings/sound/samsung-i2s.h>
16*4882a593Smuzhiyun#include "exynos4412-itop-scp-core.dtsi"
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun/ {
19*4882a593Smuzhiyun	model = "TOPEET iTop 4412 Elite board based on Exynos4412";
20*4882a593Smuzhiyun	compatible = "topeet,itop4412-elite", "samsung,exynos4412", "samsung,exynos4";
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	chosen {
23*4882a593Smuzhiyun		bootargs = "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootdelay=1 rootwait";
24*4882a593Smuzhiyun		stdout-path = "serial2:115200n8";
25*4882a593Smuzhiyun	};
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	leds {
28*4882a593Smuzhiyun		compatible = "gpio-leds";
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun		led2 {
31*4882a593Smuzhiyun			label = "red:system";
32*4882a593Smuzhiyun			gpios = <&gpx1 0 GPIO_ACTIVE_HIGH>;
33*4882a593Smuzhiyun			default-state = "off";
34*4882a593Smuzhiyun			linux,default-trigger = "heartbeat";
35*4882a593Smuzhiyun		};
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		led3 {
38*4882a593Smuzhiyun			label = "red:user";
39*4882a593Smuzhiyun			gpios = <&gpk1 1 GPIO_ACTIVE_HIGH>;
40*4882a593Smuzhiyun			default-state = "off";
41*4882a593Smuzhiyun		};
42*4882a593Smuzhiyun	};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	gpio-keys {
45*4882a593Smuzhiyun		compatible = "gpio-keys";
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun		home {
48*4882a593Smuzhiyun			label = "GPIO Key Home";
49*4882a593Smuzhiyun			linux,code = <KEY_HOME>;
50*4882a593Smuzhiyun			gpios = <&gpx1 1 GPIO_ACTIVE_LOW>;
51*4882a593Smuzhiyun		};
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun		back {
54*4882a593Smuzhiyun			label = "GPIO Key Back";
55*4882a593Smuzhiyun			linux,code = <KEY_BACK>;
56*4882a593Smuzhiyun			gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
57*4882a593Smuzhiyun		};
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun		sleep {
60*4882a593Smuzhiyun			label = "GPIO Key Sleep";
61*4882a593Smuzhiyun			linux,code = <KEY_POWER>;
62*4882a593Smuzhiyun			gpios = <&gpx3 3 GPIO_ACTIVE_LOW>;
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun		vol-up {
66*4882a593Smuzhiyun			label = "GPIO Key Vol+";
67*4882a593Smuzhiyun			linux,code = <KEY_UP>;
68*4882a593Smuzhiyun			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
69*4882a593Smuzhiyun		};
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun		vol-down {
72*4882a593Smuzhiyun			label = "GPIO Key Vol-";
73*4882a593Smuzhiyun			linux,code = <KEY_DOWN>;
74*4882a593Smuzhiyun			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
75*4882a593Smuzhiyun		};
76*4882a593Smuzhiyun	};
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun	sound {
79*4882a593Smuzhiyun		compatible = "simple-audio-card";
80*4882a593Smuzhiyun		simple-audio-card,name = "wm-sound";
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun		simple-audio-card,format = "i2s";
83*4882a593Smuzhiyun		simple-audio-card,bitclock-master = <&link0_codec>;
84*4882a593Smuzhiyun		simple-audio-card,frame-master = <&link0_codec>;
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		simple-audio-card,widgets =
87*4882a593Smuzhiyun			"Microphone", "Mic Jack",
88*4882a593Smuzhiyun			"Line", "Line In",
89*4882a593Smuzhiyun			"Line", "Line Out",
90*4882a593Smuzhiyun			"Speaker", "Speaker",
91*4882a593Smuzhiyun			"Headphone", "Headphone Jack";
92*4882a593Smuzhiyun		simple-audio-card,routing =
93*4882a593Smuzhiyun			"Headphone Jack", "HP_L",
94*4882a593Smuzhiyun			"Headphone Jack", "HP_R",
95*4882a593Smuzhiyun			"Speaker", "SPK_LP",
96*4882a593Smuzhiyun			"Speaker", "SPK_LN",
97*4882a593Smuzhiyun			"Speaker", "SPK_RP",
98*4882a593Smuzhiyun			"Speaker", "SPK_RN",
99*4882a593Smuzhiyun			"LINPUT1", "Mic Jack",
100*4882a593Smuzhiyun			"LINPUT3", "Mic Jack",
101*4882a593Smuzhiyun			"RINPUT1", "Mic Jack",
102*4882a593Smuzhiyun			"RINPUT2", "Mic Jack";
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun		simple-audio-card,cpu {
105*4882a593Smuzhiyun			sound-dai = <&i2s0 0>;
106*4882a593Smuzhiyun		};
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun		link0_codec: simple-audio-card,codec {
109*4882a593Smuzhiyun			sound-dai = <&codec>;
110*4882a593Smuzhiyun			clocks = <&i2s0 CLK_I2S_CDCLK>;
111*4882a593Smuzhiyun			system-clock-frequency = <11289600>;
112*4882a593Smuzhiyun		};
113*4882a593Smuzhiyun	};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	beep {
116*4882a593Smuzhiyun		compatible = "pwm-beeper";
117*4882a593Smuzhiyun		pwms = <&pwm 0 4000000 PWM_POLARITY_INVERTED>;
118*4882a593Smuzhiyun	};
119*4882a593Smuzhiyun};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun&adc {
122*4882a593Smuzhiyun	vdd-supply = <&ldo3_reg>;
123*4882a593Smuzhiyun	status = "okay";
124*4882a593Smuzhiyun};
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun&camera {
127*4882a593Smuzhiyun	pinctrl-0 = <&cam_port_a_clk_active>;
128*4882a593Smuzhiyun	pinctrl-names = "default";
129*4882a593Smuzhiyun	status = "okay";
130*4882a593Smuzhiyun	assigned-clocks = <&clock CLK_MOUT_CAM0>;
131*4882a593Smuzhiyun	assigned-clock-parents = <&clock CLK_XUSBXTI>;
132*4882a593Smuzhiyun};
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun&clock_audss {
135*4882a593Smuzhiyun	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
136*4882a593Smuzhiyun			<&clock_audss EXYNOS_MOUT_I2S>,
137*4882a593Smuzhiyun			<&clock_audss EXYNOS_DOUT_SRP>,
138*4882a593Smuzhiyun			<&clock_audss EXYNOS_DOUT_AUD_BUS>;
139*4882a593Smuzhiyun	assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
140*4882a593Smuzhiyun			<&clock_audss EXYNOS_MOUT_AUDSS>;
141*4882a593Smuzhiyun	assigned-clock-rates = <0>, <0>, <112896000>, <11289600>;
142*4882a593Smuzhiyun};
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun&ehci {
145*4882a593Smuzhiyun	status = "okay";
146*4882a593Smuzhiyun	/* In order to reset USB ethernet */
147*4882a593Smuzhiyun	samsung,vbus-gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun	phys = <&exynos_usbphy 1>, <&exynos_usbphy 3>;
150*4882a593Smuzhiyun	phy-names = "host", "hsic1";
151*4882a593Smuzhiyun};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun&exynos_usbphy {
154*4882a593Smuzhiyun	status = "okay";
155*4882a593Smuzhiyun};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun&fimc_0 {
158*4882a593Smuzhiyun	status = "okay";
159*4882a593Smuzhiyun	assigned-clocks = <&clock CLK_MOUT_FIMC0>,
160*4882a593Smuzhiyun			<&clock CLK_SCLK_FIMC0>;
161*4882a593Smuzhiyun	assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
162*4882a593Smuzhiyun	assigned-clock-rates = <0>, <176000000>;
163*4882a593Smuzhiyun};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun&hsotg {
166*4882a593Smuzhiyun	dr_mode = "peripheral";
167*4882a593Smuzhiyun	status = "okay";
168*4882a593Smuzhiyun};
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun&i2c_4 {
171*4882a593Smuzhiyun	samsung,i2c-sda-delay = <100>;
172*4882a593Smuzhiyun	samsung,i2c-slave-addr = <0x10>;
173*4882a593Smuzhiyun	samsung,i2c-max-bus-freq = <100000>;
174*4882a593Smuzhiyun	pinctrl-0 = <&i2c4_bus>;
175*4882a593Smuzhiyun	pinctrl-names = "default";
176*4882a593Smuzhiyun	status = "okay";
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	codec: wm8960@1a {
179*4882a593Smuzhiyun		compatible = "wlf,wm8960";
180*4882a593Smuzhiyun		reg = <0x1a>;
181*4882a593Smuzhiyun		clocks = <&pmu_system_controller 0>;
182*4882a593Smuzhiyun		clock-names = "MCLK1";
183*4882a593Smuzhiyun		wlf,shared-lrclk;
184*4882a593Smuzhiyun		#sound-dai-cells = <0>;
185*4882a593Smuzhiyun	};
186*4882a593Smuzhiyun};
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun&i2s0 {
189*4882a593Smuzhiyun	pinctrl-0 = <&i2s0_bus>;
190*4882a593Smuzhiyun	pinctrl-names = "default";
191*4882a593Smuzhiyun	status = "okay";
192*4882a593Smuzhiyun};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun&pinctrl_1 {
195*4882a593Smuzhiyun	ether-reset {
196*4882a593Smuzhiyun		samsung,pins = "gpc0-1";
197*4882a593Smuzhiyun		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
198*4882a593Smuzhiyun		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
199*4882a593Smuzhiyun		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
200*4882a593Smuzhiyun	};
201*4882a593Smuzhiyun};
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun&pwm {
204*4882a593Smuzhiyun	status = "okay";
205*4882a593Smuzhiyun	pinctrl-0 = <&pwm0_out>;
206*4882a593Smuzhiyun	pinctrl-names = "default";
207*4882a593Smuzhiyun	samsung,pwm-outputs = <0>;
208*4882a593Smuzhiyun};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun&sdhci_2 {
211*4882a593Smuzhiyun	bus-width = <4>;
212*4882a593Smuzhiyun	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
213*4882a593Smuzhiyun	pinctrl-names = "default";
214*4882a593Smuzhiyun	cd-gpio = <&gpx0 7 GPIO_ACTIVE_LOW>;
215*4882a593Smuzhiyun	cap-sd-highspeed;
216*4882a593Smuzhiyun	vmmc-supply = <&ldo23_reg>;
217*4882a593Smuzhiyun	vqmmc-supply = <&ldo17_reg>;
218*4882a593Smuzhiyun	status = "okay";
219*4882a593Smuzhiyun};
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun&serial_1 {
222*4882a593Smuzhiyun	status = "okay";
223*4882a593Smuzhiyun};
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun&serial_2 {
226*4882a593Smuzhiyun	status = "okay";
227*4882a593Smuzhiyun};
228