1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2-ICP board 4 * 5 * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries 6 * 7 * Author: Radu Pirea & Razvan Stefanescu, 8 * Codrin Ciubotariu <codrin.ciubotariu@microchip.com>, 9 * Cristian Birsan <cristian.birsan@microchip.com> 10 */ 11/dts-v1/; 12#include "sama5d2.dtsi" 13#include "sama5d2-pinfunc.h" 14#include <dt-bindings/gpio/gpio.h> 15#include <dt-bindings/mfd/atmel-flexcom.h> 16 17/ { 18 model = "Microchip SAMA5D2-ICP"; 19 compatible = "microchip,sama5d2-icp", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5"; 20 21 aliases { 22 serial0 = &uart0; /* debug uart0 + mikro BUS 1 */ 23 serial1 = &uart1; /* mikro BUS 3 */ 24 serial3 = &uart3; /* mikro BUS 2 */ 25 serial5 = &uart7; /* flx2 */ 26 i2c0 = &i2c0; 27 i2c1 = &i2c1; 28 }; 29 30 chosen { 31 stdout-path = "serial0:115200n8"; 32 }; 33 34 clocks { 35 slow_xtal { 36 clock-frequency = <32768>; 37 }; 38 39 main_xtal { 40 clock-frequency = <12000000>; 41 }; 42 }; 43 44 gpio_keys { 45 compatible = "gpio-keys"; 46 47 pinctrl-names = "default"; 48 pinctrl-0 = <&pinctrl_key_gpio_default>; 49 status = "okay"; 50 51 sw4 { 52 label = "USER_PB1"; 53 gpios = <&pioA PIN_PD0 GPIO_ACTIVE_LOW>; 54 linux,code = <0x104>; 55 wakeup-source; 56 }; 57 }; 58 59 leds { 60 compatible = "gpio-leds"; 61 pinctrl-names = "default"; 62 pinctrl-0 = <&pinctrl_led_gpio_default>; 63 status = "okay"; /* conflict with pwm0 */ 64 65 red { 66 label = "red"; 67 gpios = <&pioA PIN_PB0 GPIO_ACTIVE_HIGH>; 68 }; 69 70 green { 71 label = "green"; 72 gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>; 73 }; 74 75 blue { 76 label = "blue"; 77 gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>; 78 linux,default-trigger = "heartbeat"; 79 }; 80 }; 81}; 82 83&adc { 84 vddana-supply = <&vdd_io_reg>; 85 vref-supply = <&vdd_io_reg>; 86 pinctrl-names = "default"; 87 pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>; 88 status = "okay"; 89}; 90 91&can0 { 92 pinctrl-names = "default"; 93 pinctrl-0 = <&pinctrl_can0_default>; 94 status = "okay"; 95}; 96 97&can1 { 98 pinctrl-names = "default"; 99 pinctrl-0 = <&pinctrl_can1_default>; 100 status = "okay"; 101}; 102 103&flx0 { /* mikrobus2 spi */ 104 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>; 105 status = "okay"; 106 107 spi2: spi@400 { 108 dmas = <0>, <0>; 109 cs-gpios = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>; 110 pinctrl-names = "default"; 111 pinctrl-0 = <&pinctrl_mikrobus2_spi &pinctrl_ksz_spi_cs>; 112 status = "okay"; 113 #address-cells = <1>; 114 #size-cells = <0>; 115 116 switch0: ksz8563@0 { 117 compatible = "microchip,ksz8563"; 118 reg = <0>; 119 reset-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_LOW>; 120 121 spi-max-frequency = <500000>; 122 spi-cpha; 123 spi-cpol; 124 125 ports { 126 #address-cells = <1>; 127 #size-cells = <0>; 128 port@0 { 129 reg = <0>; 130 label = "lan1"; 131 }; 132 133 port@1 { 134 reg = <1>; 135 label = "lan2"; 136 }; 137 138 port@2 { 139 reg = <2>; 140 label = "cpu"; 141 ethernet = <&macb0>; 142 phy-mode = "mii"; 143 fixed-link { 144 speed = <100>; 145 full-duplex; 146 }; 147 }; 148 }; 149 }; 150 }; 151}; 152 153&flx2 { 154 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>; 155 status = "okay"; 156 157 uart7: serial@200 { 158 pinctrl-0 = <&pinctrl_flx2_default>; 159 pinctrl-names = "default"; 160 atmel,use-dma-rx; 161 atmel,use-dma-tx; 162 status = "okay"; /* Conflict w/ qspi1. */ 163 }; 164}; 165 166&flx3 { /* mikrobus1 spi */ 167 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>; 168 status = "okay"; 169 170 spi5: spi@400 { 171 dmas = <0>, <0>; 172 pinctrl-names = "default"; 173 pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>; 174 status = "okay"; 175 }; 176}; 177 178&flx4 { 179 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>; 180 status = "okay"; 181 182 i2c6: i2c@600 { 183 dmas = <0>, <0>; 184 pinctrl-names = "default"; 185 pinctrl-0 = <&pinctrl_flx4_default>; 186 status = "okay"; 187 188 mcp16502@5b { 189 compatible = "microchip,mcp16502"; 190 reg = <0x5b>; 191 status = "okay"; 192 lpm-gpios = <&pioBU 7 GPIO_ACTIVE_LOW>; 193 194 regulators { 195 vdd_io_reg: VDD_IO { 196 regulator-name = "VDD_IO"; 197 regulator-min-microvolt = <1200000>; 198 regulator-max-microvolt = <3700000>; 199 regulator-initial-mode = <2>; 200 regulator-allowed-modes = <2>, <4>; 201 regulator-always-on; 202 203 regulator-state-standby { 204 regulator-on-in-suspend; 205 regulator-mode = <4>; 206 }; 207 208 regulator-state-mem { 209 regulator-off-in-suspend; 210 regulator-mode = <4>; 211 }; 212 }; 213 214 VDD_DDR { 215 regulator-name = "VDD_DDR"; 216 regulator-min-microvolt = <600000>; 217 regulator-max-microvolt = <1850000>; 218 regulator-initial-mode = <2>; 219 regulator-allowed-modes = <2>, <4>; 220 regulator-always-on; 221 222 regulator-state-standby { 223 regulator-on-in-suspend; 224 regulator-mode = <4>; 225 }; 226 227 regulator-state-mem { 228 regulator-on-in-suspend; 229 regulator-mode = <4>; 230 }; 231 }; 232 233 VDD_CORE { 234 regulator-name = "VDD_CORE"; 235 regulator-min-microvolt = <600000>; 236 regulator-max-microvolt = <1850000>; 237 regulator-initial-mode = <2>; 238 regulator-allowed-modes = <2>, <4>; 239 regulator-always-on; 240 241 regulator-state-standby { 242 regulator-on-in-suspend; 243 regulator-mode = <4>; 244 }; 245 246 regulator-state-mem { 247 regulator-off-in-suspend; 248 regulator-mode = <4>; 249 }; 250 }; 251 252 VDD_OTHER { 253 regulator-name = "VDD_OTHER"; 254 regulator-min-microvolt = <600000>; 255 regulator-max-microvolt = <1850000>; 256 regulator-initial-mode = <2>; 257 regulator-allowed-modes = <2>, <4>; 258 regulator-always-on; 259 260 regulator-state-standby { 261 regulator-on-in-suspend; 262 regulator-mode = <4>; 263 }; 264 265 regulator-state-mem { 266 regulator-off-in-suspend; 267 regulator-mode = <4>; 268 }; 269 }; 270 271 LDO1 { 272 regulator-name = "LDO1"; 273 regulator-min-microvolt = <1200000>; 274 regulator-max-microvolt = <3700000>; 275 regulator-always-on; 276 277 regulator-state-standby { 278 regulator-on-in-suspend; 279 }; 280 281 regulator-state-mem { 282 regulator-off-in-suspend; 283 }; 284 }; 285 286 LDO2 { 287 regulator-name = "LDO2"; 288 regulator-min-microvolt = <1200000>; 289 regulator-max-microvolt = <3700000>; 290 regulator-always-on; 291 292 regulator-state-standby { 293 regulator-on-in-suspend; 294 }; 295 296 regulator-state-mem { 297 regulator-off-in-suspend; 298 }; 299 }; 300 301 }; 302 }; 303 }; 304}; 305 306&i2c0 { /* mikrobus i2c */ 307 pinctrl-names = "default"; 308 pinctrl-0 = <&pinctrl_mikrobus_i2c>; 309 status = "okay"; 310}; 311 312&i2c1 { 313 dmas = <0>, <0>; 314 pinctrl-names = "default"; 315 pinctrl-0 = <&pinctrl_i2c1_default>; 316 status = "okay"; 317 318 eeprom@50 { 319 compatible = "atmel,24c32"; 320 reg = <0x50>; 321 pagesize = <16>; 322 status = "okay"; 323 }; 324 325 eeprom@52 { 326 compatible = "atmel,24c32"; 327 reg = <0x52>; 328 pagesize = <16>; 329 status = "disabled"; 330 }; 331 332 eeprom@53 { 333 compatible = "atmel,24c32"; 334 reg = <0x53>; 335 pagesize = <16>; 336 status = "disabled"; 337 }; 338}; 339 340&macb0 { 341 pinctrl-names = "default"; 342 pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq &pinctrl_macb0_rst>; 343 phy-mode = "mii"; 344 status = "okay"; 345 346 fixed-link { 347 speed = <100>; 348 full-duplex; 349 }; 350}; 351 352&pioA { 353 pinctrl_adc_default: adc_default { 354 pinmux = <PIN_PD24__GPIO>, 355 <PIN_PD25__GPIO>, 356 <PIN_PD26__GPIO>; 357 bias-disable; 358 }; 359 360 /* 361 * The ADTRG pin can work on any edge type. 362 * In here it's being pulled up, so need to 363 * connect it to ground to get an edge e.g. 364 * Trigger can be configured on falling, rise 365 * or any edge, and the pull-up can be changed 366 * to pull-down or left floating according to 367 * needs. 368 */ 369 pinctrl_adtrg_default: adtrg_default { 370 pinmux = <PIN_PD31__ADTRG>; 371 bias-pull-up; 372 }; 373 374 pinctrl_flx4_default: flx4_default { 375 pinmux = <PIN_PC28__FLEXCOM4_IO0>, 376 <PIN_PC29__FLEXCOM4_IO1>; 377 bias-disable; 378 }; 379 380 pinctrl_can0_default: can0_default { 381 pinmux = <PIN_PC10__CANTX0>, 382 <PIN_PC11__CANRX0>; 383 bias-disable; 384 }; 385 386 pinctrl_can1_default: can1_default { 387 pinmux = <PIN_PC26__CANTX1>, 388 <PIN_PC27__CANRX1>; 389 bias-disable; 390 }; 391 392 pinctrl_i2c1_default: i2c1_default { 393 pinmux = <PIN_PD19__TWD1>, 394 <PIN_PD20__TWCK1>; 395 bias-disable; 396 }; 397 398 pinctrl_key_gpio_default: key_gpio_default { 399 pinmux = <PIN_PD0__GPIO>; 400 bias-pull-up; 401 }; 402 403 pinctrl_led_gpio_default: led_gpio_default { 404 pinmux = <PIN_PB0__GPIO>, 405 <PIN_PB1__GPIO>, 406 <PIN_PA31__GPIO>; 407 bias-pull-up; 408 }; 409 410 pinctrl_qspi1_default: qspi1_default { 411 pinmux = <PIN_PA6__QSPI1_SCK>, 412 <PIN_PA7__QSPI1_IO0>, 413 <PIN_PA8__QSPI1_IO1>, 414 <PIN_PA9__QSPI1_IO2>, 415 <PIN_PA10__QSPI1_IO3>, 416 <PIN_PA11__QSPI1_CS>; 417 bias-disable; 418 }; 419 420 pinctrl_sdmmc0_default: sdmmc0_default { 421 cmd_data { 422 pinmux = <PIN_PA1__SDMMC0_CMD>, 423 <PIN_PA2__SDMMC0_DAT0>, 424 <PIN_PA3__SDMMC0_DAT1>, 425 <PIN_PA4__SDMMC0_DAT2>, 426 <PIN_PA5__SDMMC0_DAT3>; 427 bias-disable; 428 }; 429 430 ck_cd { 431 pinmux = <PIN_PA0__SDMMC0_CK>, 432 <PIN_PA13__SDMMC0_CD>; 433 bias-disable; 434 }; 435 }; 436 437 pinctrl_sdmmc1_default: sdmmc1_default { 438 cmd_data { 439 pinmux = <PIN_PA18__SDMMC1_DAT0>, 440 <PIN_PA19__SDMMC1_DAT1>, 441 <PIN_PA20__SDMMC1_DAT2>, 442 <PIN_PA21__SDMMC1_DAT3>; 443 bias-disable; 444 }; 445 446 ck_cd { 447 pinmux = <PIN_PA22__SDMMC1_CK>, 448 <PIN_PA28__SDMMC1_CMD>; 449 bias-disable; 450 }; 451 }; 452 453 pinctrl_mikrobus_i2c: mikrobus_i2c { 454 pinmux = <PIN_PD22__TWCK0>, 455 <PIN_PD21__TWD0>; 456 bias-disable; 457 }; 458 459 pinctrl_mikrobus1_an: mikrobus1_an { 460 pinmux = <PIN_PD26__GPIO>; 461 bias-disable; 462 }; 463 464 pinctrl_mikrobus1_rst: mikrobus1_rst { 465 pinmux = <PIN_PC5__GPIO>; 466 bias-disable; 467 }; 468 469 pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs { 470 pinmux = <PIN_PC21__FLEXCOM3_IO3>; 471 bias-disable; 472 }; 473 474 pinctrl_mikrobus1_spi: mikrobus1_spi { 475 pinmux = <PIN_PC20__FLEXCOM3_IO0>, 476 <PIN_PC19__FLEXCOM3_IO1>, 477 <PIN_PC18__FLEXCOM3_IO2>; 478 bias-disable; 479 }; 480 481 pinctrl_mikrobus1_pwm: mikrobus1_pwm { 482 pinmux = <PIN_PC4__TIOB1>; 483 bias-disable; 484 }; 485 486 pinctrl_mikrobus1_int: mikrobus1_int { 487 pinmux = <PIN_PC3__GPIO>; 488 bias-disable; 489 }; 490 491 pinctrl_mikrobus1_uart: mikrobus1_uart { 492 pinmux = <PIN_PB26__URXD0>, 493 <PIN_PB27__UTXD0>; 494 bias-disable; 495 }; 496 497 pinctrl_mikrobus2_an: mikrobus2_an { 498 pinmux = <PIN_PD25__GPIO>; 499 bias-disable; 500 }; 501 502 pinctrl_mikrobus2_rst: mikrobus2_rst { 503 pinmux = <PIN_PB24__GPIO>; 504 bias-disable; 505 }; 506 507 pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs { 508 pinmux = <PIN_PB31__FLEXCOM0_IO3>; 509 bias-disable; 510 }; 511 512 pinctrl_mikrobus2_spi: mikrobus2_spi { 513 pinmux = <PIN_PB28__FLEXCOM0_IO0>, 514 <PIN_PB29__FLEXCOM0_IO1>, 515 <PIN_PB30__FLEXCOM0_IO2>; 516 bias-disable; 517 }; 518 519 pinctrl_ksz_spi_cs: ksz_spi_cs { 520 pinmux = <PIN_PC0__GPIO>; 521 bias-disable; 522 }; 523 524 pinctrl_mikrobus2_pwm: mikrobus2_pwm { 525 pinmux = <PIN_PB23__TIOB2>; 526 bias-disable; 527 }; 528 529 pinctrl_mikrobus2_int: mikrobus2_int { 530 pinmux = <PIN_PB22__GPIO>; 531 bias-disable; 532 }; 533 534 pinctrl_mikrobus2_uart: mikrobus2_uart { 535 pinmux = <PIN_PC12__URXD3>, 536 <PIN_PC13__UTXD3>; 537 bias-disable; 538 }; 539 540 pinctrl_mikrobus3_an: mikrobus3_an { 541 pinmux = <PIN_PD24__GPIO>; 542 bias-disable; 543 }; 544 545 pinctrl_mikrobus3_rst: mikrobus3_rst { 546 pinmux = <PIN_PB21__GPIO>; 547 bias-disable; 548 }; 549 550 pinctrl_mikrobus3_spi_cs: mikrobus3_spi_cs { 551 pinmux = <PIN_PA17__SPI0_NPCS0>; 552 bias-disable; 553 }; 554 555 pinctrl_mikrobus3_spi: mikrobus3_spi { 556 pinmux = <PIN_PA14__SPI0_SPCK>, 557 <PIN_PA16__SPI0_MISO>, 558 <PIN_PA15__SPI0_MOSI>; 559 bias-disable; 560 }; 561 562 pinctrl_mikrobus3_pwm: mikrobus3_pwm { 563 pinmux = <PIN_PB20__TIOB3>; 564 bias-disable; 565 }; 566 567 pinctrl_mikrobus3_int: mikrobus3_int { 568 pinmux = <PIN_PB18__GPIO>; 569 bias-disable; 570 }; 571 572 pinctrl_mikrobus3_uart: mikrobus3_uart { 573 pinmux = <PIN_PC7__URXD1>, 574 <PIN_PC8__UTXD1>; 575 bias-disable; 576 }; 577 578 pinctrl_usb_default: usb_default { 579 pinmux = <PIN_PC17__GPIO>; 580 bias-disable; 581 }; 582 583 pinctrl_usba_vbus: usba_vbus { 584 pinmux = <PIN_PD23__GPIO>; 585 bias-disable; 586 }; 587 588 pinctrl_pwm0_pwm2_default: pwm0_pwm2_default { 589 pinmux = <PIN_PB5__PWMH2>, 590 <PIN_PB6__PWML2>; 591 bias-pull-up; 592 }; 593 594 pinctrl_macb0_default: macb0_default { 595 pinmux = <PIN_PD1__GRXCK>, 596 <PIN_PD2__GTXER>, 597 <PIN_PD5__GRX2>, 598 <PIN_PD6__GRX3>, 599 <PIN_PD7__GTX2>, 600 <PIN_PD8__GTX3>, 601 <PIN_PD9__GTXCK>, 602 <PIN_PD10__GTXEN>, 603 <PIN_PD11__GRXDV>, 604 <PIN_PD12__GRXER>, 605 <PIN_PD13__GRX0>, 606 <PIN_PD14__GRX1>, 607 <PIN_PD15__GTX0>, 608 <PIN_PD16__GTX1>, 609 <PIN_PD17__GMDC>, 610 <PIN_PD18__GMDIO>; 611 bias-disable; 612 }; 613 614 pinctrl_macb0_phy_irq: macb0_phy_irq { 615 pinmux = <PIN_PD3__GPIO>; 616 bias-disable; 617 }; 618 619 pinctrl_macb0_rst: macb0_sw_rst { 620 pinmux = <PIN_PD4__GPIO>; 621 bias-disable; 622 }; 623 624 pinctrl_flx2_default: flx2_default { 625 pinmux = <PIN_PA6__FLEXCOM2_IO0>, 626 <PIN_PA7__FLEXCOM2_IO1>, 627 <PIN_PA9__FLEXCOM2_IO3>, 628 <PIN_PA10__FLEXCOM2_IO4>; 629 bias-disable; 630 }; 631}; 632 633&pwm0 { 634 pinctrl-names = "default"; 635 pinctrl-0 = <&pinctrl_pwm0_pwm2_default>; 636 status = "disabled"; /* conflict with leds, HSIC */ 637}; 638 639&qspi1 { 640 pinctrl-names = "default"; 641 pinctrl-0 = <&pinctrl_qspi1_default>; 642 status = "disabled"; /* Conflict with wilc_pwrseq, flx2 */ 643 644 flash@0 { 645 #address-cells = <1>; 646 #size-cells = <1>; 647 compatible = "jedec,spi-nor"; 648 reg = <0>; 649 spi-max-frequency = <80000000>; 650 spi-tx-bus-width = <4>; 651 spi-rx-bus-width = <4>; 652 m25p,fast-read; 653 654 at91bootstrap@0 { 655 label = "qspi: at91bootstrap"; 656 reg = <0x00000000 0x00040000>; 657 }; 658 659 bootloader@40000 { 660 label = "qspi: bootloader"; 661 reg = <0x00040000 0x000c0000>; 662 }; 663 664 bootloaderenvred@100000 { 665 label = "qspi: bootloader env redundant"; 666 reg = <0x00100000 0x00040000>; 667 }; 668 669 bootloaderenv@140000 { 670 label = "qspi: bootloader env"; 671 reg = <0x00140000 0x00040000>; 672 }; 673 674 dtb@180000 { 675 label = "qspi: device tree"; 676 reg = <0x00180000 0x00080000>; 677 }; 678 679 kernel@200000 { 680 label = "qspi: kernel"; 681 reg = <0x00200000 0x00600000>; 682 }; 683 }; 684}; 685 686&sdmmc0 { 687 no-1-8-v; 688 bus-width = <4>; 689 pinctrl-names = "default"; 690 pinctrl-0 = <&pinctrl_sdmmc0_default>; 691 status = "okay"; 692}; 693 694&shutdown_controller { 695 atmel,shdwc-debouncer = <976>; 696 atmel,wakeup-rtc-timer; 697 698 input@0 { 699 reg = <0>; 700 atmel,wakeup-type = "low"; 701 }; 702}; 703 704&spi0 { /* mikrobus3 spi */ 705 pinctrl-names = "default"; 706 pinctrl-0 = <&pinctrl_mikrobus3_spi &pinctrl_mikrobus3_spi_cs>; 707 status = "okay"; 708}; 709 710&tcb0 { 711 timer0: timer@0 { 712 compatible = "atmel,tcb-timer"; 713 reg = <0>; 714 }; 715 716 timer1: timer@1 { 717 compatible = "atmel,tcb-timer"; 718 reg = <1>; 719 }; 720}; 721 722&uart0 { 723 pinctrl-names = "default"; 724 pinctrl-0 = <&pinctrl_mikrobus1_uart>; 725 atmel,use-dma-rx; 726 atmel,use-dma-tx; 727 status = "okay"; 728}; 729 730&uart1 { 731 pinctrl-names = "default"; 732 pinctrl-0 = <&pinctrl_mikrobus3_uart>; 733 atmel,use-dma-rx; 734 atmel,use-dma-tx; 735 status = "okay"; 736}; 737 738&uart3 { 739 pinctrl-names = "default"; 740 pinctrl-0 = <&pinctrl_mikrobus2_uart>; 741 atmel,use-dma-rx; 742 atmel,use-dma-tx; 743 status = "okay"; 744}; 745 746&usb0 { 747 atmel,vbus-gpio = <&pioA PIN_PD23 GPIO_ACTIVE_HIGH>; 748 pinctrl-names = "default"; 749 pinctrl-0 = <&pinctrl_usba_vbus>; 750 status = "okay"; 751}; 752 753&usb1 { 754 num-ports = <3>; 755 pinctrl-names = "default"; 756 pinctrl-0 = <&pinctrl_usb_default>; 757 status = "okay"; 758}; 759 760&usb2 { 761 phy_type = "hsic"; 762 status = "okay"; 763}; 764 765&watchdog { 766 status = "okay"; 767}; 768