1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2018 Martin Blumenstingl <martin.blumenstingl@googlemail.com>. 4 */ 5 6/dts-v1/; 7 8#include <dt-bindings/gpio/gpio.h> 9#include <dt-bindings/input/input.h> 10 11#include "meson8b.dtsi" 12 13/ { 14 model = "Endless Computers Endless Mini"; 15 compatible = "endless,ec100", "amlogic,meson8b"; 16 17 aliases { 18 serial0 = &uart_AO; 19 }; 20 21 chosen { 22 stdout-path = "serial0:115200n8"; 23 }; 24 25 memory { 26 device_type = "memory"; 27 reg = <0x40000000 0x40000000>; 28 }; 29 30 emmc_pwrseq: emmc-pwrseq { 31 compatible = "mmc-pwrseq-emmc"; 32 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 33 }; 34 35 gpio-keys { 36 compatible = "gpio-keys-polled"; 37 #address-cells = <1>; 38 #size-cells = <0>; 39 poll-interval = <100>; 40 41 pal-switch { 42 label = "pal"; 43 linux,input-type = <EV_SW>; 44 linux,code = <KEY_SWITCHVIDEOMODE>; 45 gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; 46 }; 47 48 ntsc-switch { 49 label = "ntsc"; 50 linux,input-type = <EV_SW>; 51 linux,code = <KEY_SWITCHVIDEOMODE>; 52 gpios = <&gpio GPIOH_8 GPIO_ACTIVE_HIGH>; 53 }; 54 55 power-button { 56 label = "power"; 57 linux,code = <KEY_POWER>; 58 gpios = <&gpio GPIOH_9 GPIO_ACTIVE_LOW>; 59 }; 60 }; 61 62 gpio-poweroff { 63 compatible = "gpio-poweroff"; 64 /* 65 * shutdown is managed by the EC (embedded micro-controller) 66 * which is configured through GPIOAO_2 (poweroff GPIO) and 67 * GPIOAO_7 (power LED, which has to go LOW as well). 68 */ 69 gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; 70 timeout-ms = <20000>; 71 }; 72 73 leds { 74 compatible = "gpio-leds"; 75 76 power { 77 label = "ec100:red:power"; 78 /* 79 * Needs to go LOW (together with the poweroff GPIO) 80 * during shutdown to allow the EC (embedded 81 * micro-controller) to shutdown the system. Setting 82 * the output to LOW signals the EC to start a 83 * "breathing"/pulsing effect until the power is fully 84 * turned off. 85 */ 86 gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; 87 default-state = "on"; 88 }; 89 }; 90 91 rtc32k_xtal: rtc32k-xtal-clk { 92 /* X2 in the schematics */ 93 compatible = "fixed-clock"; 94 clock-frequency = <32768>; 95 clock-output-names = "RTC32K"; 96 #clock-cells = <0>; 97 }; 98 99 usb_vbus: regulator-usb-vbus { 100 /* 101 * Silergy SY6288CCAC-GP 2A Power Distribution Switch. 102 */ 103 compatible = "regulator-fixed"; 104 105 regulator-name = "USB_VBUS"; 106 107 regulator-min-microvolt = <5000000>; 108 regulator-max-microvolt = <5000000>; 109 110 vin-supply = <&vcc_5v>; 111 112 /* 113 * signal name from the schematics: USB_PWR_EN 114 */ 115 gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 116 enable-active-high; 117 }; 118 119 vcc_5v: regulator-vcc5v { 120 /* 121 * supplied by the main power input which called PWR_5V_STB 122 * in the schematics 123 */ 124 compatible = "regulator-fixed"; 125 126 regulator-name = "VCC5V"; 127 128 regulator-min-microvolt = <5000000>; 129 regulator-max-microvolt = <5000000>; 130 131 /* 132 * signal name from the schematics: 3V3_5V_EN 133 */ 134 gpio = <&gpio GPIODV_29 GPIO_ACTIVE_LOW>; 135 136 regulator-boot-on; 137 regulator-always-on; 138 }; 139 140 vcck: regulator-vcck { 141 /* 142 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz 143 * Synchronous Step Down Regulator. 144 */ 145 compatible = "pwm-regulator"; 146 147 regulator-name = "VCCK"; 148 regulator-min-microvolt = <860000>; 149 regulator-max-microvolt = <1140000>; 150 151 vin-supply = <&vcc_5v>; 152 153 pwms = <&pwm_cd 0 1148 0>; 154 pwm-dutycycle-range = <100 0>; 155 156 regulator-boot-on; 157 regulator-always-on; 158 }; 159 160 vcc_1v8: regulator-vcc1v8 { 161 /* 162 * ABLIC S-1339D18-M5001-GP 163 */ 164 compatible = "regulator-fixed"; 165 166 regulator-name = "VCC1V8"; 167 regulator-min-microvolt = <1800000>; 168 regulator-max-microvolt = <1800000>; 169 170 vin-supply = <&vcc_3v3>; 171 }; 172 173 vcc_3v3: regulator-vcc3v3 { 174 /* 175 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz 176 * Synchronous Step Down Regulator. Also called 177 * VDDIO_AO3.3V in the schematics. 178 */ 179 compatible = "regulator-fixed"; 180 181 regulator-name = "VCC3V3"; 182 regulator-min-microvolt = <3300000>; 183 regulator-max-microvolt = <3300000>; 184 185 vin-supply = <&vcc_5v>; 186 }; 187 188 vcc_ddr3: regulator-vcc-ddr3 { 189 /* 190 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz 191 * Synchronous Step Down Regulator. Also called 192 * DDR3_1.5V in the schematics. 193 */ 194 compatible = "regulator-fixed"; 195 196 regulator-name = "VCC_DDR3_1V5"; 197 regulator-min-microvolt = <1500000>; 198 regulator-max-microvolt = <1500000>; 199 200 vin-supply = <&vcc_5v>; 201 202 regulator-boot-on; 203 regulator-always-on; 204 }; 205 206 vcc_rtc: regulator-vcc-rtc { 207 /* 208 * Global Mixed-mode Technology Inc. G918T12U-GP 209 */ 210 compatible = "regulator-fixed"; 211 212 regulator-name = "VCC_RTC"; 213 regulator-min-microvolt = <900000>; 214 regulator-max-microvolt = <900000>; 215 216 /* 217 * When the board is powered then the input is VCC3V3, 218 * otherwise power is taken from the coin cell battery. 219 */ 220 vin-supply = <&vcc_3v3>; 221 }; 222 223 vddee: regulator-vddee { 224 /* 225 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz 226 * Synchronous Step Down Regulator. Also called VDDAO 227 * in a part of the schematics. 228 */ 229 compatible = "pwm-regulator"; 230 231 regulator-name = "VDDEE"; 232 regulator-min-microvolt = <860000>; 233 regulator-max-microvolt = <1140000>; 234 235 vin-supply = <&vcc_5v>; 236 237 pwms = <&pwm_cd 1 1148 0>; 238 pwm-dutycycle-range = <100 0>; 239 240 regulator-boot-on; 241 regulator-always-on; 242 }; 243}; 244 245&cpu0 { 246 cpu-supply = <&vcck>; 247}; 248 249ðmac { 250 status = "okay"; 251 252 pinctrl-0 = <ð_rmii_pins>; 253 pinctrl-names = "default"; 254 255 phy-handle = <ð_phy0>; 256 phy-mode = "rmii"; 257 258 mdio { 259 compatible = "snps,dwmac-mdio"; 260 #address-cells = <1>; 261 #size-cells = <0>; 262 263 eth_phy0: ethernet-phy@0 { 264 /* IC Plus IP101A/G (0x02430c54) */ 265 reg = <0>; 266 267 reset-assert-us = <10000>; 268 reset-deassert-us = <10000>; 269 reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; 270 271 icplus,select-interrupt; 272 interrupt-parent = <&gpio_intc>; 273 /* GPIOH_3 */ 274 interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 275 }; 276 }; 277}; 278 279&i2c_A { 280 status = "okay"; 281 pinctrl-0 = <&i2c_a_pins>; 282 pinctrl-names = "default"; 283 284 rt5640: codec@1c { 285 compatible = "realtek,rt5640"; 286 reg = <0x1c>; 287 interrupt-parent = <&gpio_intc>; 288 interrupts = <13 IRQ_TYPE_EDGE_BOTH>; /* GPIOAO_13 */ 289 realtek,in1-differential; 290 }; 291}; 292 293&mali { 294 mali-supply = <&vddee>; 295}; 296 297&saradc { 298 status = "okay"; 299 vref-supply = <&vcc_1v8>; 300}; 301 302&sdhc { 303 status = "okay"; 304 305 pinctrl-0 = <&sdxc_c_pins>; 306 pinctrl-names = "default"; 307 308 bus-width = <8>; 309 max-frequency = <50000000>; 310 311 cap-mmc-highspeed; 312 disable-wp; 313 non-removable; 314 no-sdio; 315 316 mmc-pwrseq = <&emmc_pwrseq>; 317 318 vmmc-supply = <&vcc_3v3>; 319 vqmmc-supply = <&vcc_3v3>; 320}; 321 322&sdio { 323 status = "okay"; 324 325 pinctrl-0 = <&sd_b_pins>; 326 pinctrl-names = "default"; 327 328 /* SD card */ 329 sd_card_slot: slot@1 { 330 compatible = "mmc-slot"; 331 reg = <1>; 332 status = "okay"; 333 334 bus-width = <4>; 335 no-sdio; 336 cap-mmc-highspeed; 337 cap-sd-highspeed; 338 disable-wp; 339 340 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 341 342 vmmc-supply = <&vcc_3v3>; 343 }; 344}; 345 346&gpio_ao { 347 gpio-line-names = "Linux_TX", "Linux_RX", 348 "SLP_S5_N", "USB2_OC_FLAG#", 349 "HUB_RST", "USB_PWR_EN", 350 "I2S_IN", "SLP_S1_N", 351 "TCK", "TMS", "TDI", "TDO", 352 "HDMI_CEC", "5640_IRQ", 353 "MUTE", "S805_TEST#"; 354}; 355 356&gpio { 357 gpio-line-names = /* Bank GPIOX */ 358 "WIFI_SD_D0", "WIFI_SD_D1", "WIFI_SD_D2", 359 "WIFI_SD_D3", "BTPCM_DOUT", "BTPCM_DIN", 360 "BTPCM_SYNC", "BTPCM_CLK", "WIFI_SD_CLK", 361 "WIFI_SD_CMD", "WIFI_32K", "WIFI_PWREN", 362 "UART_B_TX", "UART_B_RX", "UART_B_CTS_N", 363 "UART_B_RTS_N", "BT_EN", "WIFI_WAKE_HOST", 364 /* Bank GPIOY */ 365 "", "", "", "", "", "", "", "", "", "", 366 "", "", 367 /* Bank GPIODV */ 368 "VCCK_PWM_C", "I2C_SDA_A", "I2C_SCL_A", 369 "I2C_SDA_B", "I2C_SCL_B", "VDDEE_PWM_D", 370 "VDDEE_PWM 3V3_5V_EN", 371 /* Bank GPIOH */ 372 "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL", 373 "RMII_IRQ", "RMII_RST#", "RMII_TXD1", 374 "RMII_TXD0", "AV_select_1", "AV_select_2", 375 "MCU_Control_S", 376 /* Bank CARD */ 377 "SD_D1_B", "SD_D0_B", "SD_CLK_8726MX", 378 "SD_CMD_8726MX", "SD_D3_B", "SD_D2_B", 379 "CARD_EN_DET (CARD_DET)", 380 /* Bank BOOT */ 381 "NAND_D0 (EMMC)", "NAND_D1 (EMMC)", 382 "NAND_D2 (EMMC)", "NAND_D3 (EMMC)", 383 "NAND_D4 (EMMC)", "NAND_D5 (EMMC)", 384 "NAND_D6 (EMMC)", "NAND_D7 (EMMC)", 385 "NAND_CS1 (EMMC)", "NAND_CS2 iNAND_RS1 (EMMC)", 386 "NAND_nR/B iNAND_CMD (EMMC)", "NAND_ALE (EMMC)", 387 "NAND_CLE (EMMC)", "nRE_S1 NAND_nRE (EMMC)", 388 "nWE_S1 NAND_nWE (EMMC)", "", "", "SPI_CS", 389 /* Bank DIF */ 390 "RMII_RXD1", "RMII_RXD0", "RMII_CRS_DV", 391 "RMII_50M_IN", "GPIODIF_4", "GPIODIF_5", 392 "RMII_TXEN", "CPUETH_25MOUT", "RMII_MDC", 393 "RMII_MDIO"; 394}; 395 396&pwm_cd { 397 status = "okay"; 398 pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>; 399 pinctrl-names = "default"; 400 clocks = <&xtal>, <&xtal>; 401 clock-names = "clkin0", "clkin1"; 402}; 403 404&rtc { 405 status = "okay"; 406 clocks = <&rtc32k_xtal>; 407 vdd-supply = <&vcc_rtc>; 408}; 409 410/* exposed through the pin headers labeled "URDUG1" on the top of the PCB */ 411&uart_AO { 412 status = "okay"; 413 pinctrl-0 = <&uart_ao_a_pins>; 414 pinctrl-names = "default"; 415}; 416 417/* 418 * connected to the Bluetooth part of the RTL8723BS SDIO wifi / Bluetooth 419 * combo chip. This is only available on the variant with 2GB RAM. 420 */ 421&uart_B { 422 status = "okay"; 423 pinctrl-0 = <&uart_b0_pins>, <&uart_b0_cts_rts_pins>; 424 pinctrl-names = "default"; 425 uart-has-rtscts; 426}; 427 428&usb1 { 429 status = "okay"; 430 vbus-supply = <&usb_vbus>; 431}; 432 433&usb1_phy { 434 status = "okay"; 435}; 436