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