1/* 2 * Copyright (C) 2014 STMicroelectronics Limited. 3 * Author: Giuseppe Cavallaro <peppe.cavallaro@st.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * publishhed by the Free Software Foundation. 8 */ 9#include "st-pincfg.h" 10#include <dt-bindings/interrupt-controller/arm-gic.h> 11/ { 12 13 aliases { 14 /* 0-5: PIO_SBC */ 15 gpio0 = &pio0; 16 gpio1 = &pio1; 17 gpio2 = &pio2; 18 gpio3 = &pio3; 19 gpio4 = &pio4; 20 gpio5 = &pio5; 21 /* 10-19: PIO_FRONT0 */ 22 gpio6 = &pio10; 23 gpio7 = &pio11; 24 gpio8 = &pio12; 25 gpio9 = &pio13; 26 gpio10 = &pio14; 27 gpio11 = &pio15; 28 gpio12 = &pio16; 29 gpio13 = &pio17; 30 gpio14 = &pio18; 31 gpio15 = &pio19; 32 /* 20: PIO_FRONT1 */ 33 gpio16 = &pio20; 34 /* 30-35: PIO_REAR */ 35 gpio17 = &pio30; 36 gpio18 = &pio31; 37 gpio19 = &pio32; 38 gpio20 = &pio33; 39 gpio21 = &pio34; 40 gpio22 = &pio35; 41 /* 40-42: PIO_FLASH */ 42 gpio23 = &pio40; 43 gpio24 = &pio41; 44 gpio25 = &pio42; 45 }; 46 47 soc { 48 pin-controller-sbc { 49 #address-cells = <1>; 50 #size-cells = <1>; 51 compatible = "st,stih407-sbc-pinctrl"; 52 st,syscfg = <&syscfg_sbc>; 53 reg = <0x0961f080 0x4>; 54 reg-names = "irqmux"; 55 interrupts = <GIC_SPI 188 IRQ_TYPE_NONE>; 56 interrupts-names = "irqmux"; 57 ranges = <0 0x09610000 0x6000>; 58 59 pio0: gpio@09610000 { 60 gpio-controller; 61 #gpio-cells = <1>; 62 interrupt-controller; 63 #interrupt-cells = <2>; 64 reg = <0x0 0x100>; 65 st,bank-name = "PIO0"; 66 }; 67 pio1: gpio@09611000 { 68 gpio-controller; 69 #gpio-cells = <1>; 70 interrupt-controller; 71 #interrupt-cells = <2>; 72 reg = <0x1000 0x100>; 73 st,bank-name = "PIO1"; 74 }; 75 pio2: gpio@09612000 { 76 gpio-controller; 77 #gpio-cells = <1>; 78 interrupt-controller; 79 #interrupt-cells = <2>; 80 reg = <0x2000 0x100>; 81 st,bank-name = "PIO2"; 82 }; 83 pio3: gpio@09613000 { 84 gpio-controller; 85 #gpio-cells = <1>; 86 interrupt-controller; 87 #interrupt-cells = <2>; 88 reg = <0x3000 0x100>; 89 st,bank-name = "PIO3"; 90 }; 91 pio4: gpio@09614000 { 92 gpio-controller; 93 #gpio-cells = <1>; 94 interrupt-controller; 95 #interrupt-cells = <2>; 96 reg = <0x4000 0x100>; 97 st,bank-name = "PIO4"; 98 }; 99 100 pio5: gpio@09615000 { 101 gpio-controller; 102 #gpio-cells = <1>; 103 interrupt-controller; 104 #interrupt-cells = <2>; 105 reg = <0x5000 0x100>; 106 st,bank-name = "PIO5"; 107 }; 108 109 rc { 110 pinctrl_ir: ir0 { 111 st,pins { 112 ir = <&pio4 0 ALT2 IN>; 113 }; 114 }; 115 }; 116 117 /* SBC_ASC0 - UART10 */ 118 sbc_serial0 { 119 pinctrl_sbc_serial0: sbc_serial0-0 { 120 st,pins { 121 tx = <&pio3 4 ALT1 OUT>; 122 rx = <&pio3 5 ALT1 IN>; 123 }; 124 }; 125 }; 126 /* SBC_ASC1 - UART11 */ 127 sbc_serial1 { 128 pinctrl_sbc_serial1: sbc_serial1-0 { 129 st,pins { 130 tx = <&pio2 6 ALT3 OUT>; 131 rx = <&pio2 7 ALT3 IN>; 132 }; 133 }; 134 }; 135 136 i2c10 { 137 pinctrl_i2c10_default: i2c10-default { 138 st,pins { 139 sda = <&pio4 6 ALT1 BIDIR>; 140 scl = <&pio4 5 ALT1 BIDIR>; 141 }; 142 }; 143 }; 144 145 i2c11 { 146 pinctrl_i2c11_default: i2c11-default { 147 st,pins { 148 sda = <&pio5 1 ALT1 BIDIR>; 149 scl = <&pio5 0 ALT1 BIDIR>; 150 }; 151 }; 152 }; 153 154 keyscan { 155 pinctrl_keyscan: keyscan { 156 st,pins { 157 keyin0 = <&pio4 0 ALT6 IN>; 158 keyin1 = <&pio4 5 ALT4 IN>; 159 keyin2 = <&pio0 4 ALT2 IN>; 160 keyin3 = <&pio2 6 ALT2 IN>; 161 162 keyout0 = <&pio4 6 ALT4 OUT>; 163 keyout1 = <&pio1 7 ALT2 OUT>; 164 keyout2 = <&pio0 6 ALT2 OUT>; 165 keyout3 = <&pio2 7 ALT2 OUT>; 166 }; 167 }; 168 }; 169 170 gmac1 { 171 /* 172 * Almost all the boards based on STiH407 SoC have an embedded 173 * switch where the mdio/mdc have been used for managing the SMI 174 * iface via I2C. For this reason these lines can be allocated 175 * by using dedicated configuration (in case of there will be a 176 * standard PHY transceiver on-board). 177 */ 178 pinctrl_rgmii1: rgmii1-0 { 179 st,pins { 180 181 txd0 = <&pio0 0 ALT1 OUT DE_IO 0 CLK_A>; 182 txd1 = <&pio0 1 ALT1 OUT DE_IO 0 CLK_A>; 183 txd2 = <&pio0 2 ALT1 OUT DE_IO 0 CLK_A>; 184 txd3 = <&pio0 3 ALT1 OUT DE_IO 0 CLK_A>; 185 txen = <&pio0 5 ALT1 OUT DE_IO 0 CLK_A>; 186 txclk = <&pio0 6 ALT1 IN NICLK 0 CLK_A>; 187 rxd0 = <&pio1 4 ALT1 IN DE_IO 0 CLK_A>; 188 rxd1 = <&pio1 5 ALT1 IN DE_IO 0 CLK_A>; 189 rxd2 = <&pio1 6 ALT1 IN DE_IO 0 CLK_A>; 190 rxd3 = <&pio1 7 ALT1 IN DE_IO 0 CLK_A>; 191 rxdv = <&pio2 0 ALT1 IN DE_IO 0 CLK_A>; 192 rxclk = <&pio2 2 ALT1 IN NICLK 500 CLK_A>; 193 clk125 = <&pio3 7 ALT4 IN NICLK 0 CLK_A>; 194 phyclk = <&pio2 3 ALT4 OUT NICLK 1750 CLK_B>; 195 }; 196 }; 197 198 pinctrl_rgmii1_mdio: rgmii1-mdio { 199 st,pins { 200 mdio = <&pio1 0 ALT1 OUT BYPASS 0>; 201 mdc = <&pio1 1 ALT1 OUT NICLK 0 CLK_A>; 202 mdint = <&pio1 3 ALT1 IN BYPASS 0>; 203 }; 204 }; 205 206 pinctrl_mii1: mii1 { 207 st,pins { 208 txd0 = <&pio0 0 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 209 txd1 = <&pio0 1 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 210 txd2 = <&pio0 2 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 211 txd3 = <&pio0 3 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 212 txer = <&pio0 4 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 213 txen = <&pio0 5 ALT1 OUT SE_NICLK_IO 0 CLK_A>; 214 txclk = <&pio0 6 ALT1 IN NICLK 0 CLK_A>; 215 col = <&pio0 7 ALT1 IN BYPASS 1000>; 216 217 mdio = <&pio1 0 ALT1 OUT BYPASS 1500>; 218 mdc = <&pio1 1 ALT1 OUT NICLK 0 CLK_A>; 219 crs = <&pio1 2 ALT1 IN BYPASS 1000>; 220 mdint = <&pio1 3 ALT1 IN BYPASS 0>; 221 rxd0 = <&pio1 4 ALT1 IN SE_NICLK_IO 0 CLK_A>; 222 rxd1 = <&pio1 5 ALT1 IN SE_NICLK_IO 0 CLK_A>; 223 rxd2 = <&pio1 6 ALT1 IN SE_NICLK_IO 0 CLK_A>; 224 rxd3 = <&pio1 7 ALT1 IN SE_NICLK_IO 0 CLK_A>; 225 226 rxdv = <&pio2 0 ALT1 IN SE_NICLK_IO 0 CLK_A>; 227 rx_er = <&pio2 1 ALT1 IN SE_NICLK_IO 0 CLK_A>; 228 rxclk = <&pio2 2 ALT1 IN NICLK 0 CLK_A>; 229 phyclk = <&pio2 3 ALT1 OUT NICLK 0 CLK_A>; 230 }; 231 }; 232 }; 233 234 pwm1 { 235 pinctrl_pwm1_chan0_default: pwm1-0-default { 236 st,pins { 237 pwm-out = <&pio3 0 ALT1 OUT>; 238 }; 239 }; 240 pinctrl_pwm1_chan1_default: pwm1-1-default { 241 st,pins { 242 pwm-out = <&pio4 4 ALT1 OUT>; 243 }; 244 }; 245 pinctrl_pwm1_chan2_default: pwm1-2-default { 246 st,pins { 247 pwm-out = <&pio4 6 ALT3 OUT>; 248 }; 249 }; 250 pinctrl_pwm1_chan3_default: pwm1-3-default { 251 st,pins { 252 pwm-out = <&pio4 7 ALT3 OUT>; 253 }; 254 }; 255 }; 256 }; 257 258 pin-controller-front0 { 259 #address-cells = <1>; 260 #size-cells = <1>; 261 compatible = "st,stih407-front-pinctrl"; 262 st,syscfg = <&syscfg_front>; 263 reg = <0x0920f080 0x4>; 264 reg-names = "irqmux"; 265 interrupts = <GIC_SPI 189 IRQ_TYPE_NONE>; 266 interrupts-names = "irqmux"; 267 ranges = <0 0x09200000 0x10000>; 268 269 pio10: pio@09200000 { 270 gpio-controller; 271 #gpio-cells = <1>; 272 interrupt-controller; 273 #interrupt-cells = <2>; 274 reg = <0x0 0x100>; 275 st,bank-name = "PIO10"; 276 }; 277 pio11: pio@09201000 { 278 gpio-controller; 279 #gpio-cells = <1>; 280 interrupt-controller; 281 #interrupt-cells = <2>; 282 reg = <0x1000 0x100>; 283 st,bank-name = "PIO11"; 284 }; 285 pio12: pio@09202000 { 286 gpio-controller; 287 #gpio-cells = <1>; 288 interrupt-controller; 289 #interrupt-cells = <2>; 290 reg = <0x2000 0x100>; 291 st,bank-name = "PIO12"; 292 }; 293 pio13: pio@09203000 { 294 gpio-controller; 295 #gpio-cells = <1>; 296 interrupt-controller; 297 #interrupt-cells = <2>; 298 reg = <0x3000 0x100>; 299 st,bank-name = "PIO13"; 300 }; 301 pio14: pio@09204000 { 302 gpio-controller; 303 #gpio-cells = <1>; 304 interrupt-controller; 305 #interrupt-cells = <2>; 306 reg = <0x4000 0x100>; 307 st,bank-name = "PIO14"; 308 }; 309 pio15: pio@09205000 { 310 gpio-controller; 311 #gpio-cells = <1>; 312 interrupt-controller; 313 #interrupt-cells = <2>; 314 reg = <0x5000 0x100>; 315 st,bank-name = "PIO15"; 316 }; 317 pio16: pio@09206000 { 318 gpio-controller; 319 #gpio-cells = <1>; 320 interrupt-controller; 321 #interrupt-cells = <2>; 322 reg = <0x6000 0x100>; 323 st,bank-name = "PIO16"; 324 }; 325 pio17: pio@09207000 { 326 gpio-controller; 327 #gpio-cells = <1>; 328 interrupt-controller; 329 #interrupt-cells = <2>; 330 reg = <0x7000 0x100>; 331 st,bank-name = "PIO17"; 332 }; 333 pio18: pio@09208000 { 334 gpio-controller; 335 #gpio-cells = <1>; 336 interrupt-controller; 337 #interrupt-cells = <2>; 338 reg = <0x8000 0x100>; 339 st,bank-name = "PIO18"; 340 }; 341 pio19: pio@09209000 { 342 gpio-controller; 343 #gpio-cells = <1>; 344 interrupt-controller; 345 #interrupt-cells = <2>; 346 reg = <0x9000 0x100>; 347 st,bank-name = "PIO19"; 348 }; 349 350 /* Comms */ 351 serial0 { 352 pinctrl_serial0: serial0-0 { 353 st,pins { 354 tx = <&pio17 0 ALT1 OUT>; 355 rx = <&pio17 1 ALT1 IN>; 356 }; 357 }; 358 }; 359 360 serial1 { 361 pinctrl_serial1: serial1-0 { 362 st,pins { 363 tx = <&pio16 0 ALT1 OUT>; 364 rx = <&pio16 1 ALT1 IN>; 365 }; 366 }; 367 }; 368 369 serial2 { 370 pinctrl_serial2: serial2-0 { 371 st,pins { 372 tx = <&pio15 0 ALT1 OUT>; 373 rx = <&pio15 1 ALT1 IN>; 374 }; 375 }; 376 }; 377 378 mmc1 { 379 pinctrl_sd1: sd1-0 { 380 st,pins { 381 sd_clk = <&pio19 3 ALT5 BIDIR NICLK 0 CLK_B>; 382 sd_cmd = <&pio19 2 ALT5 BIDIR_PU BYPASS 0>; 383 sd_dat0 = <&pio19 4 ALT5 BIDIR_PU BYPASS 0>; 384 sd_dat1 = <&pio19 5 ALT5 BIDIR_PU BYPASS 0>; 385 sd_dat2 = <&pio19 6 ALT5 BIDIR_PU BYPASS 0>; 386 sd_dat3 = <&pio19 7 ALT5 BIDIR_PU BYPASS 0>; 387 sd_led = <&pio16 6 ALT6 OUT>; 388 sd_pwren = <&pio16 7 ALT6 OUT>; 389 sd_cd = <&pio19 0 ALT6 IN>; 390 sd_wp = <&pio19 1 ALT6 IN>; 391 }; 392 }; 393 }; 394 395 396 i2c0 { 397 pinctrl_i2c0_default: i2c0-default { 398 st,pins { 399 sda = <&pio10 6 ALT2 BIDIR>; 400 scl = <&pio10 5 ALT2 BIDIR>; 401 }; 402 }; 403 }; 404 405 i2c1 { 406 pinctrl_i2c1_default: i2c1-default { 407 st,pins { 408 sda = <&pio11 1 ALT2 BIDIR>; 409 scl = <&pio11 0 ALT2 BIDIR>; 410 }; 411 }; 412 }; 413 414 i2c2 { 415 pinctrl_i2c2_default: i2c2-default { 416 st,pins { 417 sda = <&pio15 6 ALT2 BIDIR>; 418 scl = <&pio15 5 ALT2 BIDIR>; 419 }; 420 }; 421 }; 422 423 i2c3 { 424 pinctrl_i2c3_default: i2c3-default { 425 st,pins { 426 sda = <&pio18 6 ALT1 BIDIR>; 427 scl = <&pio18 5 ALT1 BIDIR>; 428 }; 429 }; 430 }; 431 432 spi0 { 433 pinctrl_spi0_default: spi0-default { 434 st,pins { 435 mtsr = <&pio12 6 ALT2 BIDIR>; 436 mrst = <&pio12 7 ALT2 BIDIR>; 437 scl = <&pio12 5 ALT2 BIDIR>; 438 }; 439 }; 440 }; 441 }; 442 443 pin-controller-front1 { 444 #address-cells = <1>; 445 #size-cells = <1>; 446 compatible = "st,stih407-front-pinctrl"; 447 st,syscfg = <&syscfg_front>; 448 reg = <0x0921f080 0x4>; 449 reg-names = "irqmux"; 450 interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>; 451 interrupts-names = "irqmux"; 452 ranges = <0 0x09210000 0x10000>; 453 454 pio20: pio@09210000 { 455 gpio-controller; 456 #gpio-cells = <1>; 457 interrupt-controller; 458 #interrupt-cells = <2>; 459 reg = <0x0 0x100>; 460 st,bank-name = "PIO20"; 461 }; 462 }; 463 464 pin-controller-rear { 465 #address-cells = <1>; 466 #size-cells = <1>; 467 compatible = "st,stih407-rear-pinctrl"; 468 st,syscfg = <&syscfg_rear>; 469 reg = <0x0922f080 0x4>; 470 reg-names = "irqmux"; 471 interrupts = <GIC_SPI 191 IRQ_TYPE_NONE>; 472 interrupts-names = "irqmux"; 473 ranges = <0 0x09220000 0x6000>; 474 475 pio30: gpio@09220000 { 476 gpio-controller; 477 #gpio-cells = <1>; 478 interrupt-controller; 479 #interrupt-cells = <2>; 480 reg = <0x0 0x100>; 481 st,bank-name = "PIO30"; 482 }; 483 pio31: gpio@09221000 { 484 gpio-controller; 485 #gpio-cells = <1>; 486 interrupt-controller; 487 #interrupt-cells = <2>; 488 reg = <0x1000 0x100>; 489 st,bank-name = "PIO31"; 490 }; 491 pio32: gpio@09222000 { 492 gpio-controller; 493 #gpio-cells = <1>; 494 interrupt-controller; 495 #interrupt-cells = <2>; 496 reg = <0x2000 0x100>; 497 st,bank-name = "PIO32"; 498 }; 499 pio33: gpio@09223000 { 500 gpio-controller; 501 #gpio-cells = <1>; 502 interrupt-controller; 503 #interrupt-cells = <2>; 504 reg = <0x3000 0x100>; 505 st,bank-name = "PIO33"; 506 }; 507 pio34: gpio@09224000 { 508 gpio-controller; 509 #gpio-cells = <1>; 510 interrupt-controller; 511 #interrupt-cells = <2>; 512 reg = <0x4000 0x100>; 513 st,bank-name = "PIO34"; 514 }; 515 pio35: gpio@09225000 { 516 gpio-controller; 517 #gpio-cells = <1>; 518 interrupt-controller; 519 #interrupt-cells = <2>; 520 reg = <0x5000 0x100>; 521 st,bank-name = "PIO35"; 522 }; 523 524 i2c4 { 525 pinctrl_i2c4_default: i2c4-default { 526 st,pins { 527 sda = <&pio30 1 ALT1 BIDIR>; 528 scl = <&pio30 0 ALT1 BIDIR>; 529 }; 530 }; 531 }; 532 533 i2c5 { 534 pinctrl_i2c5_default: i2c5-default { 535 st,pins { 536 sda = <&pio34 4 ALT1 BIDIR>; 537 scl = <&pio34 3 ALT1 BIDIR>; 538 }; 539 }; 540 }; 541 542 usb3 { 543 pinctrl_usb3: usb3-2 { 544 st,pins { 545 usb-oc-detect = <&pio35 4 ALT1 IN>; 546 usb-pwr-enable = <&pio35 5 ALT1 OUT>; 547 usb-vbus-valid = <&pio35 6 ALT1 IN>; 548 }; 549 }; 550 }; 551 552 pwm0 { 553 pinctrl_pwm0_chan0_default: pwm0-0-default { 554 st,pins { 555 pwm-out = <&pio31 1 ALT1 OUT>; 556 }; 557 }; 558 }; 559 }; 560 561 pin-controller-flash { 562 #address-cells = <1>; 563 #size-cells = <1>; 564 compatible = "st,stih407-flash-pinctrl"; 565 st,syscfg = <&syscfg_flash>; 566 reg = <0x0923f080 0x4>; 567 reg-names = "irqmux"; 568 interrupts = <GIC_SPI 192 IRQ_TYPE_NONE>; 569 interrupts-names = "irqmux"; 570 ranges = <0 0x09230000 0x3000>; 571 572 pio40: gpio@09230000 { 573 gpio-controller; 574 #gpio-cells = <1>; 575 interrupt-controller; 576 #interrupt-cells = <2>; 577 reg = <0 0x100>; 578 st,bank-name = "PIO40"; 579 }; 580 pio41: gpio@09231000 { 581 gpio-controller; 582 #gpio-cells = <1>; 583 interrupt-controller; 584 #interrupt-cells = <2>; 585 reg = <0x1000 0x100>; 586 st,bank-name = "PIO41"; 587 }; 588 pio42: gpio@09232000 { 589 gpio-controller; 590 #gpio-cells = <1>; 591 interrupt-controller; 592 #interrupt-cells = <2>; 593 reg = <0x2000 0x100>; 594 st,bank-name = "PIO42"; 595 }; 596 597 mmc0 { 598 pinctrl_mmc0: mmc0-0 { 599 st,pins { 600 emmc_clk = <&pio40 6 ALT1 BIDIR>; 601 emmc_cmd = <&pio40 7 ALT1 BIDIR_PU>; 602 emmc_d0 = <&pio41 0 ALT1 BIDIR_PU>; 603 emmc_d1 = <&pio41 1 ALT1 BIDIR_PU>; 604 emmc_d2 = <&pio41 2 ALT1 BIDIR_PU>; 605 emmc_d3 = <&pio41 3 ALT1 BIDIR_PU>; 606 emmc_d4 = <&pio41 4 ALT1 BIDIR_PU>; 607 emmc_d5 = <&pio41 5 ALT1 BIDIR_PU>; 608 emmc_d6 = <&pio41 6 ALT1 BIDIR_PU>; 609 emmc_d7 = <&pio41 7 ALT1 BIDIR_PU>; 610 }; 611 }; 612 }; 613 }; 614 }; 615}; 616