Home | History | Annotate | Line # | Download | only in dts
      1 /*
      2  * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32 (at) 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 			compatible = "st,stm32-timers";
    269 			reg = <0x40001C00 0x400>;
    270 			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
    271 			clock-names = "int";
    272 			status = "disabled";
    273 
    274 			pwm {
    275 				compatible = "st,stm32-pwm";
    276 				#pwm-cells = <3>;
    277 				status = "disabled";
    278 			};
    279 		};
    280 
    281 		timers14: timers@40002000 {
    282 			compatible = "st,stm32-timers";
    283 			reg = <0x40002000 0x400>;
    284 			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
    285 			clock-names = "int";
    286 			status = "disabled";
    287 
    288 			pwm {
    289 				compatible = "st,stm32-pwm";
    290 				#pwm-cells = <3>;
    291 				status = "disabled";
    292 			};
    293 		};
    294 
    295 		rtc: rtc@40002800 {
    296 			compatible = "st,stm32-rtc";
    297 			reg = <0x40002800 0x400>;
    298 			clocks = <&rcc 1 CLK_RTC>;
    299 			assigned-clocks = <&rcc 1 CLK_RTC>;
    300 			assigned-clock-parents = <&rcc 1 CLK_LSE>;
    301 			interrupt-parent = <&exti>;
    302 			interrupts = <17 1>;
    303 			st,syscfg = <&pwrcfg 0x00 0x100>;
    304 			status = "disabled";
    305 		};
    306 
    307 		usart2: serial@40004400 {
    308 			compatible = "st,stm32f7-uart";
    309 			reg = <0x40004400 0x400>;
    310 			interrupts = <38>;
    311 			clocks = <&rcc 1 CLK_USART2>;
    312 			status = "disabled";
    313 		};
    314 
    315 		usart3: serial@40004800 {
    316 			compatible = "st,stm32f7-uart";
    317 			reg = <0x40004800 0x400>;
    318 			interrupts = <39>;
    319 			clocks = <&rcc 1 CLK_USART3>;
    320 			status = "disabled";
    321 		};
    322 
    323 		usart4: serial@40004c00 {
    324 			compatible = "st,stm32f7-uart";
    325 			reg = <0x40004c00 0x400>;
    326 			interrupts = <52>;
    327 			clocks = <&rcc 1 CLK_UART4>;
    328 			status = "disabled";
    329 		};
    330 
    331 		usart5: serial@40005000 {
    332 			compatible = "st,stm32f7-uart";
    333 			reg = <0x40005000 0x400>;
    334 			interrupts = <53>;
    335 			clocks = <&rcc 1 CLK_UART5>;
    336 			status = "disabled";
    337 		};
    338 
    339 		i2c1: i2c@40005400 {
    340 			compatible = "st,stm32f7-i2c";
    341 			reg = <0x40005400 0x400>;
    342 			interrupts = <31>,
    343 				     <32>;
    344 			resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
    345 			clocks = <&rcc 1 CLK_I2C1>;
    346 			#address-cells = <1>;
    347 			#size-cells = <0>;
    348 			status = "disabled";
    349 		};
    350 
    351 		i2c2: i2c@40005800 {
    352 			compatible = "st,stm32f7-i2c";
    353 			reg = <0x40005800 0x400>;
    354 			interrupts = <33>,
    355 				     <34>;
    356 			resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
    357 			clocks = <&rcc 1 CLK_I2C2>;
    358 			#address-cells = <1>;
    359 			#size-cells = <0>;
    360 			status = "disabled";
    361 		};
    362 
    363 		i2c3: i2c@40005c00 {
    364 			compatible = "st,stm32f7-i2c";
    365 			reg = <0x40005c00 0x400>;
    366 			interrupts = <72>,
    367 				     <73>;
    368 			resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
    369 			clocks = <&rcc 1 CLK_I2C3>;
    370 			#address-cells = <1>;
    371 			#size-cells = <0>;
    372 			status = "disabled";
    373 		};
    374 
    375 		i2c4: i2c@40006000 {
    376 			compatible = "st,stm32f7-i2c";
    377 			reg = <0x40006000 0x400>;
    378 			interrupts = <95>,
    379 				     <96>;
    380 			resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
    381 			clocks = <&rcc 1 CLK_I2C4>;
    382 			#address-cells = <1>;
    383 			#size-cells = <0>;
    384 			status = "disabled";
    385 		};
    386 
    387 		cec: cec@40006c00 {
    388 			compatible = "st,stm32-cec";
    389 			reg = <0x40006C00 0x400>;
    390 			interrupts = <94>;
    391 			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
    392 			clock-names = "cec", "hdmi-cec";
    393 			status = "disabled";
    394 		};
    395 
    396 		usart7: serial@40007800 {
    397 			compatible = "st,stm32f7-uart";
    398 			reg = <0x40007800 0x400>;
    399 			interrupts = <82>;
    400 			clocks = <&rcc 1 CLK_UART7>;
    401 			status = "disabled";
    402 		};
    403 
    404 		usart8: serial@40007c00 {
    405 			compatible = "st,stm32f7-uart";
    406 			reg = <0x40007c00 0x400>;
    407 			interrupts = <83>;
    408 			clocks = <&rcc 1 CLK_UART8>;
    409 			status = "disabled";
    410 		};
    411 
    412 		timers1: timers@40010000 {
    413 			#address-cells = <1>;
    414 			#size-cells = <0>;
    415 			compatible = "st,stm32-timers";
    416 			reg = <0x40010000 0x400>;
    417 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
    418 			clock-names = "int";
    419 			status = "disabled";
    420 
    421 			pwm {
    422 				compatible = "st,stm32-pwm";
    423 				#pwm-cells = <3>;
    424 				status = "disabled";
    425 			};
    426 
    427 			timer@0 {
    428 				compatible = "st,stm32-timer-trigger";
    429 				reg = <0>;
    430 				status = "disabled";
    431 			};
    432 		};
    433 
    434 		timers8: timers@40010400 {
    435 			#address-cells = <1>;
    436 			#size-cells = <0>;
    437 			compatible = "st,stm32-timers";
    438 			reg = <0x40010400 0x400>;
    439 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
    440 			clock-names = "int";
    441 			status = "disabled";
    442 
    443 			pwm {
    444 				compatible = "st,stm32-pwm";
    445 				#pwm-cells = <3>;
    446 				status = "disabled";
    447 			};
    448 
    449 			timer@7 {
    450 				compatible = "st,stm32-timer-trigger";
    451 				reg = <7>;
    452 				status = "disabled";
    453 			};
    454 		};
    455 
    456 		usart1: serial@40011000 {
    457 			compatible = "st,stm32f7-uart";
    458 			reg = <0x40011000 0x400>;
    459 			interrupts = <37>;
    460 			clocks = <&rcc 1 CLK_USART1>;
    461 			status = "disabled";
    462 		};
    463 
    464 		usart6: serial@40011400 {
    465 			compatible = "st,stm32f7-uart";
    466 			reg = <0x40011400 0x400>;
    467 			interrupts = <71>;
    468 			clocks = <&rcc 1 CLK_USART6>;
    469 			status = "disabled";
    470 		};
    471 
    472 		sdio2: mmc@40011c00 {
    473 			compatible = "arm,pl180", "arm,primecell";
    474 			arm,primecell-periphid = <0x00880180>;
    475 			reg = <0x40011c00 0x400>;
    476 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
    477 			clock-names = "apb_pclk";
    478 			interrupts = <103>;
    479 			max-frequency = <48000000>;
    480 			status = "disabled";
    481 		};
    482 
    483 		sdio1: mmc@40012c00 {
    484 			compatible = "arm,pl180", "arm,primecell";
    485 			arm,primecell-periphid = <0x00880180>;
    486 			reg = <0x40012c00 0x400>;
    487 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
    488 			clock-names = "apb_pclk";
    489 			interrupts = <49>;
    490 			max-frequency = <48000000>;
    491 			status = "disabled";
    492 		};
    493 
    494 		syscfg: syscon@40013800 {
    495 			compatible = "st,stm32-syscfg", "syscon";
    496 			reg = <0x40013800 0x400>;
    497 		};
    498 
    499 		exti: interrupt-controller@40013c00 {
    500 			compatible = "st,stm32-exti";
    501 			interrupt-controller;
    502 			#interrupt-cells = <2>;
    503 			reg = <0x40013C00 0x400>;
    504 			interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
    505 		};
    506 
    507 		timers9: timers@40014000 {
    508 			#address-cells = <1>;
    509 			#size-cells = <0>;
    510 			compatible = "st,stm32-timers";
    511 			reg = <0x40014000 0x400>;
    512 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
    513 			clock-names = "int";
    514 			status = "disabled";
    515 
    516 			pwm {
    517 				compatible = "st,stm32-pwm";
    518 				#pwm-cells = <3>;
    519 				status = "disabled";
    520 			};
    521 
    522 			timer@8 {
    523 				compatible = "st,stm32-timer-trigger";
    524 				reg = <8>;
    525 				status = "disabled";
    526 			};
    527 		};
    528 
    529 		timers10: timers@40014400 {
    530 			compatible = "st,stm32-timers";
    531 			reg = <0x40014400 0x400>;
    532 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
    533 			clock-names = "int";
    534 			status = "disabled";
    535 
    536 			pwm {
    537 				compatible = "st,stm32-pwm";
    538 				#pwm-cells = <3>;
    539 				status = "disabled";
    540 			};
    541 		};
    542 
    543 		timers11: timers@40014800 {
    544 			compatible = "st,stm32-timers";
    545 			reg = <0x40014800 0x400>;
    546 			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
    547 			clock-names = "int";
    548 			status = "disabled";
    549 
    550 			pwm {
    551 				compatible = "st,stm32-pwm";
    552 				#pwm-cells = <3>;
    553 				status = "disabled";
    554 			};
    555 		};
    556 
    557 		pwrcfg: power-config@40007000 {
    558 			compatible = "st,stm32-power-config", "syscon";
    559 			reg = <0x40007000 0x400>;
    560 		};
    561 
    562 		crc: crc@40023000 {
    563 			compatible = "st,stm32f7-crc";
    564 			reg = <0x40023000 0x400>;
    565 			clocks = <&rcc 0 12>;
    566 			status = "disabled";
    567 		};
    568 
    569 		rcc: rcc@40023800 {
    570 			#reset-cells = <1>;
    571 			#clock-cells = <2>;
    572 			compatible = "st,stm32f746-rcc", "st,stm32-rcc";
    573 			reg = <0x40023800 0x400>;
    574 			clocks = <&clk_hse>, <&clk_i2s_ckin>;
    575 			st,syscfg = <&pwrcfg>;
    576 			assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
    577 			assigned-clock-rates = <1000000>;
    578 		};
    579 
    580 		dma1: dma-controller@40026000 {
    581 			compatible = "st,stm32-dma";
    582 			reg = <0x40026000 0x400>;
    583 			interrupts = <11>,
    584 				     <12>,
    585 				     <13>,
    586 				     <14>,
    587 				     <15>,
    588 				     <16>,
    589 				     <17>,
    590 				     <47>;
    591 			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
    592 			#dma-cells = <4>;
    593 			status = "disabled";
    594 		};
    595 
    596 		dma2: dma-controller@40026400 {
    597 			compatible = "st,stm32-dma";
    598 			reg = <0x40026400 0x400>;
    599 			interrupts = <56>,
    600 				     <57>,
    601 				     <58>,
    602 				     <59>,
    603 				     <60>,
    604 				     <68>,
    605 				     <69>,
    606 				     <70>;
    607 			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
    608 			#dma-cells = <4>;
    609 			st,mem2mem;
    610 			status = "disabled";
    611 		};
    612 
    613 		usbotg_hs: usb@40040000 {
    614 			compatible = "st,stm32f7-hsotg";
    615 			reg = <0x40040000 0x40000>;
    616 			interrupts = <77>;
    617 			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
    618 			clock-names = "otg";
    619 			g-rx-fifo-size = <256>;
    620 			g-np-tx-fifo-size = <32>;
    621 			g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
    622 			status = "disabled";
    623 		};
    624 
    625 		usbotg_fs: usb@50000000 {
    626 			compatible = "st,stm32f4x9-fsotg";
    627 			reg = <0x50000000 0x40000>;
    628 			interrupts = <67>;
    629 			clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;
    630 			clock-names = "otg";
    631 			status = "disabled";
    632 		};
    633 	};
    634 };
    635 
    636 &systick {
    637 	clocks = <&rcc 1 0>;
    638 	status = "okay";
    639 };
    640