1/* 2 * at91-sama5d2_xplained.dts - Device Tree file for SAMA5D2 Xplained board 3 * 4 * Copyright (C) 2015 Atmel, 5 * 2015 Nicolas Ferre <nicolas.ferre@atmel.com> 6 * 7 * This file is dual-licensed: you can use it either under the terms 8 * of the GPL or the X11 license, at your option. Note that this dual 9 * licensing only applies to this file, and not this project as a 10 * whole. 11 * 12 * a) This file is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License as 14 * published by the Free Software Foundation; either version 2 of the 15 * License, or (at your option) any later version. 16 * 17 * This file is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * Or, alternatively, 23 * 24 * b) Permission is hereby granted, free of charge, to any person 25 * obtaining a copy of this software and associated documentation 26 * files (the "Software"), to deal in the Software without 27 * restriction, including without limitation the rights to use, 28 * copy, modify, merge, publish, distribute, sublicense, and/or 29 * sell copies of the Software, and to permit persons to whom the 30 * Software is furnished to do so, subject to the following 31 * conditions: 32 * 33 * The above copyright notice and this permission notice shall be 34 * included in all copies or substantial portions of the Software. 35 * 36 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43 * OTHER DEALINGS IN THE SOFTWARE. 44 */ 45/dts-v1/; 46#include "sama5d2.dtsi" 47#include "sama5d2-pinfunc.h" 48#include <dt-bindings/mfd/atmel-flexcom.h> 49#include <dt-bindings/gpio/gpio.h> 50 51/ { 52 model = "Atmel SAMA5D2 Xplained"; 53 compatible = "atmel,sama5d2-xplained", "atmel,sama5d2", "atmel,sama5"; 54 55 chosen { 56 stdout-path = "serial0:115200n8"; 57 }; 58 59 clocks { 60 slow_xtal { 61 clock-frequency = <32768>; 62 }; 63 64 main_xtal { 65 clock-frequency = <12000000>; 66 }; 67 }; 68 69 ahb { 70 usb0: gadget@00300000 { 71 atmel,vbus-gpio = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>; 72 pinctrl-names = "default"; 73 pinctrl-0 = <&pinctrl_usba_vbus>; 74 status = "okay"; 75 }; 76 77 usb1: ohci@00400000 { 78 num-ports = <3>; 79 atmel,vbus-gpio = <0 /* &pioA PIN_PB9 GPIO_ACTIVE_HIGH */ 80 &pioA PIN_PB10 GPIO_ACTIVE_HIGH 81 0 82 >; 83 pinctrl-names = "default"; 84 pinctrl-0 = <&pinctrl_usb_default>; 85 status = "okay"; 86 }; 87 88 usb2: ehci@00500000 { 89 status = "okay"; 90 }; 91 92 sdmmc0: sdio-host@a0000000 { 93 bus-width = <8>; 94 pinctrl-names = "default"; 95 pinctrl-0 = <&pinctrl_sdmmc0_default>; 96 non-removable; 97 mmc-ddr-1_8v; 98 status = "okay"; 99 }; 100 101 sdmmc1: sdio-host@b0000000 { 102 bus-width = <4>; 103 pinctrl-names = "default"; 104 pinctrl-0 = <&pinctrl_sdmmc1_default>; 105 status = "okay"; /* conflict with qspi0 */ 106 }; 107 108 apb { 109 spi0: spi@f8000000 { 110 pinctrl-names = "default"; 111 pinctrl-0 = <&pinctrl_spi0_default>; 112 status = "okay"; 113 114 m25p80@0 { 115 compatible = "atmel,at25df321a"; 116 reg = <0>; 117 spi-max-frequency = <50000000>; 118 }; 119 }; 120 121 macb0: ethernet@f8008000 { 122 pinctrl-names = "default"; 123 pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq>; 124 phy-mode = "rmii"; 125 status = "okay"; 126 127 ethernet-phy@1 { 128 reg = <0x1>; 129 interrupt-parent = <&pioA>; 130 interrupts = <PIN_PC9 IRQ_TYPE_LEVEL_LOW>; 131 }; 132 }; 133 134 pdmic@f8018000 { 135 pinctrl-names = "default"; 136 pinctrl-0 = <&pinctrl_pdmic_default>; 137 atmel,model = "PDMIC @ sama5d2_xplained"; 138 atmel,mic-min-freq = <1000000>; 139 atmel,mic-max-freq = <3246000>; 140 atmel,mic-offset = <0x0>; 141 status = "okay"; 142 }; 143 144 uart1: serial@f8020000 { 145 pinctrl-names = "default"; 146 pinctrl-0 = <&pinctrl_uart1_default>; 147 atmel,use-dma-rx; 148 atmel,use-dma-tx; 149 status = "okay"; 150 }; 151 152 i2c0: i2c@f8028000 { 153 dmas = <0>, <0>; 154 pinctrl-names = "default"; 155 pinctrl-0 = <&pinctrl_i2c0_default>; 156 i2c-sda-hold-time-ns = <350>; 157 status = "okay"; 158 159 pmic@5b { 160 compatible = "active-semi,act8945a"; 161 reg = <0x5b>; 162 active-semi,vsel-high; 163 active-semi,chglev-gpios = <&pioA PIN_PA12 GPIO_ACTIVE_HIGH>; 164 active-semi,lbo-gpios = <&pioA PIN_PC8 GPIO_ACTIVE_LOW>; 165 active-semi,irq_gpios = <&pioA PIN_PB13 GPIO_ACTIVE_LOW>; 166 active-semi,input-voltage-threshold-microvolt = <6600>; 167 active-semi,precondition-timeout = <40>; 168 active-semi,total-timeout = <3>; 169 pinctrl-names = "default"; 170 pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>; 171 status = "okay"; 172 173 regulators { 174 vdd_1v35_reg: REG_DCDC1 { 175 regulator-name = "VDD_1V35"; 176 regulator-min-microvolt = <1350000>; 177 regulator-max-microvolt = <1350000>; 178 regulator-always-on; 179 }; 180 181 vdd_1v2_reg: REG_DCDC2 { 182 regulator-name = "VDD_1V2"; 183 regulator-min-microvolt = <1100000>; 184 regulator-max-microvolt = <1300000>; 185 regulator-always-on; 186 }; 187 188 vdd_3v3_reg: REG_DCDC3 { 189 regulator-name = "VDD_3V3"; 190 regulator-min-microvolt = <3300000>; 191 regulator-max-microvolt = <3300000>; 192 regulator-always-on; 193 }; 194 195 vdd_fuse_reg: REG_LDO1 { 196 regulator-name = "VDD_FUSE"; 197 regulator-min-microvolt = <2500000>; 198 regulator-max-microvolt = <2500000>; 199 regulator-always-on; 200 }; 201 202 vdd_3v3_lp_reg: REG_LDO2 { 203 regulator-name = "VDD_3V3_LP"; 204 regulator-min-microvolt = <3300000>; 205 regulator-max-microvolt = <3300000>; 206 regulator-always-on; 207 }; 208 209 vdd_led_reg: REG_LDO3 { 210 regulator-name = "VDD_LED"; 211 regulator-min-microvolt = <3300000>; 212 regulator-max-microvolt = <3300000>; 213 regulator-always-on; 214 }; 215 216 vdd_sdhc_1v8_reg: REG_LDO4 { 217 regulator-name = "VDD_SDHC_1V8"; 218 regulator-min-microvolt = <1800000>; 219 regulator-max-microvolt = <1800000>; 220 regulator-always-on; 221 }; 222 }; 223 }; 224 }; 225 226 pwm0: pwm@f802c000 { 227 status = "okay"; 228 }; 229 230 flx0: flexcom@f8034000 { 231 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>; 232 status = "disabled"; /* conflict with ISC_D2 & ISC_D3 data pins */ 233 234 uart5: serial@200 { 235 compatible = "atmel,at91sam9260-usart"; 236 reg = <0x200 0x200>; 237 interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>; 238 clocks = <&flx0_clk>; 239 clock-names = "usart"; 240 pinctrl-names = "default"; 241 pinctrl-0 = <&pinctrl_flx0_default>; 242 atmel,fifo-size = <32>; 243 status = "okay"; 244 }; 245 }; 246 247 shdwc@f8048010 { 248 atmel,shdwc-debouncer = <976>; 249 atmel,wakeup-rtc-timer; 250 251 input@0 { 252 reg = <0>; 253 atmel,wakeup-type = "low"; 254 }; 255 }; 256 257 watchdog@f8048040 { 258 status = "okay"; 259 }; 260 261 can0: can@f8054000 { 262 pinctrl-names = "default"; 263 pinctrl-0 = <&pinctrl_can0_default>; 264 status = "okay"; 265 }; 266 267 uart3: serial@fc008000 { 268 atmel,use-dma-rx; 269 atmel,use-dma-tx; 270 pinctrl-names = "default"; 271 pinctrl-0 = <&pinctrl_uart3_default>; 272 status = "okay"; 273 }; 274 275 flx4: flexcom@fc018000 { 276 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>; 277 status = "okay"; 278 279 i2c2: i2c@600 { 280 compatible = "atmel,sama5d2-i2c"; 281 reg = <0x600 0x200>; 282 interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>; 283 dmas = <0>, <0>; 284 dma-names = "tx", "rx"; 285 #address-cells = <1>; 286 #size-cells = <0>; 287 clocks = <&flx4_clk>; 288 pinctrl-names = "default"; 289 pinctrl-0 = <&pinctrl_flx4_default>; 290 atmel,fifo-size = <16>; 291 status = "okay"; 292 }; 293 }; 294 295 i2c1: i2c@fc028000 { 296 dmas = <0>, <0>; 297 pinctrl-names = "default"; 298 pinctrl-0 = <&pinctrl_i2c1_default>; 299 status = "okay"; 300 301 at24@54 { 302 compatible = "atmel,24c02"; 303 reg = <0x54>; 304 pagesize = <16>; 305 }; 306 }; 307 308 adc: adc@fc030000 { 309 vddana-supply = <&vdd_3v3_lp_reg>; 310 vref-supply = <&vdd_3v3_lp_reg>; 311 pinctrl-names = "default"; 312 pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>; 313 status = "okay"; 314 }; 315 316 pinctrl@fc038000 { 317 /* 318 * There is no real pinmux for ADC, if the pin 319 * is not requested by another peripheral then 320 * the muxing is done when channel is enabled. 321 * Requesting pins for ADC is GPIO is 322 * encouraged to prevent conflicts and to 323 * disable bias in order to be in the same 324 * state when the pin is not muxed to the adc. 325 */ 326 pinctrl_adc_default: adc_default { 327 pinmux = <PIN_PD23__GPIO>; 328 bias-disable; 329 }; 330 331 pinctrl_can0_default: can0_default { 332 pinmux = <PIN_PC10__CANTX0>, 333 <PIN_PC11__CANRX0>; 334 bias-disable; 335 }; 336 337 pinctrl_can1_default: can1_default { 338 pinmux = <PIN_PC26__CANTX1>, 339 <PIN_PC27__CANRX1>; 340 bias-disable; 341 }; 342 343 /* 344 * The ADTRG pin can work on any edge type. 345 * In here it's being pulled up, so need to 346 * connect it to ground to get an edge e.g. 347 * Trigger can be configured on falling, rise 348 * or any edge, and the pull-up can be changed 349 * to pull-down or left floating according to 350 * needs. 351 */ 352 pinctrl_adtrg_default: adtrg_default { 353 pinmux = <PIN_PD31__ADTRG>; 354 bias-pull-up; 355 }; 356 357 pinctrl_charger_chglev: charger_chglev { 358 pinmux = <PIN_PA12__GPIO>; 359 bias-disable; 360 }; 361 362 pinctrl_charger_irq: charger_irq { 363 pinmux = <PIN_PB13__GPIO>; 364 bias-disable; 365 }; 366 367 pinctrl_charger_lbo: charger_lbo { 368 pinmux = <PIN_PC8__GPIO>; 369 bias-pull-up; 370 }; 371 372 pinctrl_classd_default: classd_default { 373 pinmux = <PIN_PB1__CLASSD_R0>, 374 <PIN_PB2__CLASSD_R1>, 375 <PIN_PB3__CLASSD_R2>, 376 <PIN_PB4__CLASSD_R3>; 377 bias-pull-up; 378 }; 379 380 pinctrl_flx0_default: flx0_default { 381 pinmux = <PIN_PB28__FLEXCOM0_IO0>, 382 <PIN_PB29__FLEXCOM0_IO1>; 383 bias-disable; 384 }; 385 386 pinctrl_flx4_default: flx4_default { 387 pinmux = <PIN_PD12__FLEXCOM4_IO0>, 388 <PIN_PD13__FLEXCOM4_IO1>; 389 bias-disable; 390 }; 391 392 pinctrl_i2c0_default: i2c0_default { 393 pinmux = <PIN_PD21__TWD0>, 394 <PIN_PD22__TWCK0>; 395 bias-disable; 396 }; 397 398 pinctrl_i2c1_default: i2c1_default { 399 pinmux = <PIN_PD4__TWD1>, 400 <PIN_PD5__TWCK1>; 401 bias-disable; 402 }; 403 404 pinctrl_key_gpio_default: key_gpio_default { 405 pinmux = <PIN_PB9__GPIO>; 406 bias-pull-up; 407 }; 408 409 pinctrl_led_gpio_default: led_gpio_default { 410 pinmux = <PIN_PB0__GPIO>, 411 <PIN_PB5__GPIO>, 412 <PIN_PB6__GPIO>; 413 bias-pull-up; 414 }; 415 416 pinctrl_macb0_default: macb0_default { 417 pinmux = <PIN_PB14__GTXCK>, 418 <PIN_PB15__GTXEN>, 419 <PIN_PB16__GRXDV>, 420 <PIN_PB17__GRXER>, 421 <PIN_PB18__GRX0>, 422 <PIN_PB19__GRX1>, 423 <PIN_PB20__GTX0>, 424 <PIN_PB21__GTX1>, 425 <PIN_PB22__GMDC>, 426 <PIN_PB23__GMDIO>; 427 bias-disable; 428 }; 429 430 pinctrl_macb0_phy_irq: macb0_phy_irq { 431 pinmux = <PIN_PC9__GPIO>; 432 bias-disable; 433 }; 434 435 pinctrl_pdmic_default: pdmic_default { 436 pinmux = <PIN_PB26__PDMIC_DAT>, 437 <PIN_PB27__PDMIC_CLK>; 438 bias-disable; 439 }; 440 441 pinctrl_sdmmc0_default: sdmmc0_default { 442 cmd_data { 443 pinmux = <PIN_PA1__SDMMC0_CMD>, 444 <PIN_PA2__SDMMC0_DAT0>, 445 <PIN_PA3__SDMMC0_DAT1>, 446 <PIN_PA4__SDMMC0_DAT2>, 447 <PIN_PA5__SDMMC0_DAT3>, 448 <PIN_PA6__SDMMC0_DAT4>, 449 <PIN_PA7__SDMMC0_DAT5>, 450 <PIN_PA8__SDMMC0_DAT6>, 451 <PIN_PA9__SDMMC0_DAT7>; 452 bias-pull-up; 453 }; 454 455 ck_cd_rstn_vddsel { 456 pinmux = <PIN_PA0__SDMMC0_CK>, 457 <PIN_PA10__SDMMC0_RSTN>, 458 <PIN_PA11__SDMMC0_VDDSEL>, 459 <PIN_PA13__SDMMC0_CD>; 460 bias-disable; 461 }; 462 }; 463 464 pinctrl_sdmmc1_default: sdmmc1_default { 465 cmd_data { 466 pinmux = <PIN_PA28__SDMMC1_CMD>, 467 <PIN_PA18__SDMMC1_DAT0>, 468 <PIN_PA19__SDMMC1_DAT1>, 469 <PIN_PA20__SDMMC1_DAT2>, 470 <PIN_PA21__SDMMC1_DAT3>; 471 bias-pull-up; 472 }; 473 474 conf-ck_cd { 475 pinmux = <PIN_PA22__SDMMC1_CK>, 476 <PIN_PA30__SDMMC1_CD>; 477 bias-disable; 478 }; 479 }; 480 481 pinctrl_spi0_default: spi0_default { 482 pinmux = <PIN_PA14__SPI0_SPCK>, 483 <PIN_PA15__SPI0_MOSI>, 484 <PIN_PA16__SPI0_MISO>, 485 <PIN_PA17__SPI0_NPCS0>; 486 bias-disable; 487 }; 488 489 pinctrl_uart1_default: uart1_default { 490 pinmux = <PIN_PD2__URXD1>, 491 <PIN_PD3__UTXD1>; 492 bias-disable; 493 }; 494 495 pinctrl_uart3_default: uart3_default { 496 pinmux = <PIN_PB11__URXD3>, 497 <PIN_PB12__UTXD3>; 498 bias-disable; 499 }; 500 501 pinctrl_usb_default: usb_default { 502 pinmux = <PIN_PB10__GPIO>; 503 bias-disable; 504 }; 505 506 pinctrl_usba_vbus: usba_vbus { 507 pinmux = <PIN_PA31__GPIO>; 508 bias-disable; 509 }; 510 511 }; 512 513 classd: classd@fc048000 { 514 pinctrl-names = "default"; 515 pinctrl-0 = <&pinctrl_classd_default>; 516 atmel,pwm-type = "diff"; 517 atmel,non-overlap-time = <10>; 518 status = "okay"; 519 }; 520 521 can1: can@fc050000 { 522 pinctrl-names = "default"; 523 pinctrl-0 = <&pinctrl_can1_default>; 524 status = "okay"; 525 }; 526 }; 527 }; 528 529 gpio_keys { 530 compatible = "gpio-keys"; 531 532 pinctrl-names = "default"; 533 pinctrl-0 = <&pinctrl_key_gpio_default>; 534 535 bp1 { 536 label = "PB_USER"; 537 gpios = <&pioA PIN_PB9 GPIO_ACTIVE_LOW>; 538 linux,code = <0x104>; 539 }; 540 }; 541 542 leds { 543 compatible = "gpio-leds"; 544 pinctrl-names = "default"; 545 pinctrl-0 = <&pinctrl_led_gpio_default>; 546 status = "okay"; 547 548 red { 549 label = "red"; 550 gpios = <&pioA PIN_PB6 GPIO_ACTIVE_LOW>; 551 }; 552 553 554 green { 555 label = "green"; 556 gpios = <&pioA PIN_PB5 GPIO_ACTIVE_LOW>; 557 }; 558 559 blue { 560 label = "blue"; 561 gpios = <&pioA PIN_PB0 GPIO_ACTIVE_LOW>; 562 linux,default-trigger = "heartbeat"; 563 }; 564 }; 565}; 566