xref: /freebsd/sys/contrib/device-tree/src/arm64/exynos/exynos850-e850-96.dts (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
1c9ccf3a3SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0
2c9ccf3a3SEmmanuel Vadot/*
3c9ccf3a3SEmmanuel Vadot * WinLink E850-96 board device tree source
4c9ccf3a3SEmmanuel Vadot *
5c9ccf3a3SEmmanuel Vadot * Copyright (C) 2018 Samsung Electronics Co., Ltd.
6c9ccf3a3SEmmanuel Vadot * Copyright (C) 2021 Linaro Ltd.
7c9ccf3a3SEmmanuel Vadot *
8c9ccf3a3SEmmanuel Vadot * Device tree source file for WinLink's E850-96 board which is based on
9c9ccf3a3SEmmanuel Vadot * Samsung Exynos850 SoC.
10c9ccf3a3SEmmanuel Vadot */
11c9ccf3a3SEmmanuel Vadot
12c9ccf3a3SEmmanuel Vadot/dts-v1/;
13c9ccf3a3SEmmanuel Vadot
14c9ccf3a3SEmmanuel Vadot#include "exynos850.dtsi"
15c9ccf3a3SEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
16c9ccf3a3SEmmanuel Vadot#include <dt-bindings/input/input.h>
17c9ccf3a3SEmmanuel Vadot#include <dt-bindings/leds/common.h>
18c9ccf3a3SEmmanuel Vadot
19c9ccf3a3SEmmanuel Vadot/ {
20c9ccf3a3SEmmanuel Vadot	model = "WinLink E850-96 board";
21c9ccf3a3SEmmanuel Vadot	compatible = "winlink,e850-96", "samsung,exynos850";
22c9ccf3a3SEmmanuel Vadot
23d5b0e70fSEmmanuel Vadot	aliases {
24d5b0e70fSEmmanuel Vadot		mmc0 = &mmc_0;
25d5b0e70fSEmmanuel Vadot		serial0 = &serial_0;
26d5b0e70fSEmmanuel Vadot	};
27d5b0e70fSEmmanuel Vadot
28c9ccf3a3SEmmanuel Vadot	chosen {
29c9ccf3a3SEmmanuel Vadot		stdout-path = &serial_0;
30c9ccf3a3SEmmanuel Vadot	};
31c9ccf3a3SEmmanuel Vadot
32*84943d6fSEmmanuel Vadot	connector {
33*84943d6fSEmmanuel Vadot		compatible = "gpio-usb-b-connector", "usb-b-connector";
34*84943d6fSEmmanuel Vadot		label = "micro-USB";
35*84943d6fSEmmanuel Vadot		type = "micro";
36*84943d6fSEmmanuel Vadot		vbus-supply = <&reg_usb_host_vbus>;
37*84943d6fSEmmanuel Vadot		id-gpios = <&gpa0 0 GPIO_ACTIVE_LOW>;
38*84943d6fSEmmanuel Vadot		pinctrl-names = "default";
39*84943d6fSEmmanuel Vadot		pinctrl-0 = <&micro_usb_det_pins>;
40*84943d6fSEmmanuel Vadot
41*84943d6fSEmmanuel Vadot		port {
42*84943d6fSEmmanuel Vadot			usb_dr_connector: endpoint {
43*84943d6fSEmmanuel Vadot				remote-endpoint = <&usb1_drd_sw>;
44*84943d6fSEmmanuel Vadot			};
45*84943d6fSEmmanuel Vadot		};
46*84943d6fSEmmanuel Vadot	};
47*84943d6fSEmmanuel Vadot
48c9ccf3a3SEmmanuel Vadot	/*
49c9ccf3a3SEmmanuel Vadot	 * RAM: 4 GiB (eMCP):
50c9ccf3a3SEmmanuel Vadot	 *   - 2 GiB at 0x80000000
51c9ccf3a3SEmmanuel Vadot	 *   - 2 GiB at 0x880000000
52c9ccf3a3SEmmanuel Vadot	 *
53c9ccf3a3SEmmanuel Vadot	 * 0xbab00000..0xbfffffff: secure memory (85 MiB).
54c9ccf3a3SEmmanuel Vadot	 */
55c9ccf3a3SEmmanuel Vadot	memory@80000000 {
56c9ccf3a3SEmmanuel Vadot		device_type = "memory";
57c9ccf3a3SEmmanuel Vadot		reg = <0x0 0x80000000 0x3ab00000>,
58c9ccf3a3SEmmanuel Vadot		      <0x0 0xc0000000 0x40000000>,
59c9ccf3a3SEmmanuel Vadot		      <0x8 0x80000000 0x80000000>;
60c9ccf3a3SEmmanuel Vadot	};
61c9ccf3a3SEmmanuel Vadot
62c9ccf3a3SEmmanuel Vadot	gpio-keys {
63c9ccf3a3SEmmanuel Vadot		compatible = "gpio-keys";
64c9ccf3a3SEmmanuel Vadot		pinctrl-names = "default";
65c9ccf3a3SEmmanuel Vadot		pinctrl-0 = <&key_voldown_pins &key_volup_pins>;
66c9ccf3a3SEmmanuel Vadot
67c9ccf3a3SEmmanuel Vadot		volume-down-key {
68c9ccf3a3SEmmanuel Vadot			label = "Volume Down";
69c9ccf3a3SEmmanuel Vadot			linux,code = <KEY_VOLUMEDOWN>;
70c9ccf3a3SEmmanuel Vadot			gpios = <&gpa1 0 GPIO_ACTIVE_LOW>;
71c9ccf3a3SEmmanuel Vadot		};
72c9ccf3a3SEmmanuel Vadot
73c9ccf3a3SEmmanuel Vadot		volume-up-key {
74c9ccf3a3SEmmanuel Vadot			label = "Volume Up";
75c9ccf3a3SEmmanuel Vadot			linux,code = <KEY_VOLUMEUP>;
76c9ccf3a3SEmmanuel Vadot			gpios = <&gpa0 7 GPIO_ACTIVE_LOW>;
77c9ccf3a3SEmmanuel Vadot		};
78c9ccf3a3SEmmanuel Vadot	};
79c9ccf3a3SEmmanuel Vadot
80c9ccf3a3SEmmanuel Vadot	leds {
81c9ccf3a3SEmmanuel Vadot		compatible = "gpio-leds";
82c9ccf3a3SEmmanuel Vadot
83c9ccf3a3SEmmanuel Vadot		/* HEART_BEAT_LED */
84c9ccf3a3SEmmanuel Vadot		user_led1: led-1 {
85c9ccf3a3SEmmanuel Vadot			label = "yellow:user1";
86c9ccf3a3SEmmanuel Vadot			gpios = <&gpg2 2 GPIO_ACTIVE_HIGH>;
87c9ccf3a3SEmmanuel Vadot			color = <LED_COLOR_ID_YELLOW>;
88c9ccf3a3SEmmanuel Vadot			function = LED_FUNCTION_HEARTBEAT;
89c9ccf3a3SEmmanuel Vadot			linux,default-trigger = "heartbeat";
90c9ccf3a3SEmmanuel Vadot		};
91c9ccf3a3SEmmanuel Vadot
92c9ccf3a3SEmmanuel Vadot		/* eMMC_LED */
93c9ccf3a3SEmmanuel Vadot		user_led2: led-2 {
94c9ccf3a3SEmmanuel Vadot			label = "yellow:user2";
95c9ccf3a3SEmmanuel Vadot			gpios = <&gpg2 3 GPIO_ACTIVE_HIGH>;
96c9ccf3a3SEmmanuel Vadot			color = <LED_COLOR_ID_YELLOW>;
97c9ccf3a3SEmmanuel Vadot			linux,default-trigger = "mmc0";
98c9ccf3a3SEmmanuel Vadot		};
99c9ccf3a3SEmmanuel Vadot
100c9ccf3a3SEmmanuel Vadot		/* SD_LED */
101c9ccf3a3SEmmanuel Vadot		user_led3: led-3 {
102c9ccf3a3SEmmanuel Vadot			label = "white:user3";
103c9ccf3a3SEmmanuel Vadot			gpios = <&gpg2 4 GPIO_ACTIVE_HIGH>;
104c9ccf3a3SEmmanuel Vadot			color = <LED_COLOR_ID_WHITE>;
105c9ccf3a3SEmmanuel Vadot			function = LED_FUNCTION_SD;
106c9ccf3a3SEmmanuel Vadot			linux,default-trigger = "mmc2";
107c9ccf3a3SEmmanuel Vadot		};
108c9ccf3a3SEmmanuel Vadot
109c9ccf3a3SEmmanuel Vadot		/* WIFI_LED */
110c9ccf3a3SEmmanuel Vadot		wlan_active_led: led-4 {
111c9ccf3a3SEmmanuel Vadot			label = "yellow:wlan";
112c9ccf3a3SEmmanuel Vadot			gpios = <&gpg2 6 GPIO_ACTIVE_HIGH>;
113c9ccf3a3SEmmanuel Vadot			color = <LED_COLOR_ID_YELLOW>;
114c9ccf3a3SEmmanuel Vadot			function = LED_FUNCTION_WLAN;
115c9ccf3a3SEmmanuel Vadot			linux,default-trigger = "phy0tx";
116c9ccf3a3SEmmanuel Vadot			default-state = "off";
117c9ccf3a3SEmmanuel Vadot		};
118c9ccf3a3SEmmanuel Vadot
119c9ccf3a3SEmmanuel Vadot		/* BLUETOOTH_LED */
120c9ccf3a3SEmmanuel Vadot		bt_active_led: led-5 {
121c9ccf3a3SEmmanuel Vadot			label = "blue:bt";
122c9ccf3a3SEmmanuel Vadot			gpios = <&gpg2 7 GPIO_ACTIVE_HIGH>;
123c9ccf3a3SEmmanuel Vadot			color = <LED_COLOR_ID_BLUE>;
124c9ccf3a3SEmmanuel Vadot			function = LED_FUNCTION_BLUETOOTH;
125cb7aa33aSEmmanuel Vadot			linux,default-trigger = "hci0-power";
126c9ccf3a3SEmmanuel Vadot			default-state = "off";
127c9ccf3a3SEmmanuel Vadot		};
128c9ccf3a3SEmmanuel Vadot	};
129c9ccf3a3SEmmanuel Vadot
130*84943d6fSEmmanuel Vadot	/* TODO: Remove this once PMIC is implemented  */
131*84943d6fSEmmanuel Vadot	reg_dummy: regulator-0 {
132*84943d6fSEmmanuel Vadot		compatible = "regulator-fixed";
133*84943d6fSEmmanuel Vadot		regulator-name = "dummy_reg";
134*84943d6fSEmmanuel Vadot	};
135*84943d6fSEmmanuel Vadot
136*84943d6fSEmmanuel Vadot	reg_usb_host_vbus: regulator-1 {
137*84943d6fSEmmanuel Vadot		compatible = "regulator-fixed";
138*84943d6fSEmmanuel Vadot		regulator-name = "usb_host_vbus";
139*84943d6fSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
140*84943d6fSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
141*84943d6fSEmmanuel Vadot		gpio = <&gpa3 5 GPIO_ACTIVE_LOW>;
142*84943d6fSEmmanuel Vadot	};
143*84943d6fSEmmanuel Vadot
144*84943d6fSEmmanuel Vadot	reserved-memory {
145*84943d6fSEmmanuel Vadot		#address-cells = <2>;
146*84943d6fSEmmanuel Vadot		#size-cells = <1>;
147*84943d6fSEmmanuel Vadot		ranges;
148*84943d6fSEmmanuel Vadot
149*84943d6fSEmmanuel Vadot		ramoops@f0000000 {
150*84943d6fSEmmanuel Vadot			compatible = "ramoops";
151*84943d6fSEmmanuel Vadot			reg = <0x0 0xf0000000 0x200000>;
152*84943d6fSEmmanuel Vadot			record-size = <0x20000>;
153*84943d6fSEmmanuel Vadot			console-size = <0x20000>;
154*84943d6fSEmmanuel Vadot			ftrace-size = <0x100000>;
155*84943d6fSEmmanuel Vadot			pmsg-size = <0x20000>;
156*84943d6fSEmmanuel Vadot		};
157*84943d6fSEmmanuel Vadot	};
158*84943d6fSEmmanuel Vadot
159c9ccf3a3SEmmanuel Vadot	/*
160c9ccf3a3SEmmanuel Vadot	 * RTC clock (XrtcXTI); external, must be 32.768 kHz.
161c9ccf3a3SEmmanuel Vadot	 *
162c9ccf3a3SEmmanuel Vadot	 * TODO: Remove this once RTC clock is implemented properly as part of
163c9ccf3a3SEmmanuel Vadot	 *       PMIC driver.
164c9ccf3a3SEmmanuel Vadot	 */
165c9ccf3a3SEmmanuel Vadot	rtcclk: clock-rtcclk {
166c9ccf3a3SEmmanuel Vadot		compatible = "fixed-clock";
167c9ccf3a3SEmmanuel Vadot		clock-output-names = "rtcclk";
168c9ccf3a3SEmmanuel Vadot		#clock-cells = <0>;
169c9ccf3a3SEmmanuel Vadot		clock-frequency = <32768>;
170c9ccf3a3SEmmanuel Vadot	};
171c9ccf3a3SEmmanuel Vadot};
172c9ccf3a3SEmmanuel Vadot
173c9ccf3a3SEmmanuel Vadot&cmu_hsi {
174c9ccf3a3SEmmanuel Vadot	clocks = <&oscclk>, <&rtcclk>,
175c9ccf3a3SEmmanuel Vadot		 <&cmu_top CLK_DOUT_HSI_BUS>,
176c9ccf3a3SEmmanuel Vadot		 <&cmu_top CLK_DOUT_HSI_MMC_CARD>,
177c9ccf3a3SEmmanuel Vadot		 <&cmu_top CLK_DOUT_HSI_USB20DRD>;
178c9ccf3a3SEmmanuel Vadot	clock-names = "oscclk", "rtcclk", "dout_hsi_bus",
179c9ccf3a3SEmmanuel Vadot		      "dout_hsi_mmc_card", "dout_hsi_usb20drd";
180c9ccf3a3SEmmanuel Vadot};
181c9ccf3a3SEmmanuel Vadot
182c9ccf3a3SEmmanuel Vadot&mmc_0 {
183c9ccf3a3SEmmanuel Vadot	status = "okay";
184c9ccf3a3SEmmanuel Vadot	mmc-hs200-1_8v;
185c9ccf3a3SEmmanuel Vadot	mmc-hs400-1_8v;
186c9ccf3a3SEmmanuel Vadot	cap-mmc-highspeed;
187c9ccf3a3SEmmanuel Vadot	non-removable;
188c9ccf3a3SEmmanuel Vadot	mmc-hs400-enhanced-strobe;
189c9ccf3a3SEmmanuel Vadot	card-detect-delay = <200>;
190c9ccf3a3SEmmanuel Vadot	clock-frequency = <800000000>;
191c9ccf3a3SEmmanuel Vadot	bus-width = <8>;
192c9ccf3a3SEmmanuel Vadot	samsung,dw-mshc-ciu-div = <3>;
193c9ccf3a3SEmmanuel Vadot	samsung,dw-mshc-sdr-timing = <0 4>;
194c9ccf3a3SEmmanuel Vadot	samsung,dw-mshc-ddr-timing = <2 4>;
195c9ccf3a3SEmmanuel Vadot	samsung,dw-mshc-hs400-timing = <0 2>;
196c9ccf3a3SEmmanuel Vadot
197c9ccf3a3SEmmanuel Vadot	pinctrl-names = "default";
198c9ccf3a3SEmmanuel Vadot	pinctrl-0 = <&sd0_clk_pins &sd0_cmd_pins &sd0_rdqs_pins &sd0_nreset_pins
199c9ccf3a3SEmmanuel Vadot		     &sd0_bus1_pins &sd0_bus4_pins &sd0_bus8_pins>;
200c9ccf3a3SEmmanuel Vadot};
201c9ccf3a3SEmmanuel Vadot
202c9ccf3a3SEmmanuel Vadot&oscclk {
203c9ccf3a3SEmmanuel Vadot	clock-frequency = <26000000>;
204c9ccf3a3SEmmanuel Vadot};
205c9ccf3a3SEmmanuel Vadot
206c9ccf3a3SEmmanuel Vadot&pinctrl_alive {
207c9ccf3a3SEmmanuel Vadot	key_voldown_pins: key-voldown-pins {
208c9ccf3a3SEmmanuel Vadot		samsung,pins = "gpa1-0";
209c9ccf3a3SEmmanuel Vadot		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
210c9ccf3a3SEmmanuel Vadot		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
211c9ccf3a3SEmmanuel Vadot		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
212c9ccf3a3SEmmanuel Vadot	};
213c9ccf3a3SEmmanuel Vadot
214c9ccf3a3SEmmanuel Vadot	key_volup_pins: key-volup-pins {
215c9ccf3a3SEmmanuel Vadot		samsung,pins = "gpa0-7";
216c9ccf3a3SEmmanuel Vadot		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
217c9ccf3a3SEmmanuel Vadot		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
218c9ccf3a3SEmmanuel Vadot		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
219c9ccf3a3SEmmanuel Vadot	};
220*84943d6fSEmmanuel Vadot
221*84943d6fSEmmanuel Vadot	micro_usb_det_pins: micro-usb-det-pins {
222*84943d6fSEmmanuel Vadot		samsung,pins = "gpa0-0";
223*84943d6fSEmmanuel Vadot		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
224*84943d6fSEmmanuel Vadot		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
225*84943d6fSEmmanuel Vadot	};
226c9ccf3a3SEmmanuel Vadot};
227c9ccf3a3SEmmanuel Vadot
228c9ccf3a3SEmmanuel Vadot&rtc {
229c9ccf3a3SEmmanuel Vadot	status = "okay";
230c9ccf3a3SEmmanuel Vadot	clocks = <&cmu_apm CLK_GOUT_RTC_PCLK>, <&rtcclk>;
231c9ccf3a3SEmmanuel Vadot	clock-names = "rtc", "rtc_src";
232c9ccf3a3SEmmanuel Vadot};
233c9ccf3a3SEmmanuel Vadot
234c9ccf3a3SEmmanuel Vadot&serial_0 {
235c9ccf3a3SEmmanuel Vadot	status = "okay";
236c9ccf3a3SEmmanuel Vadot	pinctrl-names = "default";
237c9ccf3a3SEmmanuel Vadot	pinctrl-0 = <&uart1_pins>;
238c9ccf3a3SEmmanuel Vadot};
239c9ccf3a3SEmmanuel Vadot
240*84943d6fSEmmanuel Vadot&usbdrd {
241*84943d6fSEmmanuel Vadot	status = "okay";
242*84943d6fSEmmanuel Vadot	vdd10-supply = <&reg_dummy>;
243*84943d6fSEmmanuel Vadot	vdd33-supply = <&reg_dummy>;
244*84943d6fSEmmanuel Vadot};
245*84943d6fSEmmanuel Vadot
246*84943d6fSEmmanuel Vadot&usbdrd_dwc3 {
247*84943d6fSEmmanuel Vadot	dr_mode = "otg";
248*84943d6fSEmmanuel Vadot	usb-role-switch;
249*84943d6fSEmmanuel Vadot	role-switch-default-mode = "host";
250*84943d6fSEmmanuel Vadot
251*84943d6fSEmmanuel Vadot	port {
252*84943d6fSEmmanuel Vadot		usb1_drd_sw: endpoint {
253*84943d6fSEmmanuel Vadot			remote-endpoint = <&usb_dr_connector>;
254*84943d6fSEmmanuel Vadot		};
255*84943d6fSEmmanuel Vadot	};
256*84943d6fSEmmanuel Vadot};
257*84943d6fSEmmanuel Vadot
258*84943d6fSEmmanuel Vadot&usbdrd_phy {
259*84943d6fSEmmanuel Vadot	status = "okay";
260*84943d6fSEmmanuel Vadot};
261*84943d6fSEmmanuel Vadot
262c9ccf3a3SEmmanuel Vadot&usi_uart {
263c9ccf3a3SEmmanuel Vadot	samsung,clkreq-on; /* needed for UART mode */
264c9ccf3a3SEmmanuel Vadot	status = "okay";
265c9ccf3a3SEmmanuel Vadot};
266c9ccf3a3SEmmanuel Vadot
267c9ccf3a3SEmmanuel Vadot&watchdog_cl0 {
268c9ccf3a3SEmmanuel Vadot	status = "okay";
269c9ccf3a3SEmmanuel Vadot};
270c9ccf3a3SEmmanuel Vadot
271c9ccf3a3SEmmanuel Vadot&watchdog_cl1 {
272c9ccf3a3SEmmanuel Vadot	status = "okay";
273c9ccf3a3SEmmanuel Vadot};
274