| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
| /* |
| * Copyright (c) 2018 Martin Blumenstingl <martin.blumenstingl@googlemail.com>. |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| |
| #include "meson8b.dtsi" |
| |
| / { |
| model = "Endless Computers Endless Mini"; |
| compatible = "endless,ec100", "amlogic,meson8b"; |
| |
| aliases { |
| serial0 = &uart_AO; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| |
| memory { |
| device_type = "memory"; |
| reg = <0x40000000 0x40000000>; |
| }; |
| |
| emmc_pwrseq: emmc-pwrseq { |
| compatible = "mmc-pwrseq-emmc"; |
| reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; |
| }; |
| |
| gpio-keys { |
| compatible = "gpio-keys-polled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| poll-interval = <100>; |
| |
| pal-switch { |
| label = "pal"; |
| linux,input-type = <EV_SW>; |
| linux,code = <KEY_SWITCHVIDEOMODE>; |
| gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; |
| }; |
| |
| ntsc-switch { |
| label = "ntsc"; |
| linux,input-type = <EV_SW>; |
| linux,code = <KEY_SWITCHVIDEOMODE>; |
| gpios = <&gpio GPIOH_8 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| power-button { |
| label = "power"; |
| linux,code = <KEY_POWER>; |
| gpios = <&gpio GPIOH_9 GPIO_ACTIVE_LOW>; |
| }; |
| }; |
| |
| gpio-poweroff { |
| compatible = "gpio-poweroff"; |
| /* |
| * shutdown is managed by the EC (embedded micro-controller) |
| * which is configured through GPIOAO_2 (poweroff GPIO) and |
| * GPIOAO_7 (power LED, which has to go LOW as well). |
| */ |
| gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; |
| timeout-ms = <20000>; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| |
| power { |
| label = "ec100:red:power"; |
| /* |
| * Needs to go LOW (together with the poweroff GPIO) |
| * during shutdown to allow the EC (embedded |
| * micro-controller) to shutdown the system. Setting |
| * the output to LOW signals the EC to start a |
| * "breathing"/pulsing effect until the power is fully |
| * turned off. |
| */ |
| gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; |
| default-state = "on"; |
| }; |
| }; |
| |
| rtc32k_xtal: rtc32k-xtal-clk { |
| /* X2 in the schematics */ |
| compatible = "fixed-clock"; |
| clock-frequency = <32768>; |
| clock-output-names = "RTC32K"; |
| #clock-cells = <0>; |
| }; |
| |
| sound { |
| compatible = "amlogic,gx-sound-card"; |
| model = "M8B-EC100"; |
| |
| assigned-clocks = <&clkc CLKID_MPLL0>, |
| <&clkc CLKID_MPLL1>, |
| <&clkc CLKID_MPLL2>; |
| assigned-clock-rates = <270950400>, |
| <294912000>, |
| <393216000>; |
| |
| dai-link-0 { |
| sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; |
| }; |
| |
| dai-link-1 { |
| sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; |
| dai-format = "i2s"; |
| mclk-fs = <256>; |
| |
| codec-0 { |
| sound-dai = <&rt5640>; |
| }; |
| }; |
| }; |
| |
| usb_vbus: regulator-usb-vbus { |
| /* |
| * Silergy SY6288CCAC-GP 2A Power Distribution Switch. |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "USB_VBUS"; |
| |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| |
| vin-supply = <&vcc_5v>; |
| |
| /* |
| * signal name from the schematics: USB_PWR_EN |
| */ |
| gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vcc_5v: regulator-vcc5v { |
| /* |
| * supplied by the main power input which called PWR_5V_STB |
| * in the schematics |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "VCC5V"; |
| |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| |
| /* |
| * signal name from the schematics: 3V3_5V_EN |
| */ |
| gpio = <&gpio GPIODV_29 GPIO_ACTIVE_LOW>; |
| |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| vcck: regulator-vcck { |
| /* |
| * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz |
| * Synchronous Step Down Regulator. |
| */ |
| compatible = "pwm-regulator"; |
| |
| regulator-name = "VCCK"; |
| regulator-min-microvolt = <860000>; |
| regulator-max-microvolt = <1140000>; |
| |
| pwm-supply = <&vcc_5v>; |
| |
| pwms = <&pwm_cd 0 1148 0>; |
| pwm-dutycycle-range = <100 0>; |
| |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| vcc_1v8: regulator-vcc1v8 { |
| /* |
| * ABLIC S-1339D18-M5001-GP |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "VCC1V8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| |
| vin-supply = <&vcc_3v3>; |
| }; |
| |
| vcc_3v3: regulator-vcc3v3 { |
| /* |
| * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz |
| * Synchronous Step Down Regulator. Also called |
| * VDDIO_AO3.3V in the schematics. |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "VCC3V3"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| |
| vin-supply = <&vcc_5v>; |
| }; |
| |
| vcc_ddr3: regulator-vcc-ddr3 { |
| /* |
| * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz |
| * Synchronous Step Down Regulator. Also called |
| * DDR3_1.5V in the schematics. |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "VCC_DDR3_1V5"; |
| regulator-min-microvolt = <1500000>; |
| regulator-max-microvolt = <1500000>; |
| |
| vin-supply = <&vcc_5v>; |
| |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| vcc_rtc: regulator-vcc-rtc { |
| /* |
| * Global Mixed-mode Technology Inc. G918T12U-GP |
| */ |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "VCC_RTC"; |
| regulator-min-microvolt = <900000>; |
| regulator-max-microvolt = <900000>; |
| |
| /* |
| * When the board is powered then the input is VCC3V3, |
| * otherwise power is taken from the coin cell battery. |
| */ |
| vin-supply = <&vcc_3v3>; |
| }; |
| |
| vddee: regulator-vddee { |
| /* |
| * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz |
| * Synchronous Step Down Regulator. Also called VDDAO |
| * in a part of the schematics. |
| */ |
| compatible = "pwm-regulator"; |
| |
| regulator-name = "VDDEE"; |
| regulator-min-microvolt = <860000>; |
| regulator-max-microvolt = <1140000>; |
| |
| pwm-supply = <&vcc_5v>; |
| |
| pwms = <&pwm_cd 1 1148 0>; |
| pwm-dutycycle-range = <100 0>; |
| |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| }; |
| |
| &aiu { |
| status = "okay"; |
| |
| pinctrl-0 = <&i2s_am_clk_pins>, <&i2s_out_ao_clk_pins>, |
| <&i2s_out_lr_clk_pins>, <&i2s_out_ch01_ao_pins>; |
| pinctrl-names = "default"; |
| }; |
| |
| &cpu0 { |
| cpu-supply = <&vcck>; |
| }; |
| |
| ðmac { |
| status = "okay"; |
| |
| pinctrl-0 = <ð_rmii_pins>; |
| pinctrl-names = "default"; |
| |
| phy-handle = <ð_phy0>; |
| phy-mode = "rmii"; |
| |
| mdio { |
| compatible = "snps,dwmac-mdio"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| eth_phy0: ethernet-phy@0 { |
| /* IC Plus IP101A/G (0x02430c54) */ |
| reg = <0>; |
| |
| reset-assert-us = <10000>; |
| reset-deassert-us = <10000>; |
| reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; |
| |
| icplus,select-interrupt; |
| interrupt-parent = <&gpio_intc>; |
| /* GPIOH_3 */ |
| interrupts = <17 IRQ_TYPE_LEVEL_LOW>; |
| }; |
| }; |
| }; |
| |
| &i2c_A { |
| status = "okay"; |
| pinctrl-0 = <&i2c_a_pins>; |
| pinctrl-names = "default"; |
| |
| rt5640: codec@1c { |
| compatible = "realtek,rt5640"; |
| |
| reg = <0x1c>; |
| |
| #sound-dai-cells = <0>; |
| |
| interrupt-parent = <&gpio_intc>; |
| interrupts = <13 IRQ_TYPE_EDGE_BOTH>; /* GPIOAO_13 */ |
| |
| /* |
| * TODO: realtek,ldo1-en-gpios is connected to GPIO_BSD_EN. |
| * We currently cannot configure this pin correctly. |
| * Luckily for us it's in the "right" state by default. |
| */ |
| realtek,in1-differential; |
| }; |
| }; |
| |
| &mali { |
| mali-supply = <&vddee>; |
| }; |
| |
| &saradc { |
| status = "okay"; |
| vref-supply = <&vcc_1v8>; |
| }; |
| |
| &sdhc { |
| status = "okay"; |
| |
| pinctrl-0 = <&sdxc_c_pins>; |
| pinctrl-names = "default"; |
| |
| bus-width = <8>; |
| max-frequency = <50000000>; |
| |
| cap-mmc-highspeed; |
| disable-wp; |
| non-removable; |
| no-sdio; |
| |
| mmc-pwrseq = <&emmc_pwrseq>; |
| |
| vmmc-supply = <&vcc_3v3>; |
| vqmmc-supply = <&vcc_3v3>; |
| }; |
| |
| &sdio { |
| status = "okay"; |
| |
| pinctrl-0 = <&sd_b_pins>; |
| pinctrl-names = "default"; |
| |
| /* SD card */ |
| sd_card_slot: slot@1 { |
| compatible = "mmc-slot"; |
| reg = <1>; |
| status = "okay"; |
| |
| bus-width = <4>; |
| no-sdio; |
| cap-mmc-highspeed; |
| cap-sd-highspeed; |
| disable-wp; |
| |
| cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; |
| |
| vmmc-supply = <&vcc_3v3>; |
| }; |
| }; |
| |
| &gpio_ao { |
| gpio-line-names = "Linux_TX", "Linux_RX", |
| "SLP_S5_N", "USB2_OC_FLAG#", |
| "HUB_RST", "USB_PWR_EN", |
| "I2S_IN", "SLP_S1_N", |
| "TCK", "TMS", "TDI", "TDO", |
| "HDMI_CEC", "5640_IRQ", |
| "MUTE", "S805_TEST#"; |
| }; |
| |
| &gpio { |
| gpio-line-names = /* Bank GPIOX */ |
| "WIFI_SD_D0", "WIFI_SD_D1", "WIFI_SD_D2", |
| "WIFI_SD_D3", "BTPCM_DOUT", "BTPCM_DIN", |
| "BTPCM_SYNC", "BTPCM_CLK", "WIFI_SD_CLK", |
| "WIFI_SD_CMD", "WIFI_32K", "WIFI_PWREN", |
| "UART_B_TX", "UART_B_RX", "UART_B_CTS_N", |
| "UART_B_RTS_N", "BT_EN", "WIFI_WAKE_HOST", |
| /* Bank GPIOY */ |
| "", "", "", "", "", "", "", "", "", "", |
| "", "", |
| /* Bank GPIODV */ |
| "VCCK_PWM_C", "I2C_SDA_A", "I2C_SCL_A", |
| "I2C_SDA_B", "I2C_SCL_B", "VDDEE_PWM_D", |
| "VDDEE_PWM 3V3_5V_EN", |
| /* Bank GPIOH */ |
| "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL", |
| "RMII_IRQ", "RMII_RST#", "RMII_TXD1", |
| "RMII_TXD0", "AV_select_1", "AV_select_2", |
| "MCU_Control_S", |
| /* Bank CARD */ |
| "SD_D1_B", "SD_D0_B", "SD_CLK_8726MX", |
| "SD_CMD_8726MX", "SD_D3_B", "SD_D2_B", |
| "CARD_EN_DET (CARD_DET)", |
| /* Bank BOOT */ |
| "NAND_D0 (EMMC)", "NAND_D1 (EMMC)", |
| "NAND_D2 (EMMC)", "NAND_D3 (EMMC)", |
| "NAND_D4 (EMMC)", "NAND_D5 (EMMC)", |
| "NAND_D6 (EMMC)", "NAND_D7 (EMMC)", |
| "NAND_CS1 (EMMC)", "NAND_CS2 iNAND_RS1 (EMMC)", |
| "NAND_nR/B iNAND_CMD (EMMC)", "NAND_ALE (EMMC)", |
| "NAND_CLE (EMMC)", "nRE_S1 NAND_nRE (EMMC)", |
| "nWE_S1 NAND_nWE (EMMC)", "", "", "SPI_CS", |
| /* Bank DIF */ |
| "RMII_RXD1", "RMII_RXD0", "RMII_CRS_DV", |
| "RMII_50M_IN", "GPIODIF_4", "GPIODIF_5", |
| "RMII_TXEN", "CPUETH_25MOUT", "RMII_MDC", |
| "RMII_MDIO"; |
| }; |
| |
| &pwm_cd { |
| status = "okay"; |
| pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>; |
| pinctrl-names = "default"; |
| clocks = <&xtal>, <&xtal>; |
| clock-names = "clkin0", "clkin1"; |
| }; |
| |
| &rtc { |
| status = "okay"; |
| clocks = <&rtc32k_xtal>; |
| vdd-supply = <&vcc_rtc>; |
| }; |
| |
| /* exposed through the pin headers labeled "URDUG1" on the top of the PCB */ |
| &uart_AO { |
| status = "okay"; |
| pinctrl-0 = <&uart_ao_a_pins>; |
| pinctrl-names = "default"; |
| }; |
| |
| /* |
| * connected to the Bluetooth part of the RTL8723BS SDIO wifi / Bluetooth |
| * combo chip. This is only available on the variant with 2GB RAM. |
| */ |
| &uart_B { |
| status = "okay"; |
| pinctrl-0 = <&uart_b0_pins>, <&uart_b0_cts_rts_pins>; |
| pinctrl-names = "default"; |
| uart-has-rtscts; |
| }; |
| |
| &usb1 { |
| status = "okay"; |
| vbus-supply = <&usb_vbus>; |
| }; |
| |
| &usb1_phy { |
| status = "okay"; |
| }; |