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 = <®_usb_host_vbus>; 37*84943d6fSEmmanuel Vadot id-gpios = <&gpa0 0 GPIO_ACTIVE_LOW>; 38*84943d6fSEmmanuel Vadot pinctrl-names = "default"; 39*84943d6fSEmmanuel Vadot pinctrl-0 = <µ_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 = <®_dummy>; 243*84943d6fSEmmanuel Vadot vdd33-supply = <®_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