17eea6710SKevin Hilman/* 27eea6710SKevin Hilman * Copyright (c) 2016 Andreas Färber 37eea6710SKevin Hilman * Copyright (c) 2016 BayLibre, Inc. 47eea6710SKevin Hilman * Author: Neil Armstrong <narmstrong@kernel.org> 57eea6710SKevin Hilman * 67eea6710SKevin Hilman * This file is dual-licensed: you can use it either under the terms 77eea6710SKevin Hilman * of the GPL or the X11 license, at your option. Note that this dual 87eea6710SKevin Hilman * licensing only applies to this file, and not this project as a 97eea6710SKevin Hilman * whole. 107eea6710SKevin Hilman * 117eea6710SKevin Hilman * a) This library is free software; you can redistribute it and/or 127eea6710SKevin Hilman * modify it under the terms of the GNU General Public License as 137eea6710SKevin Hilman * published by the Free Software Foundation; either version 2 of the 147eea6710SKevin Hilman * License, or (at your option) any later version. 157eea6710SKevin Hilman * 167eea6710SKevin Hilman * This library is distributed in the hope that it will be useful, 177eea6710SKevin Hilman * but WITHOUT ANY WARRANTY; without even the implied warranty of 187eea6710SKevin Hilman * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 197eea6710SKevin Hilman * GNU General Public License for more details. 207eea6710SKevin Hilman * 217eea6710SKevin Hilman * Or, alternatively, 227eea6710SKevin Hilman * 237eea6710SKevin Hilman * b) Permission is hereby granted, free of charge, to any person 247eea6710SKevin Hilman * obtaining a copy of this software and associated documentation 257eea6710SKevin Hilman * files (the "Software"), to deal in the Software without 267eea6710SKevin Hilman * restriction, including without limitation the rights to use, 277eea6710SKevin Hilman * copy, modify, merge, publish, distribute, sublicense, and/or 287eea6710SKevin Hilman * sell copies of the Software, and to permit persons to whom the 297eea6710SKevin Hilman * Software is furnished to do so, subject to the following 307eea6710SKevin Hilman * conditions: 317eea6710SKevin Hilman * 327eea6710SKevin Hilman * The above copyright notice and this permission notice shall be 337eea6710SKevin Hilman * included in all copies or substantial portions of the Software. 347eea6710SKevin Hilman * 357eea6710SKevin Hilman * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 367eea6710SKevin Hilman * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 377eea6710SKevin Hilman * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 387eea6710SKevin Hilman * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 397eea6710SKevin Hilman * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 407eea6710SKevin Hilman * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 417eea6710SKevin Hilman * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 427eea6710SKevin Hilman * OTHER DEALINGS IN THE SOFTWARE. 437eea6710SKevin Hilman */ 447eea6710SKevin Hilman 457eea6710SKevin Hilman/dts-v1/; 467eea6710SKevin Hilman 477eea6710SKevin Hilman#include "meson-gxl-s905x.dtsi" 487eea6710SKevin Hilman 497eea6710SKevin Hilman/ { 507eea6710SKevin Hilman compatible = "nexbox,a95x", "amlogic,s905x", "amlogic,meson-gxl"; 517eea6710SKevin Hilman model = "NEXBOX A95X (S905X)"; 527eea6710SKevin Hilman 537eea6710SKevin Hilman aliases { 547eea6710SKevin Hilman serial0 = &uart_AO; 557eea6710SKevin Hilman }; 567eea6710SKevin Hilman 577eea6710SKevin Hilman chosen { 587eea6710SKevin Hilman stdout-path = "serial0:115200n8"; 597eea6710SKevin Hilman }; 607eea6710SKevin Hilman 617eea6710SKevin Hilman memory@0 { 627eea6710SKevin Hilman device_type = "memory"; 637eea6710SKevin Hilman reg = <0x0 0x0 0x0 0x80000000>; 647eea6710SKevin Hilman }; 657eea6710SKevin Hilman 667eea6710SKevin Hilman vddio_card: gpio-regulator { 677eea6710SKevin Hilman compatible = "regulator-gpio"; 687eea6710SKevin Hilman 697eea6710SKevin Hilman regulator-name = "VDDIO_CARD"; 707eea6710SKevin Hilman regulator-min-microvolt = <1800000>; 717eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 727eea6710SKevin Hilman 737eea6710SKevin Hilman gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 747eea6710SKevin Hilman gpios-states = <1>; 757eea6710SKevin Hilman 767eea6710SKevin Hilman /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ 777eea6710SKevin Hilman states = <1800000 0 787eea6710SKevin Hilman 3300000 1>; 797eea6710SKevin Hilman }; 807eea6710SKevin Hilman 817eea6710SKevin Hilman vddio_boot: regulator-vddio_boot { 827eea6710SKevin Hilman compatible = "regulator-fixed"; 837eea6710SKevin Hilman regulator-name = "VDDIO_BOOT"; 847eea6710SKevin Hilman regulator-min-microvolt = <1800000>; 857eea6710SKevin Hilman regulator-max-microvolt = <1800000>; 867eea6710SKevin Hilman }; 877eea6710SKevin Hilman 887eea6710SKevin Hilman vddao_3v3: regulator-vddao_3v3 { 897eea6710SKevin Hilman compatible = "regulator-fixed"; 907eea6710SKevin Hilman regulator-name = "VDDAO_3V3"; 917eea6710SKevin Hilman regulator-min-microvolt = <3300000>; 927eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 937eea6710SKevin Hilman }; 947eea6710SKevin Hilman 957eea6710SKevin Hilman vcc_3v3: regulator-vcc_3v3 { 967eea6710SKevin Hilman compatible = "regulator-fixed"; 977eea6710SKevin Hilman regulator-name = "VCC_3V3"; 987eea6710SKevin Hilman regulator-min-microvolt = <3300000>; 997eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 1007eea6710SKevin Hilman }; 1017eea6710SKevin Hilman 1027eea6710SKevin Hilman emmc_pwrseq: emmc-pwrseq { 1037eea6710SKevin Hilman compatible = "mmc-pwrseq-emmc"; 1047eea6710SKevin Hilman reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 1057eea6710SKevin Hilman }; 1067eea6710SKevin Hilman 1077eea6710SKevin Hilman wifi32k: wifi32k { 1087eea6710SKevin Hilman compatible = "pwm-clock"; 1097eea6710SKevin Hilman #clock-cells = <0>; 1107eea6710SKevin Hilman clock-frequency = <32768>; 1117eea6710SKevin Hilman pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 1127eea6710SKevin Hilman }; 1137eea6710SKevin Hilman 1147eea6710SKevin Hilman sdio_pwrseq: sdio-pwrseq { 1157eea6710SKevin Hilman compatible = "mmc-pwrseq-simple"; 1167eea6710SKevin Hilman reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 1177eea6710SKevin Hilman clocks = <&wifi32k>; 1187eea6710SKevin Hilman clock-names = "ext_clock"; 1197eea6710SKevin Hilman }; 1207eea6710SKevin Hilman 1217eea6710SKevin Hilman cvbs-connector { 1227eea6710SKevin Hilman compatible = "composite-video-connector"; 1237eea6710SKevin Hilman 1247eea6710SKevin Hilman port { 1257eea6710SKevin Hilman cvbs_connector_in: endpoint { 1267eea6710SKevin Hilman remote-endpoint = <&cvbs_vdac_out>; 1277eea6710SKevin Hilman }; 1287eea6710SKevin Hilman }; 1297eea6710SKevin Hilman }; 1306939db7eSNeil Armstrong 1316939db7eSNeil Armstrong hdmi-connector { 1326939db7eSNeil Armstrong compatible = "hdmi-connector"; 1336939db7eSNeil Armstrong type = "a"; 1346939db7eSNeil Armstrong 1356939db7eSNeil Armstrong port { 1366939db7eSNeil Armstrong hdmi_connector_in: endpoint { 1376939db7eSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1386939db7eSNeil Armstrong }; 1396939db7eSNeil Armstrong }; 1406939db7eSNeil Armstrong }; 1417eea6710SKevin Hilman}; 1427eea6710SKevin Hilman 1437eea6710SKevin Hilman&uart_AO { 1447eea6710SKevin Hilman status = "okay"; 1457eea6710SKevin Hilman pinctrl-0 = <&uart_ao_a_pins>; 1467eea6710SKevin Hilman pinctrl-names = "default"; 1477eea6710SKevin Hilman}; 1487eea6710SKevin Hilman 1497eea6710SKevin Hilmanðmac { 1507eea6710SKevin Hilman status = "okay"; 1517eea6710SKevin Hilman phy-mode = "rmii"; 1527eea6710SKevin Hilman phy-handle = <&internal_phy>; 1537eea6710SKevin Hilman}; 1547eea6710SKevin Hilman 1557eea6710SKevin Hilman&ir { 1567eea6710SKevin Hilman status = "okay"; 1577eea6710SKevin Hilman pinctrl-0 = <&remote_input_ao_pins>; 1587eea6710SKevin Hilman pinctrl-names = "default"; 1597eea6710SKevin Hilman}; 1607eea6710SKevin Hilman 1617eea6710SKevin Hilman/* Wireless SDIO Module */ 1627eea6710SKevin Hilman&sd_emmc_a { 1637eea6710SKevin Hilman status = "okay"; 1647eea6710SKevin Hilman pinctrl-0 = <&sdio_pins>; 1657eea6710SKevin Hilman pinctrl-names = "default"; 1667eea6710SKevin Hilman #address-cells = <1>; 1677eea6710SKevin Hilman #size-cells = <0>; 1687eea6710SKevin Hilman 1697eea6710SKevin Hilman bus-width = <4>; 1707eea6710SKevin Hilman cap-sd-highspeed; 1717eea6710SKevin Hilman max-frequency = <100000000>; 1727eea6710SKevin Hilman 1737eea6710SKevin Hilman non-removable; 1747eea6710SKevin Hilman disable-wp; 1757eea6710SKevin Hilman 1767eea6710SKevin Hilman mmc-pwrseq = <&sdio_pwrseq>; 1777eea6710SKevin Hilman 1787eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 1797eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 1807eea6710SKevin Hilman}; 1817eea6710SKevin Hilman 1827eea6710SKevin Hilman/* SD card */ 1837eea6710SKevin Hilman&sd_emmc_b { 1847eea6710SKevin Hilman status = "okay"; 1857eea6710SKevin Hilman pinctrl-0 = <&sdcard_pins>; 1867eea6710SKevin Hilman pinctrl-names = "default"; 1877eea6710SKevin Hilman 1887eea6710SKevin Hilman bus-width = <4>; 1897eea6710SKevin Hilman cap-sd-highspeed; 1907eea6710SKevin Hilman max-frequency = <100000000>; 1917eea6710SKevin Hilman disable-wp; 1927eea6710SKevin Hilman 1937eea6710SKevin Hilman cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 1947eea6710SKevin Hilman cd-inverted; 1957eea6710SKevin Hilman 1967eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 1977eea6710SKevin Hilman vqmmc-supply = <&vddio_card>; 1987eea6710SKevin Hilman}; 1997eea6710SKevin Hilman 2007eea6710SKevin Hilman/* eMMC */ 2017eea6710SKevin Hilman&sd_emmc_c { 2027eea6710SKevin Hilman status = "okay"; 2037eea6710SKevin Hilman pinctrl-0 = <&emmc_pins>; 2047eea6710SKevin Hilman pinctrl-names = "default"; 2057eea6710SKevin Hilman 2067eea6710SKevin Hilman bus-width = <8>; 2077eea6710SKevin Hilman cap-sd-highspeed; 2087eea6710SKevin Hilman cap-mmc-highspeed; 2097eea6710SKevin Hilman max-frequency = <200000000>; 2107eea6710SKevin Hilman non-removable; 2117eea6710SKevin Hilman disable-wp; 2127eea6710SKevin Hilman mmc-ddr-1_8v; 2137eea6710SKevin Hilman mmc-hs200-1_8v; 2147eea6710SKevin Hilman 2157eea6710SKevin Hilman mmc-pwrseq = <&emmc_pwrseq>; 2167eea6710SKevin Hilman vmmc-supply = <&vcc_3v3>; 2177eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 2187eea6710SKevin Hilman}; 2197eea6710SKevin Hilman 2207eea6710SKevin Hilman&pwm_ef { 2217eea6710SKevin Hilman status = "okay"; 2227eea6710SKevin Hilman pinctrl-0 = <&pwm_e_pins>; 2237eea6710SKevin Hilman pinctrl-names = "default"; 2247eea6710SKevin Hilman clocks = <&clkc CLKID_FCLK_DIV4>; 2257eea6710SKevin Hilman clock-names = "clkin0"; 2267eea6710SKevin Hilman}; 2277eea6710SKevin Hilman 2287eea6710SKevin Hilman&cvbs_vdac_port { 2297eea6710SKevin Hilman cvbs_vdac_out: endpoint { 2307eea6710SKevin Hilman remote-endpoint = <&cvbs_connector_in>; 2317eea6710SKevin Hilman }; 2327eea6710SKevin Hilman}; 2336939db7eSNeil Armstrong 2346939db7eSNeil Armstrong&hdmi_tx { 2356939db7eSNeil Armstrong status = "okay"; 2366939db7eSNeil Armstrong pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 2376939db7eSNeil Armstrong pinctrl-names = "default"; 2386939db7eSNeil Armstrong}; 2396939db7eSNeil Armstrong 2406939db7eSNeil Armstrong&hdmi_tx_tmds_port { 2416939db7eSNeil Armstrong hdmi_tx_tmds_out: endpoint { 2426939db7eSNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 2436939db7eSNeil Armstrong }; 2446939db7eSNeil Armstrong}; 245