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