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 143b16c71c9SNeil Armstrong&cec_AO { 144b16c71c9SNeil Armstrong status = "okay"; 145b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 146b16c71c9SNeil Armstrong pinctrl-names = "default"; 147b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 148b16c71c9SNeil Armstrong}; 149b16c71c9SNeil Armstrong 150e02849b9SAndreas Färber&cvbs_vdac_port { 151e02849b9SAndreas Färber cvbs_vdac_out: endpoint { 152e02849b9SAndreas Färber remote-endpoint = <&cvbs_connector_in>; 153e02849b9SAndreas Färber }; 1547eea6710SKevin Hilman}; 1557eea6710SKevin Hilman 1567eea6710SKevin Hilmanðmac { 1577eea6710SKevin Hilman status = "okay"; 1587eea6710SKevin Hilman phy-mode = "rmii"; 1597eea6710SKevin Hilman phy-handle = <&internal_phy>; 1607eea6710SKevin Hilman}; 1617eea6710SKevin Hilman 162e02849b9SAndreas Färber&hdmi_tx { 163e02849b9SAndreas Färber status = "okay"; 164e02849b9SAndreas Färber pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 165e02849b9SAndreas Färber pinctrl-names = "default"; 166e02849b9SAndreas Färber}; 167e02849b9SAndreas Färber 168e02849b9SAndreas Färber&hdmi_tx_tmds_port { 169e02849b9SAndreas Färber hdmi_tx_tmds_out: endpoint { 170e02849b9SAndreas Färber remote-endpoint = <&hdmi_connector_in>; 171e02849b9SAndreas Färber }; 172e02849b9SAndreas Färber}; 173e02849b9SAndreas Färber 1747eea6710SKevin Hilman&ir { 1757eea6710SKevin Hilman status = "okay"; 1767eea6710SKevin Hilman pinctrl-0 = <&remote_input_ao_pins>; 1777eea6710SKevin Hilman pinctrl-names = "default"; 1787eea6710SKevin Hilman}; 1797eea6710SKevin Hilman 180e02849b9SAndreas Färber&pwm_ef { 181e02849b9SAndreas Färber status = "okay"; 182e02849b9SAndreas Färber pinctrl-0 = <&pwm_e_pins>; 183e02849b9SAndreas Färber pinctrl-names = "default"; 184e02849b9SAndreas Färber clocks = <&clkc CLKID_FCLK_DIV4>; 185e02849b9SAndreas Färber clock-names = "clkin0"; 186e02849b9SAndreas Färber}; 187e02849b9SAndreas Färber 1887eea6710SKevin Hilman/* Wireless SDIO Module */ 1897eea6710SKevin Hilman&sd_emmc_a { 1907eea6710SKevin Hilman status = "okay"; 1917eea6710SKevin Hilman pinctrl-0 = <&sdio_pins>; 1927eea6710SKevin Hilman pinctrl-names = "default"; 1937eea6710SKevin Hilman #address-cells = <1>; 1947eea6710SKevin Hilman #size-cells = <0>; 1957eea6710SKevin Hilman 1967eea6710SKevin Hilman bus-width = <4>; 1977eea6710SKevin Hilman cap-sd-highspeed; 1987eea6710SKevin Hilman max-frequency = <100000000>; 1997eea6710SKevin Hilman 2007eea6710SKevin Hilman non-removable; 2017eea6710SKevin Hilman disable-wp; 2027eea6710SKevin Hilman 2037eea6710SKevin Hilman mmc-pwrseq = <&sdio_pwrseq>; 2047eea6710SKevin Hilman 2057eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 2067eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 2077eea6710SKevin Hilman}; 2087eea6710SKevin Hilman 2097eea6710SKevin Hilman/* SD card */ 2107eea6710SKevin Hilman&sd_emmc_b { 2117eea6710SKevin Hilman status = "okay"; 2127eea6710SKevin Hilman pinctrl-0 = <&sdcard_pins>; 2137eea6710SKevin Hilman pinctrl-names = "default"; 2147eea6710SKevin Hilman 2157eea6710SKevin Hilman bus-width = <4>; 2167eea6710SKevin Hilman cap-sd-highspeed; 2177eea6710SKevin Hilman max-frequency = <100000000>; 2187eea6710SKevin Hilman disable-wp; 2197eea6710SKevin Hilman 2207eea6710SKevin Hilman cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 2217eea6710SKevin Hilman cd-inverted; 2227eea6710SKevin Hilman 2237eea6710SKevin Hilman vmmc-supply = <&vddao_3v3>; 2247eea6710SKevin Hilman vqmmc-supply = <&vddio_card>; 2257eea6710SKevin Hilman}; 2267eea6710SKevin Hilman 2277eea6710SKevin Hilman/* eMMC */ 2287eea6710SKevin Hilman&sd_emmc_c { 2297eea6710SKevin Hilman status = "okay"; 2307eea6710SKevin Hilman pinctrl-0 = <&emmc_pins>; 2317eea6710SKevin Hilman pinctrl-names = "default"; 2327eea6710SKevin Hilman 2337eea6710SKevin Hilman bus-width = <8>; 2347eea6710SKevin Hilman cap-sd-highspeed; 2357eea6710SKevin Hilman cap-mmc-highspeed; 2367eea6710SKevin Hilman max-frequency = <200000000>; 2377eea6710SKevin Hilman non-removable; 2387eea6710SKevin Hilman disable-wp; 2397eea6710SKevin Hilman mmc-ddr-1_8v; 2407eea6710SKevin Hilman mmc-hs200-1_8v; 2417eea6710SKevin Hilman 2427eea6710SKevin Hilman mmc-pwrseq = <&emmc_pwrseq>; 2437eea6710SKevin Hilman vmmc-supply = <&vcc_3v3>; 2447eea6710SKevin Hilman vqmmc-supply = <&vddio_boot>; 2457eea6710SKevin Hilman}; 2467eea6710SKevin Hilman 247e02849b9SAndreas Färber&uart_AO { 2487eea6710SKevin Hilman status = "okay"; 249e02849b9SAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 2507eea6710SKevin Hilman pinctrl-names = "default"; 2516939db7eSNeil Armstrong}; 252