1// SPDX-License-Identifier: GPL-2.0
2
3/dts-v1/;
4#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/input/input.h>
6#include "s5pv210-aries.dtsi"
7
8/ {
9	model = "Samsung Galaxy S1 (GT-I9000) based on S5PV210";
10	compatible = "samsung,galaxys", "samsung,aries", "samsung,s5pv210";
11	chassis-type = "handset";
12
13	chosen {
14		stdout-path = &uart2;
15	};
16
17	nand_pwrseq: nand-pwrseq {
18		compatible = "mmc-pwrseq-simple";
19		reset-gpios = <&gpj2 7 GPIO_ACTIVE_LOW>;
20		pinctrl-names = "default";
21		pinctrl-0 = <&massmemory_en>;
22	};
23
24	gpio-keys {
25		compatible = "gpio-keys";
26
27		key-power {
28			label = "power";
29			gpios = <&gph2 6 GPIO_ACTIVE_LOW>;
30			linux,code = <KEY_POWER>;
31			wakeup-source;
32		};
33
34		key-vol-down {
35			label = "volume_down";
36			gpios = <&gph3 1 GPIO_ACTIVE_LOW>;
37			linux,code = <KEY_VOLUMEDOWN>;
38		};
39
40		key-vol-up {
41			label = "volume_up";
42			gpios = <&gph3 2 GPIO_ACTIVE_LOW>;
43			linux,code = <KEY_VOLUMEUP>;
44		};
45
46		key-home {
47			label = "home";
48			gpios = <&gph3 5 GPIO_ACTIVE_LOW>;
49			linux,code = <KEY_HOME>;
50			wakeup-source;
51		};
52	};
53
54	i2c_fmradio: i2c-gpio-8 {
55		compatible = "i2c-gpio";
56		sda-gpios = <&gpd1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
57		scl-gpios = <&gpd1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
58		i2c-gpio,delay-us = <2>;
59		#address-cells = <1>;
60		#size-cells = <0>;
61
62		pinctrl-names = "default";
63		pinctrl-0 = <&fm_i2c_pins>;
64
65		fmradio@10 {
66			compatible = "silabs,si470x";
67			reg = <0x10>;
68			interrupt-parent = <&gpj2>;
69			interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
70			reset-gpios = <&gpj2 5 GPIO_ACTIVE_HIGH>;
71
72			pinctrl-names = "default";
73			pinctrl-0 = <&fm_irq &fm_rst>;
74		};
75	};
76
77	micbias_reg: regulator-fixed-3 {
78		compatible = "regulator-fixed";
79		regulator-name = "MICBIAS";
80		gpio = <&gpj4 2 GPIO_ACTIVE_HIGH>;
81		enable-active-high;
82
83		pinctrl-names = "default";
84		pinctrl-0 = <&micbias_reg_ena>;
85	};
86
87	sound {
88		compatible = "samsung,aries-wm8994";
89
90		model = "Aries";
91
92		extcon = <&fsa9480>;
93
94		main-micbias-supply = <&micbias_reg>;
95		headset-micbias-supply = <&micbias_reg>;
96
97		earpath-sel-gpios = <&gpj2 6 GPIO_ACTIVE_HIGH>;
98
99		io-channels = <&adc 3>;
100		io-channel-names = "headset-detect";
101		headset-detect-gpios = <&gph0 6 GPIO_ACTIVE_LOW>;
102		headset-key-gpios = <&gph3 6 GPIO_ACTIVE_HIGH>;
103
104		samsung,audio-routing =
105			"HP", "HPOUT1L",
106			"HP", "HPOUT1R",
107
108			"SPK", "SPKOUTLN",
109			"SPK", "SPKOUTLP",
110
111			"RCV", "HPOUT2N",
112			"RCV", "HPOUT2P",
113
114			"LINE", "LINEOUT2N",
115			"LINE", "LINEOUT2P",
116
117			"IN1LP", "Main Mic",
118			"IN1LN", "Main Mic",
119
120			"IN1RP", "Headset Mic",
121			"IN1RN", "Headset Mic",
122
123			"IN2LN", "FM In",
124			"IN2RN", "FM In",
125
126			"Modem Out", "Modem TX",
127			"Modem RX", "Modem In",
128
129			"Bluetooth SPK", "TX",
130			"RX", "Bluetooth Mic";
131
132		pinctrl-names = "default";
133		pinctrl-0 = <&headset_det &earpath_sel>;
134
135		cpu {
136			sound-dai = <&i2s0>, <&bt_codec>;
137		};
138
139		codec {
140			sound-dai = <&wm8994>;
141		};
142	};
143};
144
145&aliases {
146	i2c8 = &i2c_fmradio;
147};
148
149&pinctrl0 {
150	pinctrl-names = "default";
151	pinctrl-0 = <&sleep_cfg>;
152
153	fm_i2c_pins: fm-i2c-pins {
154		samsung,pins = "gpd1-2", "gpd1-3";
155		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
156		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
157	};
158
159	headset_det: headset-det-pins {
160		samsung,pins = "gph0-6", "gph3-6";
161		samsung,pin-function = <S5PV210_PIN_FUNC_F>;
162		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
163	};
164
165	fm_irq: fm-irq-pins {
166		samsung,pins = "gpj2-4";
167		samsung,pin-function = <S5PV210_PIN_FUNC_INPUT>;
168		samsung,pin-pud = <S5PV210_PIN_PULL_UP>;
169		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
170	};
171
172	fm_rst: fm-rst-pins {
173		samsung,pins = "gpj2-5";
174		samsung,pin-function = <S5PV210_PIN_FUNC_OUTPUT>;
175		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
176		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
177	};
178
179	earpath_sel: earpath-sel-pins {
180		samsung,pins = "gpj2-6";
181		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
182		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
183	};
184
185	massmemory_en: massmemory-en-pins {
186		samsung,pins = "gpj2-7";
187		samsung,pin-function = <S5PV210_PIN_FUNC_OUTPUT>;
188		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
189		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
190	};
191
192	micbias_reg_ena: micbias-reg-ena-pins {
193		samsung,pins = "gpj4-2";
194		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
195		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
196	};
197
198	/* Based on CyanogenMod 3.0.101 kernel */
199	sleep_cfg: sleep-state {
200		PIN_SLP(gpa0-0, PREV, NONE);
201		PIN_SLP(gpa0-1, PREV, NONE);
202		PIN_SLP(gpa0-2, PREV, NONE);
203		PIN_SLP(gpa0-3, OUT1, NONE);
204		PIN_SLP(gpa0-4, INPUT, DOWN);
205		PIN_SLP(gpa0-5, OUT0, NONE);
206		PIN_SLP(gpa0-6, INPUT, DOWN);
207		PIN_SLP(gpa0-7, OUT1, NONE);
208
209		PIN_SLP(gpa1-0, INPUT, DOWN);
210		PIN_SLP(gpa1-1, OUT0, NONE);
211		PIN_SLP(gpa1-2, INPUT, NONE);
212		PIN_SLP(gpa1-3, OUT0, NONE);
213
214		PIN_SLP(gpb-0, OUT0, NONE);
215		PIN_SLP(gpb-1, OUT1, NONE);
216		PIN_SLP(gpb-2, OUT0, NONE);
217		PIN_SLP(gpb-3, PREV, NONE);
218		PIN_SLP(gpb-4, INPUT, NONE);
219		PIN_SLP(gpb-5, PREV, NONE);
220		PIN_SLP(gpb-6, INPUT, DOWN);
221		PIN_SLP(gpb-7, OUT0, NONE);
222
223		PIN_SLP(gpc0-0, OUT0, NONE);
224		PIN_SLP(gpc0-1, INPUT, DOWN);
225		PIN_SLP(gpc0-2, OUT0, NONE);
226		PIN_SLP(gpc0-3, INPUT, NONE);
227		PIN_SLP(gpc0-4, OUT0, NONE);
228
229		PIN_SLP(gpc1-0, INPUT, DOWN);
230		PIN_SLP(gpc1-1, INPUT, DOWN);
231		PIN_SLP(gpc1-2, INPUT, DOWN);
232		PIN_SLP(gpc1-3, INPUT, DOWN);
233		PIN_SLP(gpc1-4, INPUT, DOWN);
234
235		PIN_SLP(gpd0-0, INPUT, DOWN);
236		PIN_SLP(gpd0-1, OUT0, NONE);
237		PIN_SLP(gpd0-2, INPUT, DOWN);
238		PIN_SLP(gpd0-3, INPUT, DOWN);
239
240		PIN_SLP(gpd1-0, INPUT, NONE);
241		PIN_SLP(gpd1-1, INPUT, NONE);
242		PIN_SLP(gpd1-2, INPUT, NONE);
243		PIN_SLP(gpd1-3, INPUT, NONE);
244		PIN_SLP(gpd1-4, INPUT, DOWN);
245		PIN_SLP(gpd1-5, INPUT, DOWN);
246
247		PIN_SLP(gpe0-0, INPUT, DOWN);
248		PIN_SLP(gpe0-1, INPUT, DOWN);
249		PIN_SLP(gpe0-2, INPUT, DOWN);
250		PIN_SLP(gpe0-3, INPUT, DOWN);
251		PIN_SLP(gpe0-4, INPUT, DOWN);
252		PIN_SLP(gpe0-5, INPUT, DOWN);
253		PIN_SLP(gpe0-6, INPUT, DOWN);
254		PIN_SLP(gpe0-7, INPUT, DOWN);
255
256		PIN_SLP(gpe1-0, INPUT, DOWN);
257		PIN_SLP(gpe1-1, INPUT, DOWN);
258		PIN_SLP(gpe1-2, INPUT, DOWN);
259		PIN_SLP(gpe1-3, OUT0, NONE);
260		PIN_SLP(gpe1-4, INPUT, DOWN);
261
262		PIN_SLP(gpf0-0, OUT0, NONE);
263		PIN_SLP(gpf0-1, OUT0, NONE);
264		PIN_SLP(gpf0-2, OUT0, NONE);
265		PIN_SLP(gpf0-3, OUT0, NONE);
266		PIN_SLP(gpf0-4, OUT0, NONE);
267		PIN_SLP(gpf0-5, OUT0, NONE);
268		PIN_SLP(gpf0-6, OUT0, NONE);
269		PIN_SLP(gpf0-7, OUT0, NONE);
270
271		PIN_SLP(gpf1-0, OUT0, NONE);
272		PIN_SLP(gpf1-1, OUT0, NONE);
273		PIN_SLP(gpf1-2, OUT0, NONE);
274		PIN_SLP(gpf1-3, OUT0, NONE);
275		PIN_SLP(gpf1-4, OUT0, NONE);
276		PIN_SLP(gpf1-5, OUT0, NONE);
277		PIN_SLP(gpf1-6, OUT0, NONE);
278		PIN_SLP(gpf1-7, OUT0, NONE);
279
280		PIN_SLP(gpf2-0, OUT0, NONE);
281		PIN_SLP(gpf2-1, OUT0, NONE);
282		PIN_SLP(gpf2-2, OUT0, NONE);
283		PIN_SLP(gpf2-3, OUT0, NONE);
284		PIN_SLP(gpf2-4, OUT0, NONE);
285		PIN_SLP(gpf2-5, OUT0, NONE);
286		PIN_SLP(gpf2-6, OUT0, NONE);
287		PIN_SLP(gpf2-7, OUT0, NONE);
288
289		PIN_SLP(gpf3-0, OUT0, NONE);
290		PIN_SLP(gpf3-1, OUT0, NONE);
291		PIN_SLP(gpf3-2, OUT0, NONE);
292		PIN_SLP(gpf3-3, OUT0, NONE);
293		PIN_SLP(gpf3-4, PREV, NONE);
294		PIN_SLP(gpf3-5, INPUT, DOWN);
295
296		PIN_SLP(gpg0-0, OUT0, NONE);
297		PIN_SLP(gpg0-1, INPUT, NONE);
298		PIN_SLP(gpg0-2, INPUT, NONE);
299		PIN_SLP(gpg0-3, INPUT, NONE);
300		PIN_SLP(gpg0-4, INPUT, NONE);
301		PIN_SLP(gpg0-5, INPUT, NONE);
302		PIN_SLP(gpg0-6, INPUT, NONE);
303
304		PIN_SLP(gpg1-0, OUT0, NONE);
305		PIN_SLP(gpg1-1, OUT1, NONE);
306		PIN_SLP(gpg1-2, PREV, NONE);
307		PIN_SLP(gpg1-3, OUT1, NONE);
308		PIN_SLP(gpg1-4, OUT1, NONE);
309		PIN_SLP(gpg1-5, OUT1, NONE);
310		PIN_SLP(gpg1-6, OUT1, NONE);
311
312		PIN_SLP(gpg2-0, OUT0, NONE);
313		PIN_SLP(gpg2-1, OUT0, NONE);
314		PIN_SLP(gpg2-2, INPUT, NONE);
315		PIN_SLP(gpg2-3, OUT0, NONE);
316		PIN_SLP(gpg2-4, OUT0, NONE);
317		PIN_SLP(gpg2-5, OUT0, NONE);
318		PIN_SLP(gpg2-6, OUT0, NONE);
319
320		PIN_SLP(gpg3-0, OUT1, NONE);
321		PIN_SLP(gpg3-1, OUT0, NONE);
322		PIN_SLP(gpg3-2, INPUT, NONE);
323		PIN_SLP(gpg3-3, INPUT, DOWN);
324		PIN_SLP(gpg3-4, OUT0, NONE);
325		PIN_SLP(gpg3-5, OUT0, NONE);
326		PIN_SLP(gpg3-6, INPUT, DOWN);
327
328		PIN_SLP(gpi-0, PREV, NONE);
329		PIN_SLP(gpi-1, INPUT, DOWN);
330		PIN_SLP(gpi-2, PREV, NONE);
331		PIN_SLP(gpi-3, PREV, NONE);
332		PIN_SLP(gpi-4, PREV, NONE);
333		PIN_SLP(gpi-5, INPUT, DOWN);
334		PIN_SLP(gpi-6, INPUT, DOWN);
335
336		PIN_SLP(gpj0-0, INPUT, NONE);
337		PIN_SLP(gpj0-1, INPUT, NONE);
338		PIN_SLP(gpj0-2, INPUT, NONE);
339		PIN_SLP(gpj0-3, INPUT, NONE);
340		PIN_SLP(gpj0-4, INPUT, NONE);
341		PIN_SLP(gpj0-5, INPUT, DOWN);
342		PIN_SLP(gpj0-6, OUT0, NONE);
343		PIN_SLP(gpj0-7, INPUT, NONE);
344
345		PIN_SLP(gpj1-0, INPUT, DOWN);
346		PIN_SLP(gpj1-1, OUT0, NONE);
347		PIN_SLP(gpj1-2, INPUT, DOWN);
348		PIN_SLP(gpj1-3, PREV, NONE);
349		PIN_SLP(gpj1-4, PREV, NONE);
350		PIN_SLP(gpj1-5, OUT0, NONE);
351
352		PIN_SLP(gpj2-0, INPUT, DOWN);
353		PIN_SLP(gpj2-1, INPUT, DOWN);
354		PIN_SLP(gpj2-2, OUT0, NONE);
355		PIN_SLP(gpj2-3, INPUT, DOWN);
356		PIN_SLP(gpj2-4, INPUT, UP);
357		PIN_SLP(gpj2-5, PREV, NONE);
358		PIN_SLP(gpj2-6, PREV, NONE);
359		PIN_SLP(gpj2-7, OUT1, NONE);
360
361		PIN_SLP(gpj3-0, INPUT, NONE);
362		PIN_SLP(gpj3-1, INPUT, NONE);
363		PIN_SLP(gpj3-2, OUT0, NONE);
364		PIN_SLP(gpj3-3, INPUT, DOWN);
365		PIN_SLP(gpj3-4, INPUT, NONE);
366		PIN_SLP(gpj3-5, INPUT, NONE);
367		PIN_SLP(gpj3-6, INPUT, NONE);
368		PIN_SLP(gpj3-7, INPUT, NONE);
369
370		PIN_SLP(gpj4-0, INPUT, NONE);
371		PIN_SLP(gpj4-1, INPUT, DOWN);
372		PIN_SLP(gpj4-2, PREV, NONE);
373		PIN_SLP(gpj4-3, INPUT, NONE);
374		PIN_SLP(gpj4-4, INPUT, DOWN);
375
376		PIN_SLP(mp01-0, INPUT, DOWN);
377		PIN_SLP(mp01-1, OUT0, NONE);
378		PIN_SLP(mp01-2, INPUT, DOWN);
379		PIN_SLP(mp01-3, INPUT, DOWN);
380		PIN_SLP(mp01-4, OUT1, NONE);
381		PIN_SLP(mp01-5, INPUT, DOWN);
382		PIN_SLP(mp01-6, INPUT, DOWN);
383		PIN_SLP(mp01-7, INPUT, DOWN);
384
385		PIN_SLP(mp02-0, INPUT, DOWN);
386		PIN_SLP(mp02-1, INPUT, DOWN);
387		PIN_SLP(mp02-2, INPUT, NONE);
388		PIN_SLP(mp02-3, INPUT, DOWN);
389
390		PIN_SLP(mp03-0, INPUT, DOWN);
391		PIN_SLP(mp03-1, INPUT, DOWN);
392		PIN_SLP(mp03-2, OUT1, NONE);
393		PIN_SLP(mp03-3, OUT0, NONE);
394		PIN_SLP(mp03-4, INPUT, NONE);
395		PIN_SLP(mp03-5, OUT1, NONE);
396		PIN_SLP(mp03-6, INPUT, DOWN);
397		PIN_SLP(mp03-7, INPUT, DOWN);
398
399		PIN_SLP(mp04-0, INPUT, DOWN);
400		PIN_SLP(mp04-1, OUT0, NONE);
401		PIN_SLP(mp04-2, INPUT, DOWN);
402		PIN_SLP(mp04-3, OUT0, NONE);
403		PIN_SLP(mp04-4, INPUT, DOWN);
404		PIN_SLP(mp04-5, INPUT, DOWN);
405		PIN_SLP(mp04-6, OUT0, NONE);
406		PIN_SLP(mp04-7, INPUT, DOWN);
407
408		PIN_SLP(mp05-0, INPUT, NONE);
409		PIN_SLP(mp05-1, INPUT, NONE);
410		PIN_SLP(mp05-2, INPUT, NONE);
411		PIN_SLP(mp05-3, INPUT, NONE);
412		PIN_SLP(mp05-4, INPUT, DOWN);
413		PIN_SLP(mp05-5, OUT0, NONE);
414		PIN_SLP(mp05-6, INPUT, DOWN);
415		PIN_SLP(mp05-7, PREV, NONE);
416
417		PIN_SLP(mp06-0, INPUT, DOWN);
418		PIN_SLP(mp06-1, INPUT, DOWN);
419		PIN_SLP(mp06-2, INPUT, DOWN);
420		PIN_SLP(mp06-3, INPUT, DOWN);
421		PIN_SLP(mp06-4, INPUT, DOWN);
422		PIN_SLP(mp06-5, INPUT, DOWN);
423		PIN_SLP(mp06-6, INPUT, DOWN);
424		PIN_SLP(mp06-7, INPUT, DOWN);
425
426		PIN_SLP(mp07-0, INPUT, DOWN);
427		PIN_SLP(mp07-1, INPUT, DOWN);
428		PIN_SLP(mp07-2, INPUT, DOWN);
429		PIN_SLP(mp07-3, INPUT, DOWN);
430		PIN_SLP(mp07-4, INPUT, DOWN);
431		PIN_SLP(mp07-5, INPUT, DOWN);
432		PIN_SLP(mp07-6, INPUT, DOWN);
433		PIN_SLP(mp07-7, INPUT, DOWN);
434	};
435};
436
437&sdhci0 {
438	bus-width = <4>;
439	non-removable;
440	mmc-pwrseq = <&nand_pwrseq>;
441	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
442	pinctrl-names = "default";
443	status = "okay";
444
445	assigned-clocks = <&clocks MOUT_MMC0>, <&clocks SCLK_MMC0>;
446	assigned-clock-rates = <0>, <52000000>;
447	assigned-clock-parents = <&clocks MOUT_MPLL>;
448};
449