1/* 2 * Copyright (c) 2016 Andreas Färber 3 * 4 * This file is dual-licensed: you can use it either under the terms 5 * of the GPL or the X11 license, at your option. Note that this dual 6 * licensing only applies to this file, and not this project as a 7 * whole. 8 * 9 * a) This library is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of the 12 * License, or (at your option) any later version. 13 * 14 * This library is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * Or, alternatively, 20 * 21 * b) Permission is hereby granted, free of charge, to any person 22 * obtaining a copy of this software and associated documentation 23 * files (the "Software"), to deal in the Software without 24 * restriction, including without limitation the rights to use, 25 * copy, modify, merge, publish, distribute, sublicense, and/or 26 * sell copies of the Software, and to permit persons to whom the 27 * Software is furnished to do so, subject to the following 28 * conditions: 29 * 30 * The above copyright notice and this permission notice shall be 31 * included in all copies or substantial portions of the Software. 32 * 33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 * OTHER DEALINGS IN THE SOFTWARE. 41 */ 42 43#include "imx6sx.dtsi" 44 45/ { 46 compatible = "fsl,imx6sx"; 47 48 chosen { 49 stdout-path = "serial0:115200n8"; 50 }; 51 52 leds { 53 compatible = "gpio-leds"; 54 55 red { 56 label = "udoo-neo:red:mmc"; 57 gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; 58 default-state = "off"; 59 linux,default-trigger = "mmc0"; 60 }; 61 62 orange { 63 label = "udoo-neo:orange:user"; 64 gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>; 65 default-state = "keep"; 66 }; 67 }; 68 69 reg_sdio_pwr: regulator-sdio-pwr { 70 compatible = "regulator-fixed"; 71 gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>; 72 enable-active-high; 73 regulator-name = "SDIO_PWR"; 74 regulator-min-microvolt = <3300000>; 75 regulator-max-microvolt = <3300000>; 76 regulator-boot-on; 77 }; 78 79 reg_usb_otg1_vbus: regulator-usb-otg1-vbus { 80 compatible = "regulator-fixed"; 81 pinctrl-names = "default"; 82 pinctrl-0 = <&pinctrl_otg1_reg>; 83 regulator-name = "usb_otg1_vbus"; 84 regulator-min-microvolt = <5000000>; 85 regulator-max-microvolt = <5000000>; 86 gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; 87 enable-active-high; 88 }; 89 90 reg_usb_otg2_vbus: regulator-usb-otg2-vbus { 91 compatible = "regulator-fixed"; 92 pinctrl-names = "default"; 93 pinctrl-0 = <&pinctrl_otg2_reg>; 94 regulator-name = "usb_otg2_vbus"; 95 regulator-min-microvolt = <5000000>; 96 regulator-max-microvolt = <5000000>; 97 gpio = <&gpio4 12 GPIO_ACTIVE_HIGH>; 98 enable-active-high; 99 }; 100 101 reg_wlan: regulator-wlan { 102 compatible = "regulator-fixed"; 103 regulator-name = "wlan-en-regulator"; 104 regulator-min-microvolt = <1800000>; 105 regulator-max-microvolt = <1800000>; 106 gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>; 107 startup-delay-us = <70000>; 108 enable-active-high; 109 }; 110 111 reg_bt: regulator-bt { 112 compatible = "regulator-fixed"; 113 pinctrl-names = "default"; 114 pinctrl-0 = <&pinctrl_bt_reg>; 115 enable-active-high; 116 gpio = <&gpio2 17 GPIO_ACTIVE_HIGH>; 117 regulator-name = "bt_reg"; 118 regulator-min-microvolt = <1800000>; 119 regulator-max-microvolt = <1800000>; 120 regulator-always-on; 121 }; 122}; 123 124&fec1 { 125 pinctrl-names = "default"; 126 pinctrl-0 = <&pinctrl_enet1>; 127 phy-mode = "rmii"; 128 phy-reset-duration = <10>; 129 phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; 130}; 131 132&i2c1 { 133 pinctrl-names = "default"; 134 pinctrl-0 = <&pinctrl_i2c1>; 135 clock-frequency = <100000>; 136 status = "okay"; 137 138 pmic: pmic@8 { 139 compatible = "fsl,pfuze3000"; 140 reg = <0x08>; 141 142 regulators { 143 sw1a_reg: sw1a { 144 regulator-min-microvolt = <700000>; 145 regulator-max-microvolt = <1475000>; 146 regulator-boot-on; 147 regulator-always-on; 148 regulator-ramp-delay = <6250>; 149 }; 150 151 sw1c_reg: sw1b { 152 regulator-min-microvolt = <700000>; 153 regulator-max-microvolt = <1475000>; 154 regulator-boot-on; 155 regulator-always-on; 156 regulator-ramp-delay = <6250>; 157 }; 158 159 sw2_reg: sw2 { 160 regulator-min-microvolt = <1500000>; 161 regulator-max-microvolt = <1850000>; 162 regulator-boot-on; 163 regulator-always-on; 164 }; 165 166 sw3a_reg: sw3 { 167 regulator-min-microvolt = <900000>; 168 regulator-max-microvolt = <1650000>; 169 regulator-boot-on; 170 regulator-always-on; 171 }; 172 173 swbst_reg: swbst { 174 regulator-min-microvolt = <5000000>; 175 regulator-max-microvolt = <5150000>; 176 }; 177 178 snvs_reg: vsnvs { 179 regulator-min-microvolt = <1000000>; 180 regulator-max-microvolt = <3000000>; 181 regulator-boot-on; 182 regulator-always-on; 183 }; 184 185 vref_reg: vrefddr { 186 regulator-boot-on; 187 regulator-always-on; 188 }; 189 190 vgen1_reg: vldo1 { 191 regulator-min-microvolt = <1800000>; 192 regulator-max-microvolt = <3300000>; 193 regulator-always-on; 194 }; 195 196 vgen2_reg: vldo2 { 197 regulator-min-microvolt = <800000>; 198 regulator-max-microvolt = <1550000>; 199 }; 200 201 vgen3_reg: vccsd { 202 regulator-min-microvolt = <2850000>; 203 regulator-max-microvolt = <3300000>; 204 regulator-always-on; 205 }; 206 207 vgen4_reg: v33 { 208 regulator-min-microvolt = <2850000>; 209 regulator-max-microvolt = <3300000>; 210 regulator-always-on; 211 }; 212 213 vgen5_reg: vldo3 { 214 regulator-min-microvolt = <1800000>; 215 regulator-max-microvolt = <3300000>; 216 regulator-always-on; 217 }; 218 219 vgen6_reg: vldo4 { 220 regulator-min-microvolt = <1800000>; 221 regulator-max-microvolt = <3300000>; 222 regulator-always-on; 223 }; 224 }; 225 }; 226}; 227 228&iomuxc { 229 pinctrl_bt_reg: btreggrp { 230 fsl,pins = 231 <MX6SX_PAD_KEY_ROW2__GPIO2_IO_17 0x15059>; 232 }; 233 234 pinctrl_enet1: enet1grp { 235 fsl,pins = 236 <MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0xa0b1>, 237 <MX6SX_PAD_ENET1_MDC__ENET1_MDC 0xa0b1>, 238 <MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0xa0b1>, 239 <MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0xa0b1>, 240 <MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0xa0b1>, 241 <MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0xa0b1>, 242 243 <MX6SX_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x3081>, 244 <MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9 0x3081>, 245 <MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081>, 246 <MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081>, 247 <MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081>, 248 <MX6SX_PAD_RGMII1_RXC__ENET1_RX_ER 0x3081>, 249 250 <MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91>; 251 }; 252 253 pinctrl_i2c1: i2c1grp { 254 fsl,pins = 255 <MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1>, 256 <MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1>; 257 }; 258 259 pinctrl_uart1: uart1grp { 260 fsl,pins = 261 <MX6SX_PAD_GPIO1_IO04__UART1_TX 0x1b0b1>, 262 <MX6SX_PAD_GPIO1_IO05__UART1_RX 0x1b0b1>; 263 }; 264 265 pinctrl_uart2: uart2grp { 266 fsl,pins = 267 <MX6SX_PAD_GPIO1_IO06__UART2_TX 0x1b0b1>, 268 <MX6SX_PAD_GPIO1_IO07__UART2_RX 0x1b0b1>; 269 }; 270 271 pinctrl_uart3: uart3grp { 272 fsl,pins = 273 <MX6SX_PAD_SD3_DATA4__UART3_RX 0x13059>, 274 <MX6SX_PAD_SD3_DATA5__UART3_TX 0x13059>, 275 <MX6SX_PAD_SD3_DATA6__UART3_RTS_B 0x13059>, 276 <MX6SX_PAD_SD3_DATA7__UART3_CTS_B 0x13059>; 277 }; 278 279 pinctrl_uart5: uart5grp { 280 fsl,pins = 281 <MX6SX_PAD_SD4_DATA4__UART5_RX 0x1b0b1>, 282 <MX6SX_PAD_SD4_DATA5__UART5_TX 0x1b0b1>; 283 }; 284 285 pinctrl_uart6: uart6grp { 286 fsl,pins = 287 <MX6SX_PAD_CSI_DATA00__UART6_RI_B 0x1b0b1>, 288 <MX6SX_PAD_CSI_DATA01__UART6_DSR_B 0x1b0b1>, 289 <MX6SX_PAD_CSI_DATA02__UART6_DTR_B 0x1b0b1>, 290 <MX6SX_PAD_CSI_DATA03__UART6_DCD_B 0x1b0b1>, 291 <MX6SX_PAD_CSI_DATA04__UART6_RX 0x1b0b1>, 292 <MX6SX_PAD_CSI_DATA05__UART6_TX 0x1b0b1>, 293 <MX6SX_PAD_CSI_DATA06__UART6_RTS_B 0x1b0b1>, 294 <MX6SX_PAD_CSI_DATA07__UART6_CTS_B 0x1b0b1>; 295 }; 296 297 pinctrl_otg1_reg: otg1grp { 298 fsl,pins = 299 <MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x10b0>; 300 }; 301 302 303 pinctrl_otg2_reg: otg2grp { 304 fsl,pins = 305 <MX6SX_PAD_NAND_RE_B__GPIO4_IO_12 0x10b0>; 306 }; 307 308 pinctrl_usb_otg1: usbotg1grp { 309 fsl,pins = 310 <MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x17059>, 311 <MX6SX_PAD_GPIO1_IO08__USB_OTG1_OC 0x10b0>; 312 }; 313 314 pinctrl_usb_otg2: usbot2ggrp { 315 fsl,pins = 316 <MX6SX_PAD_QSPI1A_DATA0__USB_OTG2_OC 0x10b0>; 317 }; 318 319 pinctrl_usdhc2: usdhc2grp { 320 fsl,pins = 321 <MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059>, 322 <MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059>, 323 <MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059>, 324 <MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059>, 325 <MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059>, 326 <MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059>, 327 <MX6SX_PAD_SD1_DATA0__GPIO6_IO_2 0x17059>; /* CD */ 328 }; 329 330 pinctrl_usdhc3: usdhc3grp { 331 fsl,pins = 332 <MX6SX_PAD_KEY_COL2__GPIO2_IO_12 0x15059>, 333 <MX6SX_PAD_KEY_ROW1__GPIO2_IO_16 0x13059>, 334 <MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x17069>, 335 <MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x17069>, 336 <MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x17069>, 337 <MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x17069>, 338 <MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x17069>, 339 <MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x10069>, 340 <MX6SX_PAD_CSI_MCLK__OSC32K_32K_OUT 0x10059>; 341 }; 342}; 343 344&uart1 { 345 pinctrl-names = "default"; 346 pinctrl-0 = <&pinctrl_uart1>; 347 status = "okay"; 348}; 349 350/* Cortex-M4 serial */ 351&uart2 { 352 pinctrl-names = "default"; 353 pinctrl-0 = <&pinctrl_uart2>; 354 status = "disabled"; 355}; 356 357&uart3 { /* Bluetooth */ 358 pinctrl-names = "default"; 359 pinctrl-0 = <&pinctrl_uart3>; 360 uart-has-rtscts; 361 status = "okay"; 362}; 363 364/* Arduino serial */ 365&uart5 { 366 pinctrl-names = "default"; 367 pinctrl-0 = <&pinctrl_uart5>; 368 status = "disabled"; 369}; 370 371&uart6 { 372 pinctrl-names = "default"; 373 pinctrl-0 = <&pinctrl_uart6>; 374 uart-has-rtscts; 375 status = "disabled"; 376}; 377 378&usbotg1 { /* J2 micro USB port */ 379 vbus-supply = <®_usb_otg1_vbus>; 380 pinctrl-names = "default"; 381 pinctrl-0 = <&pinctrl_usb_otg1>; 382 status = "okay"; 383}; 384 385&usbotg2 { /* J3 host USB port */ 386 vbus-supply = <®_usb_otg2_vbus>; 387 pinctrl-names = "default"; 388 pinctrl-0 = <&pinctrl_usb_otg2>; 389 dr_mode = "host"; 390 status = "okay"; 391}; 392 393&usdhc2 { 394 pinctrl-names = "default"; 395 pinctrl-0 = <&pinctrl_usdhc2>; 396 vmmc-supply = <®_sdio_pwr>; 397 bus-width = <4>; 398 cd-gpios = <&gpio6 2 GPIO_ACTIVE_LOW>; 399 no-1-8-v; 400 keep-power-in-suspend; 401 wakeup-source; 402 status = "okay"; 403}; 404 405&usdhc3 { /* Wi-Fi */ 406 pinctrl-names = "default"; 407 pinctrl-0 = <&pinctrl_usdhc3>; 408 non-removable; 409 vmmc-supply = <®_wlan>; 410 cap-power-off-card; 411 wakeup-source; 412 keep-power-in-suspend; 413 #address-cells = <1>; 414 #size-cells = <0>; 415 status = "okay"; 416 417 wlcore: wlcore@2 { 418 compatible = "ti,wl1831"; 419 reg = <2>; 420 interrupt-parent = <&gpio2>; 421 interrupts = <16 IRQ_TYPE_EDGE_RISING>; 422 ref-clock-frequency = <38400000>; 423 tcxo-clock-frequency = <26000000>; 424 }; 425}; 426