1/* 2 * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com> 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 file 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 file 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 "armv7-m.dtsi" 44#include <dt-bindings/clock/stm32fx-clock.h> 45#include <dt-bindings/mfd/stm32f7-rcc.h> 46 47/ { 48 #address-cells = <1>; 49 #size-cells = <1>; 50 51 clocks { 52 clk_hse: clk-hse { 53 #clock-cells = <0>; 54 compatible = "fixed-clock"; 55 clock-frequency = <0>; 56 }; 57 58 clk-lse { 59 #clock-cells = <0>; 60 compatible = "fixed-clock"; 61 clock-frequency = <32768>; 62 }; 63 64 clk-lsi { 65 #clock-cells = <0>; 66 compatible = "fixed-clock"; 67 clock-frequency = <32000>; 68 }; 69 70 clk_i2s_ckin: clk-i2s-ckin { 71 #clock-cells = <0>; 72 compatible = "fixed-clock"; 73 clock-frequency = <48000000>; 74 }; 75 }; 76 77 soc { 78 timer2: timer@40000000 { 79 compatible = "st,stm32-timer"; 80 reg = <0x40000000 0x400>; 81 interrupts = <28>; 82 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>; 83 status = "disabled"; 84 }; 85 86 timers2: timers@40000000 { 87 #address-cells = <1>; 88 #size-cells = <0>; 89 compatible = "st,stm32-timers"; 90 reg = <0x40000000 0x400>; 91 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>; 92 clock-names = "int"; 93 status = "disabled"; 94 95 pwm { 96 compatible = "st,stm32-pwm"; 97 #pwm-cells = <3>; 98 status = "disabled"; 99 }; 100 101 timer@1 { 102 compatible = "st,stm32-timer-trigger"; 103 reg = <1>; 104 status = "disabled"; 105 }; 106 }; 107 108 timer3: timer@40000400 { 109 compatible = "st,stm32-timer"; 110 reg = <0x40000400 0x400>; 111 interrupts = <29>; 112 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>; 113 status = "disabled"; 114 }; 115 116 timers3: timers@40000400 { 117 #address-cells = <1>; 118 #size-cells = <0>; 119 compatible = "st,stm32-timers"; 120 reg = <0x40000400 0x400>; 121 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>; 122 clock-names = "int"; 123 status = "disabled"; 124 125 pwm { 126 compatible = "st,stm32-pwm"; 127 #pwm-cells = <3>; 128 status = "disabled"; 129 }; 130 131 timer@2 { 132 compatible = "st,stm32-timer-trigger"; 133 reg = <2>; 134 status = "disabled"; 135 }; 136 }; 137 138 timer4: timer@40000800 { 139 compatible = "st,stm32-timer"; 140 reg = <0x40000800 0x400>; 141 interrupts = <30>; 142 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>; 143 status = "disabled"; 144 }; 145 146 timers4: timers@40000800 { 147 #address-cells = <1>; 148 #size-cells = <0>; 149 compatible = "st,stm32-timers"; 150 reg = <0x40000800 0x400>; 151 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>; 152 clock-names = "int"; 153 status = "disabled"; 154 155 pwm { 156 compatible = "st,stm32-pwm"; 157 #pwm-cells = <3>; 158 status = "disabled"; 159 }; 160 161 timer@3 { 162 compatible = "st,stm32-timer-trigger"; 163 reg = <3>; 164 status = "disabled"; 165 }; 166 }; 167 168 timer5: timer@40000c00 { 169 compatible = "st,stm32-timer"; 170 reg = <0x40000c00 0x400>; 171 interrupts = <50>; 172 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>; 173 }; 174 175 timers5: timers@40000c00 { 176 #address-cells = <1>; 177 #size-cells = <0>; 178 compatible = "st,stm32-timers"; 179 reg = <0x40000C00 0x400>; 180 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>; 181 clock-names = "int"; 182 status = "disabled"; 183 184 pwm { 185 compatible = "st,stm32-pwm"; 186 #pwm-cells = <3>; 187 status = "disabled"; 188 }; 189 190 timer@4 { 191 compatible = "st,stm32-timer-trigger"; 192 reg = <4>; 193 status = "disabled"; 194 }; 195 }; 196 197 timer6: timer@40001000 { 198 compatible = "st,stm32-timer"; 199 reg = <0x40001000 0x400>; 200 interrupts = <54>; 201 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>; 202 status = "disabled"; 203 }; 204 205 timers6: timers@40001000 { 206 #address-cells = <1>; 207 #size-cells = <0>; 208 compatible = "st,stm32-timers"; 209 reg = <0x40001000 0x400>; 210 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>; 211 clock-names = "int"; 212 status = "disabled"; 213 214 timer@5 { 215 compatible = "st,stm32-timer-trigger"; 216 reg = <5>; 217 status = "disabled"; 218 }; 219 }; 220 221 timer7: timer@40001400 { 222 compatible = "st,stm32-timer"; 223 reg = <0x40001400 0x400>; 224 interrupts = <55>; 225 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>; 226 status = "disabled"; 227 }; 228 229 timers7: timers@40001400 { 230 #address-cells = <1>; 231 #size-cells = <0>; 232 compatible = "st,stm32-timers"; 233 reg = <0x40001400 0x400>; 234 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>; 235 clock-names = "int"; 236 status = "disabled"; 237 238 timer@6 { 239 compatible = "st,stm32-timer-trigger"; 240 reg = <6>; 241 status = "disabled"; 242 }; 243 }; 244 245 timers12: timers@40001800 { 246 #address-cells = <1>; 247 #size-cells = <0>; 248 compatible = "st,stm32-timers"; 249 reg = <0x40001800 0x400>; 250 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>; 251 clock-names = "int"; 252 status = "disabled"; 253 254 pwm { 255 compatible = "st,stm32-pwm"; 256 #pwm-cells = <3>; 257 status = "disabled"; 258 }; 259 260 timer@11 { 261 compatible = "st,stm32-timer-trigger"; 262 reg = <11>; 263 status = "disabled"; 264 }; 265 }; 266 267 timers13: timers@40001c00 { 268 #address-cells = <1>; 269 #size-cells = <0>; 270 compatible = "st,stm32-timers"; 271 reg = <0x40001C00 0x400>; 272 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>; 273 clock-names = "int"; 274 status = "disabled"; 275 276 pwm { 277 compatible = "st,stm32-pwm"; 278 #pwm-cells = <3>; 279 status = "disabled"; 280 }; 281 }; 282 283 timers14: timers@40002000 { 284 #address-cells = <1>; 285 #size-cells = <0>; 286 compatible = "st,stm32-timers"; 287 reg = <0x40002000 0x400>; 288 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>; 289 clock-names = "int"; 290 status = "disabled"; 291 292 pwm { 293 compatible = "st,stm32-pwm"; 294 #pwm-cells = <3>; 295 status = "disabled"; 296 }; 297 }; 298 299 rtc: rtc@40002800 { 300 compatible = "st,stm32-rtc"; 301 reg = <0x40002800 0x400>; 302 clocks = <&rcc 1 CLK_RTC>; 303 assigned-clocks = <&rcc 1 CLK_RTC>; 304 assigned-clock-parents = <&rcc 1 CLK_LSE>; 305 interrupt-parent = <&exti>; 306 interrupts = <17 1>; 307 st,syscfg = <&pwrcfg 0x00 0x100>; 308 status = "disabled"; 309 }; 310 311 usart2: serial@40004400 { 312 compatible = "st,stm32f7-uart"; 313 reg = <0x40004400 0x400>; 314 interrupts = <38>; 315 clocks = <&rcc 1 CLK_USART2>; 316 status = "disabled"; 317 }; 318 319 usart3: serial@40004800 { 320 compatible = "st,stm32f7-uart"; 321 reg = <0x40004800 0x400>; 322 interrupts = <39>; 323 clocks = <&rcc 1 CLK_USART3>; 324 status = "disabled"; 325 }; 326 327 usart4: serial@40004c00 { 328 compatible = "st,stm32f7-uart"; 329 reg = <0x40004c00 0x400>; 330 interrupts = <52>; 331 clocks = <&rcc 1 CLK_UART4>; 332 status = "disabled"; 333 }; 334 335 usart5: serial@40005000 { 336 compatible = "st,stm32f7-uart"; 337 reg = <0x40005000 0x400>; 338 interrupts = <53>; 339 clocks = <&rcc 1 CLK_UART5>; 340 status = "disabled"; 341 }; 342 343 i2c1: i2c@40005400 { 344 compatible = "st,stm32f7-i2c"; 345 reg = <0x40005400 0x400>; 346 interrupts = <31>, 347 <32>; 348 resets = <&rcc STM32F7_APB1_RESET(I2C1)>; 349 clocks = <&rcc 1 CLK_I2C1>; 350 #address-cells = <1>; 351 #size-cells = <0>; 352 status = "disabled"; 353 }; 354 355 i2c2: i2c@40005800 { 356 compatible = "st,stm32f7-i2c"; 357 reg = <0x40005800 0x400>; 358 interrupts = <33>, 359 <34>; 360 resets = <&rcc STM32F7_APB1_RESET(I2C2)>; 361 clocks = <&rcc 1 CLK_I2C2>; 362 #address-cells = <1>; 363 #size-cells = <0>; 364 status = "disabled"; 365 }; 366 367 i2c3: i2c@40005C00 { 368 compatible = "st,stm32f7-i2c"; 369 reg = <0x40005C00 0x400>; 370 interrupts = <72>, 371 <73>; 372 resets = <&rcc STM32F7_APB1_RESET(I2C3)>; 373 clocks = <&rcc 1 CLK_I2C3>; 374 #address-cells = <1>; 375 #size-cells = <0>; 376 status = "disabled"; 377 }; 378 379 i2c4: i2c@40006000 { 380 compatible = "st,stm32f7-i2c"; 381 reg = <0x40006000 0x400>; 382 interrupts = <95>, 383 <96>; 384 resets = <&rcc STM32F7_APB1_RESET(I2C4)>; 385 clocks = <&rcc 1 CLK_I2C4>; 386 #address-cells = <1>; 387 #size-cells = <0>; 388 status = "disabled"; 389 }; 390 391 cec: cec@40006c00 { 392 compatible = "st,stm32-cec"; 393 reg = <0x40006C00 0x400>; 394 interrupts = <94>; 395 clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>; 396 clock-names = "cec", "hdmi-cec"; 397 status = "disabled"; 398 }; 399 400 usart7: serial@40007800 { 401 compatible = "st,stm32f7-uart"; 402 reg = <0x40007800 0x400>; 403 interrupts = <82>; 404 clocks = <&rcc 1 CLK_UART7>; 405 status = "disabled"; 406 }; 407 408 usart8: serial@40007c00 { 409 compatible = "st,stm32f7-uart"; 410 reg = <0x40007c00 0x400>; 411 interrupts = <83>; 412 clocks = <&rcc 1 CLK_UART8>; 413 status = "disabled"; 414 }; 415 416 timers1: timers@40010000 { 417 #address-cells = <1>; 418 #size-cells = <0>; 419 compatible = "st,stm32-timers"; 420 reg = <0x40010000 0x400>; 421 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>; 422 clock-names = "int"; 423 status = "disabled"; 424 425 pwm { 426 compatible = "st,stm32-pwm"; 427 #pwm-cells = <3>; 428 status = "disabled"; 429 }; 430 431 timer@0 { 432 compatible = "st,stm32-timer-trigger"; 433 reg = <0>; 434 status = "disabled"; 435 }; 436 }; 437 438 timers8: timers@40010400 { 439 #address-cells = <1>; 440 #size-cells = <0>; 441 compatible = "st,stm32-timers"; 442 reg = <0x40010400 0x400>; 443 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>; 444 clock-names = "int"; 445 status = "disabled"; 446 447 pwm { 448 compatible = "st,stm32-pwm"; 449 #pwm-cells = <3>; 450 status = "disabled"; 451 }; 452 453 timer@7 { 454 compatible = "st,stm32-timer-trigger"; 455 reg = <7>; 456 status = "disabled"; 457 }; 458 }; 459 460 usart1: serial@40011000 { 461 compatible = "st,stm32f7-uart"; 462 reg = <0x40011000 0x400>; 463 interrupts = <37>; 464 clocks = <&rcc 1 CLK_USART1>; 465 status = "disabled"; 466 }; 467 468 usart6: serial@40011400 { 469 compatible = "st,stm32f7-uart"; 470 reg = <0x40011400 0x400>; 471 interrupts = <71>; 472 clocks = <&rcc 1 CLK_USART6>; 473 status = "disabled"; 474 }; 475 476 sdio2: sdio2@40011c00 { 477 compatible = "arm,pl180", "arm,primecell"; 478 arm,primecell-periphid = <0x00880180>; 479 reg = <0x40011c00 0x400>; 480 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>; 481 clock-names = "apb_pclk"; 482 interrupts = <103>; 483 max-frequency = <48000000>; 484 status = "disabled"; 485 }; 486 487 sdio1: sdio1@40012c00 { 488 compatible = "arm,pl180", "arm,primecell"; 489 arm,primecell-periphid = <0x00880180>; 490 reg = <0x40012c00 0x400>; 491 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>; 492 clock-names = "apb_pclk"; 493 interrupts = <49>; 494 max-frequency = <48000000>; 495 status = "disabled"; 496 }; 497 498 syscfg: syscon@40013800 { 499 compatible = "st,stm32-syscfg", "syscon"; 500 reg = <0x40013800 0x400>; 501 }; 502 503 exti: interrupt-controller@40013c00 { 504 compatible = "st,stm32-exti"; 505 interrupt-controller; 506 #interrupt-cells = <2>; 507 reg = <0x40013C00 0x400>; 508 interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>; 509 }; 510 511 timers9: timers@40014000 { 512 #address-cells = <1>; 513 #size-cells = <0>; 514 compatible = "st,stm32-timers"; 515 reg = <0x40014000 0x400>; 516 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>; 517 clock-names = "int"; 518 status = "disabled"; 519 520 pwm { 521 compatible = "st,stm32-pwm"; 522 #pwm-cells = <3>; 523 status = "disabled"; 524 }; 525 526 timer@8 { 527 compatible = "st,stm32-timer-trigger"; 528 reg = <8>; 529 status = "disabled"; 530 }; 531 }; 532 533 timers10: timers@40014400 { 534 #address-cells = <1>; 535 #size-cells = <0>; 536 compatible = "st,stm32-timers"; 537 reg = <0x40014400 0x400>; 538 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>; 539 clock-names = "int"; 540 status = "disabled"; 541 542 pwm { 543 compatible = "st,stm32-pwm"; 544 #pwm-cells = <3>; 545 status = "disabled"; 546 }; 547 }; 548 549 timers11: timers@40014800 { 550 #address-cells = <1>; 551 #size-cells = <0>; 552 compatible = "st,stm32-timers"; 553 reg = <0x40014800 0x400>; 554 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>; 555 clock-names = "int"; 556 status = "disabled"; 557 558 pwm { 559 compatible = "st,stm32-pwm"; 560 #pwm-cells = <3>; 561 status = "disabled"; 562 }; 563 }; 564 565 pwrcfg: power-config@40007000 { 566 compatible = "st,stm32-power-config", "syscon"; 567 reg = <0x40007000 0x400>; 568 }; 569 570 crc: crc@40023000 { 571 compatible = "st,stm32f7-crc"; 572 reg = <0x40023000 0x400>; 573 clocks = <&rcc 0 12>; 574 status = "disabled"; 575 }; 576 577 rcc: rcc@40023800 { 578 #reset-cells = <1>; 579 #clock-cells = <2>; 580 compatible = "st,stm32f746-rcc", "st,stm32-rcc"; 581 reg = <0x40023800 0x400>; 582 clocks = <&clk_hse>, <&clk_i2s_ckin>; 583 st,syscfg = <&pwrcfg>; 584 assigned-clocks = <&rcc 1 CLK_HSE_RTC>; 585 assigned-clock-rates = <1000000>; 586 }; 587 588 dma1: dma-controller@40026000 { 589 compatible = "st,stm32-dma"; 590 reg = <0x40026000 0x400>; 591 interrupts = <11>, 592 <12>, 593 <13>, 594 <14>, 595 <15>, 596 <16>, 597 <17>, 598 <47>; 599 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>; 600 #dma-cells = <4>; 601 status = "disabled"; 602 }; 603 604 dma2: dma-controller@40026400 { 605 compatible = "st,stm32-dma"; 606 reg = <0x40026400 0x400>; 607 interrupts = <56>, 608 <57>, 609 <58>, 610 <59>, 611 <60>, 612 <68>, 613 <69>, 614 <70>; 615 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>; 616 #dma-cells = <4>; 617 st,mem2mem; 618 status = "disabled"; 619 }; 620 621 usbotg_hs: usb@40040000 { 622 compatible = "st,stm32f7-hsotg"; 623 reg = <0x40040000 0x40000>; 624 interrupts = <77>; 625 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>; 626 clock-names = "otg"; 627 g-rx-fifo-size = <256>; 628 g-np-tx-fifo-size = <32>; 629 g-tx-fifo-size = <128 128 64 64 64 64 32 32>; 630 status = "disabled"; 631 }; 632 633 usbotg_fs: usb@50000000 { 634 compatible = "st,stm32f4x9-fsotg"; 635 reg = <0x50000000 0x40000>; 636 interrupts = <67>; 637 clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>; 638 clock-names = "otg"; 639 status = "disabled"; 640 }; 641 }; 642}; 643 644&systick { 645 clocks = <&rcc 1 0>; 646 status = "okay"; 647}; 648