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; 55059a58fcSJorge Ramirez-Ortiz ethernet0 = ðmac; 567eea6710SKevin Hilman }; 577eea6710SKevin Hilman 587eea6710SKevin Hilman chosen { 597eea6710SKevin Hilman stdout-path = "serial0:115200n8"; 607eea6710SKevin Hilman }; 617eea6710SKevin Hilman 627eea6710SKevin Hilman memory@0 { 637eea6710SKevin Hilman device_type = "memory"; 647eea6710SKevin Hilman reg = <0x0 0x0 0x0 0x80000000>; 657eea6710SKevin Hilman }; 667eea6710SKevin Hilman 677eea6710SKevin Hilman vddio_card: gpio-regulator { 687eea6710SKevin Hilman compatible = "regulator-gpio"; 697eea6710SKevin Hilman 707eea6710SKevin Hilman regulator-name = "VDDIO_CARD"; 717eea6710SKevin Hilman regulator-min-microvolt = <1800000>; 727eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 737eea6710SKevin Hilman 747eea6710SKevin Hilman gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 757eea6710SKevin Hilman gpios-states = <1>; 767eea6710SKevin Hilman 777eea6710SKevin Hilman /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ 787eea6710SKevin Hilman states = <1800000 0 797eea6710SKevin Hilman 3300000 1>; 807eea6710SKevin Hilman }; 817eea6710SKevin Hilman 827eea6710SKevin Hilman vddio_boot: regulator-vddio_boot { 837eea6710SKevin Hilman compatible = "regulator-fixed"; 847eea6710SKevin Hilman regulator-name = "VDDIO_BOOT"; 857eea6710SKevin Hilman regulator-min-microvolt = <1800000>; 867eea6710SKevin Hilman regulator-max-microvolt = <1800000>; 877eea6710SKevin Hilman }; 887eea6710SKevin Hilman 897eea6710SKevin Hilman vddao_3v3: regulator-vddao_3v3 { 907eea6710SKevin Hilman compatible = "regulator-fixed"; 917eea6710SKevin Hilman regulator-name = "VDDAO_3V3"; 927eea6710SKevin Hilman regulator-min-microvolt = <3300000>; 937eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 947eea6710SKevin Hilman }; 957eea6710SKevin Hilman 967eea6710SKevin Hilman vcc_3v3: regulator-vcc_3v3 { 977eea6710SKevin Hilman compatible = "regulator-fixed"; 987eea6710SKevin Hilman regulator-name = "VCC_3V3"; 997eea6710SKevin Hilman regulator-min-microvolt = <3300000>; 1007eea6710SKevin Hilman regulator-max-microvolt = <3300000>; 1017eea6710SKevin Hilman }; 1027eea6710SKevin Hilman 1037eea6710SKevin Hilman emmc_pwrseq: emmc-pwrseq { 1047eea6710SKevin Hilman compatible = "mmc-pwrseq-emmc"; 1057eea6710SKevin Hilman reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 1067eea6710SKevin Hilman }; 1077eea6710SKevin Hilman 1087eea6710SKevin Hilman wifi32k: wifi32k { 1097eea6710SKevin Hilman compatible = "pwm-clock"; 1107eea6710SKevin Hilman #clock-cells = <0>; 1117eea6710SKevin Hilman clock-frequency = <32768>; 1127eea6710SKevin Hilman pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 1137eea6710SKevin Hilman }; 1147eea6710SKevin Hilman 1157eea6710SKevin Hilman sdio_pwrseq: sdio-pwrseq { 1167eea6710SKevin Hilman compatible = "mmc-pwrseq-simple"; 1177eea6710SKevin Hilman reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 1187eea6710SKevin Hilman clocks = <&wifi32k>; 1197eea6710SKevin Hilman clock-names = "ext_clock"; 1207eea6710SKevin Hilman }; 1217eea6710SKevin Hilman 1227eea6710SKevin Hilman cvbs-connector { 1237eea6710SKevin Hilman compatible = "composite-video-connector"; 1247eea6710SKevin Hilman 1257eea6710SKevin Hilman port { 1267eea6710SKevin Hilman cvbs_connector_in: endpoint { 1277eea6710SKevin Hilman remote-endpoint = <&cvbs_vdac_out>; 1287eea6710SKevin Hilman }; 1297eea6710SKevin Hilman }; 1307eea6710SKevin Hilman }; 1316939db7eSNeil Armstrong 1326939db7eSNeil Armstrong hdmi-connector { 1336939db7eSNeil Armstrong compatible = "hdmi-connector"; 1346939db7eSNeil Armstrong type = "a"; 1356939db7eSNeil Armstrong 1366939db7eSNeil Armstrong port { 1376939db7eSNeil Armstrong hdmi_connector_in: endpoint { 1386939db7eSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1396939db7eSNeil Armstrong }; 1406939db7eSNeil Armstrong }; 1416939db7eSNeil Armstrong }; 1427eea6710SKevin Hilman}; 1437eea6710SKevin Hilman 144b16c71c9SNeil Armstrong&cec_AO { 145b16c71c9SNeil Armstrong status = "okay"; 146b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 147b16c71c9SNeil Armstrong pinctrl-names = "default"; 148b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 149b16c71c9SNeil Armstrong}; 150b16c71c9SNeil Armstrong 151e02849b9SAndreas Färber&cvbs_vdac_port { 152e02849b9SAndreas Färber cvbs_vdac_out: endpoint { 153e02849b9SAndreas Färber remote-endpoint = <&cvbs_connector_in>; 154e02849b9SAndreas Färber }; 1557eea6710SKevin Hilman}; 1567eea6710SKevin Hilman 1577eea6710SKevin Hilmanðmac { 1587eea6710SKevin Hilman status = "okay"; 1597eea6710SKevin Hilman phy-mode = "rmii"; 1607eea6710SKevin Hilman phy-handle = <&internal_phy>; 1617eea6710SKevin Hilman}; 1627eea6710SKevin Hilman 163e02849b9SAndreas Färber&hdmi_tx { 164e02849b9SAndreas Färber status = "okay"; 165e02849b9SAndreas Färber pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 166e02849b9SAndreas Färber pinctrl-names = "default"; 167e02849b9SAndreas Färber}; 168e02849b9SAndreas Färber 169e02849b9SAndreas Färber&hdmi_tx_tmds_port { 170e02849b9SAndreas Färber hdmi_tx_tmds_out: endpoint { 171e02849b9SAndreas Färber remote-endpoint = <&hdmi_connector_in>; 172e02849b9SAndreas Färber }; 173e02849b9SAndreas Färber}; 174e02849b9SAndreas Färber 1757eea6710SKevin Hilman&ir { 1767eea6710SKevin Hilman status = "okay"; 1777eea6710SKevin Hilman pinctrl-0 = <&remote_input_ao_pins>; 1787eea6710SKevin Hilman pinctrl-names = "default"; 1797eea6710SKevin Hilman}; 1807eea6710SKevin Hilman 181e02849b9SAndreas Färber&pwm_ef { 182e02849b9SAndreas Färber status = "okay"; 183e02849b9SAndreas Färber pinctrl-0 = <&pwm_e_pins>; 184e02849b9SAndreas Färber pinctrl-names = "default"; 185e02849b9SAndreas Färber clocks = <&clkc CLKID_FCLK_DIV4>; 186e02849b9SAndreas Färber clock-names = "clkin0"; 187e02849b9SAndreas Färber}; 188e02849b9SAndreas Färber 1897eea6710SKevin Hilman/* Wireless SDIO Module */ 1907eea6710SKevin Hilman&sd_emmc_a { 1917eea6710SKevin Hilman status = "okay"; 1927eea6710SKevin Hilman pinctrl-0 = <&sdio_pins>; 19367e7607fSJerome Brunet pinctrl-1 = <&sdio_clk_gate_pins>; 19467e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 1957eea6710SKevin Hilman #address-cells = <1>; 1967eea6710SKevin Hilman #size-cells = <0>; 1977eea6710SKevin Hilman 1987eea6710SKevin Hilman bus-width = <4>; 1997eea6710SKevin Hilman cap-sd-highspeed; 2007eea6710SKevin Hilman max-frequency = <100000000>; 2017eea6710SKevin Hilman 2027eea6710SKevin Hilman non-removable; 2037eea6710SKevin Hilman disable-wp; 2047eea6710SKevin Hilman 2057eea6710SKevin Hilman mmc-pwrseq = <&sdio_pwrseq>; 2067eea6710SKevin Hilman 2077eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 2087eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 2097eea6710SKevin Hilman}; 2107eea6710SKevin Hilman 2117eea6710SKevin Hilman/* SD card */ 2127eea6710SKevin Hilman&sd_emmc_b { 2137eea6710SKevin Hilman status = "okay"; 2147eea6710SKevin Hilman pinctrl-0 = <&sdcard_pins>; 21567e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 21667e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 2177eea6710SKevin Hilman 2187eea6710SKevin Hilman bus-width = <4>; 2197eea6710SKevin Hilman cap-sd-highspeed; 2207eea6710SKevin Hilman max-frequency = <100000000>; 2217eea6710SKevin Hilman disable-wp; 2227eea6710SKevin Hilman 2237eea6710SKevin Hilman cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 2247eea6710SKevin Hilman cd-inverted; 2257eea6710SKevin Hilman 2267eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 2277eea6710SKevin Hilman vqmmc-supply = <&vddio_card>; 2287eea6710SKevin Hilman}; 2297eea6710SKevin Hilman 2307eea6710SKevin Hilman/* eMMC */ 2317eea6710SKevin Hilman&sd_emmc_c { 2327eea6710SKevin Hilman status = "okay"; 233ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 23467e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 23567e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 2367eea6710SKevin Hilman 2377eea6710SKevin Hilman bus-width = <8>; 2387eea6710SKevin Hilman cap-mmc-highspeed; 2397eea6710SKevin Hilman max-frequency = <200000000>; 2407eea6710SKevin Hilman non-removable; 2417eea6710SKevin Hilman disable-wp; 2427eea6710SKevin Hilman mmc-ddr-1_8v; 2437eea6710SKevin Hilman mmc-hs200-1_8v; 2447eea6710SKevin Hilman 2457eea6710SKevin Hilman mmc-pwrseq = <&emmc_pwrseq>; 2467eea6710SKevin Hilman vmmc-supply = <&vcc_3v3>; 2477eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 2487eea6710SKevin Hilman}; 2497eea6710SKevin Hilman 250e02849b9SAndreas Färber&uart_AO { 2517eea6710SKevin Hilman status = "okay"; 252e02849b9SAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 2537eea6710SKevin Hilman pinctrl-names = "default"; 2546939db7eSNeil Armstrong}; 255