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		audio-routing = "HP", "HPOUT1L",
105				"HP", "HPOUT1R",
106
107				"SPK", "SPKOUTLN",
108				"SPK", "SPKOUTLP",
109
110				"RCV", "HPOUT2N",
111				"RCV", "HPOUT2P",
112
113				"LINE", "LINEOUT2N",
114				"LINE", "LINEOUT2P",
115
116				"IN1LP", "Main Mic",
117				"IN1LN", "Main Mic",
118
119				"IN1RP", "Headset Mic",
120				"IN1RN", "Headset Mic",
121
122				"IN2LN", "FM In",
123				"IN2RN", "FM In",
124
125				"Modem Out", "Modem TX",
126				"Modem RX", "Modem In",
127
128				"Bluetooth SPK", "TX",
129				"RX", "Bluetooth Mic";
130
131		pinctrl-names = "default";
132		pinctrl-0 = <&headset_det &earpath_sel>;
133
134		cpu {
135			sound-dai = <&i2s0>, <&bt_codec>;
136		};
137
138		codec {
139			sound-dai = <&wm8994>;
140		};
141	};
142};
143
144&aliases {
145	i2c8 = &i2c_fmradio;
146};
147
148&pinctrl0 {
149	pinctrl-names = "default";
150	pinctrl-0 = <&sleep_cfg>;
151
152	fm_i2c_pins: fm-i2c-pins {
153		samsung,pins = "gpd1-2", "gpd1-3";
154		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
155		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
156	};
157
158	headset_det: headset-det-pins {
159		samsung,pins = "gph0-6", "gph3-6";
160		samsung,pin-function = <S5PV210_PIN_FUNC_F>;
161		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
162	};
163
164	fm_irq: fm-irq-pins {
165		samsung,pins = "gpj2-4";
166		samsung,pin-function = <S5PV210_PIN_FUNC_INPUT>;
167		samsung,pin-pud = <S5PV210_PIN_PULL_UP>;
168		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
169	};
170
171	fm_rst: fm-rst-pins {
172		samsung,pins = "gpj2-5";
173		samsung,pin-function = <S5PV210_PIN_FUNC_OUTPUT>;
174		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
175		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
176	};
177
178	earpath_sel: earpath-sel-pins {
179		samsung,pins = "gpj2-6";
180		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
181		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
182	};
183
184	massmemory_en: massmemory-en-pins {
185		samsung,pins = "gpj2-7";
186		samsung,pin-function = <S5PV210_PIN_FUNC_OUTPUT>;
187		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
188		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
189	};
190
191	micbias_reg_ena: micbias-reg-ena-pins {
192		samsung,pins = "gpj4-2";
193		samsung,pin-pud = <S5PV210_PIN_PULL_NONE>;
194		samsung,pin-drv = <S5PV210_PIN_DRV_LV1>;
195	};
196
197	/* Based on CyanogenMod 3.0.101 kernel */
198	sleep_cfg: sleep-state {
199		PIN_SLP(gpa0-0, PREV, NONE);
200		PIN_SLP(gpa0-1, PREV, NONE);
201		PIN_SLP(gpa0-2, PREV, NONE);
202		PIN_SLP(gpa0-3, OUT1, NONE);
203		PIN_SLP(gpa0-4, INPUT, DOWN);
204		PIN_SLP(gpa0-5, OUT0, NONE);
205		PIN_SLP(gpa0-6, INPUT, DOWN);
206		PIN_SLP(gpa0-7, OUT1, NONE);
207
208		PIN_SLP(gpa1-0, INPUT, DOWN);
209		PIN_SLP(gpa1-1, OUT0, NONE);
210		PIN_SLP(gpa1-2, INPUT, NONE);
211		PIN_SLP(gpa1-3, OUT0, NONE);
212
213		PIN_SLP(gpb-0, OUT0, NONE);
214		PIN_SLP(gpb-1, OUT1, NONE);
215		PIN_SLP(gpb-2, OUT0, NONE);
216		PIN_SLP(gpb-3, PREV, NONE);
217		PIN_SLP(gpb-4, INPUT, NONE);
218		PIN_SLP(gpb-5, PREV, NONE);
219		PIN_SLP(gpb-6, INPUT, DOWN);
220		PIN_SLP(gpb-7, OUT0, NONE);
221
222		PIN_SLP(gpc0-0, OUT0, NONE);
223		PIN_SLP(gpc0-1, INPUT, DOWN);
224		PIN_SLP(gpc0-2, OUT0, NONE);
225		PIN_SLP(gpc0-3, INPUT, NONE);
226		PIN_SLP(gpc0-4, OUT0, NONE);
227
228		PIN_SLP(gpc1-0, INPUT, DOWN);
229		PIN_SLP(gpc1-1, INPUT, DOWN);
230		PIN_SLP(gpc1-2, INPUT, DOWN);
231		PIN_SLP(gpc1-3, INPUT, DOWN);
232		PIN_SLP(gpc1-4, INPUT, DOWN);
233
234		PIN_SLP(gpd0-0, INPUT, DOWN);
235		PIN_SLP(gpd0-1, OUT0, NONE);
236		PIN_SLP(gpd0-2, INPUT, DOWN);
237		PIN_SLP(gpd0-3, INPUT, DOWN);
238
239		PIN_SLP(gpd1-0, INPUT, NONE);
240		PIN_SLP(gpd1-1, INPUT, NONE);
241		PIN_SLP(gpd1-2, INPUT, NONE);
242		PIN_SLP(gpd1-3, INPUT, NONE);
243		PIN_SLP(gpd1-4, INPUT, DOWN);
244		PIN_SLP(gpd1-5, INPUT, DOWN);
245
246		PIN_SLP(gpe0-0, INPUT, DOWN);
247		PIN_SLP(gpe0-1, INPUT, DOWN);
248		PIN_SLP(gpe0-2, INPUT, DOWN);
249		PIN_SLP(gpe0-3, INPUT, DOWN);
250		PIN_SLP(gpe0-4, INPUT, DOWN);
251		PIN_SLP(gpe0-5, INPUT, DOWN);
252		PIN_SLP(gpe0-6, INPUT, DOWN);
253		PIN_SLP(gpe0-7, INPUT, DOWN);
254
255		PIN_SLP(gpe1-0, INPUT, DOWN);
256		PIN_SLP(gpe1-1, INPUT, DOWN);
257		PIN_SLP(gpe1-2, INPUT, DOWN);
258		PIN_SLP(gpe1-3, OUT0, NONE);
259		PIN_SLP(gpe1-4, INPUT, DOWN);
260
261		PIN_SLP(gpf0-0, OUT0, NONE);
262		PIN_SLP(gpf0-1, OUT0, NONE);
263		PIN_SLP(gpf0-2, OUT0, NONE);
264		PIN_SLP(gpf0-3, OUT0, NONE);
265		PIN_SLP(gpf0-4, OUT0, NONE);
266		PIN_SLP(gpf0-5, OUT0, NONE);
267		PIN_SLP(gpf0-6, OUT0, NONE);
268		PIN_SLP(gpf0-7, OUT0, NONE);
269
270		PIN_SLP(gpf1-0, OUT0, NONE);
271		PIN_SLP(gpf1-1, OUT0, NONE);
272		PIN_SLP(gpf1-2, OUT0, NONE);
273		PIN_SLP(gpf1-3, OUT0, NONE);
274		PIN_SLP(gpf1-4, OUT0, NONE);
275		PIN_SLP(gpf1-5, OUT0, NONE);
276		PIN_SLP(gpf1-6, OUT0, NONE);
277		PIN_SLP(gpf1-7, OUT0, NONE);
278
279		PIN_SLP(gpf2-0, OUT0, NONE);
280		PIN_SLP(gpf2-1, OUT0, NONE);
281		PIN_SLP(gpf2-2, OUT0, NONE);
282		PIN_SLP(gpf2-3, OUT0, NONE);
283		PIN_SLP(gpf2-4, OUT0, NONE);
284		PIN_SLP(gpf2-5, OUT0, NONE);
285		PIN_SLP(gpf2-6, OUT0, NONE);
286		PIN_SLP(gpf2-7, OUT0, NONE);
287
288		PIN_SLP(gpf3-0, OUT0, NONE);
289		PIN_SLP(gpf3-1, OUT0, NONE);
290		PIN_SLP(gpf3-2, OUT0, NONE);
291		PIN_SLP(gpf3-3, OUT0, NONE);
292		PIN_SLP(gpf3-4, PREV, NONE);
293		PIN_SLP(gpf3-5, INPUT, DOWN);
294
295		PIN_SLP(gpg0-0, OUT0, NONE);
296		PIN_SLP(gpg0-1, INPUT, NONE);
297		PIN_SLP(gpg0-2, INPUT, NONE);
298		PIN_SLP(gpg0-3, INPUT, NONE);
299		PIN_SLP(gpg0-4, INPUT, NONE);
300		PIN_SLP(gpg0-5, INPUT, NONE);
301		PIN_SLP(gpg0-6, INPUT, NONE);
302
303		PIN_SLP(gpg1-0, OUT0, NONE);
304		PIN_SLP(gpg1-1, OUT1, NONE);
305		PIN_SLP(gpg1-2, PREV, NONE);
306		PIN_SLP(gpg1-3, OUT1, NONE);
307		PIN_SLP(gpg1-4, OUT1, NONE);
308		PIN_SLP(gpg1-5, OUT1, NONE);
309		PIN_SLP(gpg1-6, OUT1, NONE);
310
311		PIN_SLP(gpg2-0, OUT0, NONE);
312		PIN_SLP(gpg2-1, OUT0, NONE);
313		PIN_SLP(gpg2-2, INPUT, NONE);
314		PIN_SLP(gpg2-3, OUT0, NONE);
315		PIN_SLP(gpg2-4, OUT0, NONE);
316		PIN_SLP(gpg2-5, OUT0, NONE);
317		PIN_SLP(gpg2-6, OUT0, NONE);
318
319		PIN_SLP(gpg3-0, OUT1, NONE);
320		PIN_SLP(gpg3-1, OUT0, NONE);
321		PIN_SLP(gpg3-2, INPUT, NONE);
322		PIN_SLP(gpg3-3, INPUT, DOWN);
323		PIN_SLP(gpg3-4, OUT0, NONE);
324		PIN_SLP(gpg3-5, OUT0, NONE);
325		PIN_SLP(gpg3-6, INPUT, DOWN);
326
327		PIN_SLP(gpi-0, PREV, NONE);
328		PIN_SLP(gpi-1, INPUT, DOWN);
329		PIN_SLP(gpi-2, PREV, NONE);
330		PIN_SLP(gpi-3, PREV, NONE);
331		PIN_SLP(gpi-4, PREV, NONE);
332		PIN_SLP(gpi-5, INPUT, DOWN);
333		PIN_SLP(gpi-6, INPUT, DOWN);
334
335		PIN_SLP(gpj0-0, INPUT, NONE);
336		PIN_SLP(gpj0-1, INPUT, NONE);
337		PIN_SLP(gpj0-2, INPUT, NONE);
338		PIN_SLP(gpj0-3, INPUT, NONE);
339		PIN_SLP(gpj0-4, INPUT, NONE);
340		PIN_SLP(gpj0-5, INPUT, DOWN);
341		PIN_SLP(gpj0-6, OUT0, NONE);
342		PIN_SLP(gpj0-7, INPUT, NONE);
343
344		PIN_SLP(gpj1-0, INPUT, DOWN);
345		PIN_SLP(gpj1-1, OUT0, NONE);
346		PIN_SLP(gpj1-2, INPUT, DOWN);
347		PIN_SLP(gpj1-3, PREV, NONE);
348		PIN_SLP(gpj1-4, PREV, NONE);
349		PIN_SLP(gpj1-5, OUT0, NONE);
350
351		PIN_SLP(gpj2-0, INPUT, DOWN);
352		PIN_SLP(gpj2-1, INPUT, DOWN);
353		PIN_SLP(gpj2-2, OUT0, NONE);
354		PIN_SLP(gpj2-3, INPUT, DOWN);
355		PIN_SLP(gpj2-4, INPUT, UP);
356		PIN_SLP(gpj2-5, PREV, NONE);
357		PIN_SLP(gpj2-6, PREV, NONE);
358		PIN_SLP(gpj2-7, OUT1, NONE);
359
360		PIN_SLP(gpj3-0, INPUT, NONE);
361		PIN_SLP(gpj3-1, INPUT, NONE);
362		PIN_SLP(gpj3-2, OUT0, NONE);
363		PIN_SLP(gpj3-3, INPUT, DOWN);
364		PIN_SLP(gpj3-4, INPUT, NONE);
365		PIN_SLP(gpj3-5, INPUT, NONE);
366		PIN_SLP(gpj3-6, INPUT, NONE);
367		PIN_SLP(gpj3-7, INPUT, NONE);
368
369		PIN_SLP(gpj4-0, INPUT, NONE);
370		PIN_SLP(gpj4-1, INPUT, DOWN);
371		PIN_SLP(gpj4-2, PREV, NONE);
372		PIN_SLP(gpj4-3, INPUT, NONE);
373		PIN_SLP(gpj4-4, INPUT, DOWN);
374
375		PIN_SLP(mp01-0, INPUT, DOWN);
376		PIN_SLP(mp01-1, OUT0, NONE);
377		PIN_SLP(mp01-2, INPUT, DOWN);
378		PIN_SLP(mp01-3, INPUT, DOWN);
379		PIN_SLP(mp01-4, OUT1, NONE);
380		PIN_SLP(mp01-5, INPUT, DOWN);
381		PIN_SLP(mp01-6, INPUT, DOWN);
382		PIN_SLP(mp01-7, INPUT, DOWN);
383
384		PIN_SLP(mp02-0, INPUT, DOWN);
385		PIN_SLP(mp02-1, INPUT, DOWN);
386		PIN_SLP(mp02-2, INPUT, NONE);
387		PIN_SLP(mp02-3, INPUT, DOWN);
388
389		PIN_SLP(mp03-0, INPUT, DOWN);
390		PIN_SLP(mp03-1, INPUT, DOWN);
391		PIN_SLP(mp03-2, OUT1, NONE);
392		PIN_SLP(mp03-3, OUT0, NONE);
393		PIN_SLP(mp03-4, INPUT, NONE);
394		PIN_SLP(mp03-5, OUT1, NONE);
395		PIN_SLP(mp03-6, INPUT, DOWN);
396		PIN_SLP(mp03-7, INPUT, DOWN);
397
398		PIN_SLP(mp04-0, INPUT, DOWN);
399		PIN_SLP(mp04-1, OUT0, NONE);
400		PIN_SLP(mp04-2, INPUT, DOWN);
401		PIN_SLP(mp04-3, OUT0, NONE);
402		PIN_SLP(mp04-4, INPUT, DOWN);
403		PIN_SLP(mp04-5, INPUT, DOWN);
404		PIN_SLP(mp04-6, OUT0, NONE);
405		PIN_SLP(mp04-7, INPUT, DOWN);
406
407		PIN_SLP(mp05-0, INPUT, NONE);
408		PIN_SLP(mp05-1, INPUT, NONE);
409		PIN_SLP(mp05-2, INPUT, NONE);
410		PIN_SLP(mp05-3, INPUT, NONE);
411		PIN_SLP(mp05-4, INPUT, DOWN);
412		PIN_SLP(mp05-5, OUT0, NONE);
413		PIN_SLP(mp05-6, INPUT, DOWN);
414		PIN_SLP(mp05-7, PREV, NONE);
415
416		PIN_SLP(mp06-0, INPUT, DOWN);
417		PIN_SLP(mp06-1, INPUT, DOWN);
418		PIN_SLP(mp06-2, INPUT, DOWN);
419		PIN_SLP(mp06-3, INPUT, DOWN);
420		PIN_SLP(mp06-4, INPUT, DOWN);
421		PIN_SLP(mp06-5, INPUT, DOWN);
422		PIN_SLP(mp06-6, INPUT, DOWN);
423		PIN_SLP(mp06-7, INPUT, DOWN);
424
425		PIN_SLP(mp07-0, INPUT, DOWN);
426		PIN_SLP(mp07-1, INPUT, DOWN);
427		PIN_SLP(mp07-2, INPUT, DOWN);
428		PIN_SLP(mp07-3, INPUT, DOWN);
429		PIN_SLP(mp07-4, INPUT, DOWN);
430		PIN_SLP(mp07-5, INPUT, DOWN);
431		PIN_SLP(mp07-6, INPUT, DOWN);
432		PIN_SLP(mp07-7, INPUT, DOWN);
433	};
434};
435
436&sdhci0 {
437	bus-width = <4>;
438	non-removable;
439	mmc-pwrseq = <&nand_pwrseq>;
440	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
441	pinctrl-names = "default";
442	status = "okay";
443
444	assigned-clocks = <&clocks MOUT_MMC0>, <&clocks SCLK_MMC0>;
445	assigned-clock-rates = <0>, <52000000>;
446	assigned-clock-parents = <&clocks MOUT_MPLL>;
447};
448