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