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