Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
0003  *
0004  * This file is dual-licensed: you can use it either under the terms
0005  * of the GPL or the X11 license, at your option. Note that this dual
0006  * licensing only applies to this file, and not this project as a
0007  * whole.
0008  *
0009  *  a) This file is free software; you can redistribute it and/or
0010  *     modify it under the terms of the GNU General Public License as
0011  *     published by the Free Software Foundation; either version 2 of the
0012  *     License, or (at your option) any later version.
0013  *
0014  *     This file is distributed in the hope that it will be useful,
0015  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
0016  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017  *     GNU General Public License for more details.
0018  *
0019  * Or, alternatively,
0020  *
0021  *  b) Permission is hereby granted, free of charge, to any person
0022  *     obtaining a copy of this software and associated documentation
0023  *     files (the "Software"), to deal in the Software without
0024  *     restriction, including without limitation the rights to use,
0025  *     copy, modify, merge, publish, distribute, sublicense, and/or
0026  *     sell copies of the Software, and to permit persons to whom the
0027  *     Software is furnished to do so, subject to the following
0028  *     conditions:
0029  *
0030  *     The above copyright notice and this permission notice shall be
0031  *     included in all copies or substantial portions of the Software.
0032  *
0033  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
0034  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0035  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0036  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0037  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0038  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0039  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0040  *     OTHER DEALINGS IN THE SOFTWARE.
0041  */
0042 
0043 #include "armv7-m.dtsi"
0044 #include <dt-bindings/clock/stm32fx-clock.h>
0045 #include <dt-bindings/mfd/stm32f7-rcc.h>
0046 
0047 / {
0048         #address-cells = <1>;
0049         #size-cells = <1>;
0050 
0051         clocks {
0052                 clk_hse: clk-hse {
0053                         #clock-cells = <0>;
0054                         compatible = "fixed-clock";
0055                         clock-frequency = <0>;
0056                 };
0057 
0058                 clk-lse {
0059                         #clock-cells = <0>;
0060                         compatible = "fixed-clock";
0061                         clock-frequency = <32768>;
0062                 };
0063 
0064                 clk-lsi {
0065                         #clock-cells = <0>;
0066                         compatible = "fixed-clock";
0067                         clock-frequency = <32000>;
0068                 };
0069 
0070                 clk_i2s_ckin: clk-i2s-ckin {
0071                         #clock-cells = <0>;
0072                         compatible = "fixed-clock";
0073                         clock-frequency = <48000000>;
0074                 };
0075         };
0076 
0077         soc {
0078                 timers2: timers@40000000 {
0079                         #address-cells = <1>;
0080                         #size-cells = <0>;
0081                         compatible = "st,stm32-timers";
0082                         reg = <0x40000000 0x400>;
0083                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
0084                         clock-names = "int";
0085                         status = "disabled";
0086 
0087                         pwm {
0088                                 compatible = "st,stm32-pwm";
0089                                 #pwm-cells = <3>;
0090                                 status = "disabled";
0091                         };
0092 
0093                         timer@1 {
0094                                 compatible = "st,stm32-timer-trigger";
0095                                 reg = <1>;
0096                                 status = "disabled";
0097                         };
0098                 };
0099 
0100                 timers3: timers@40000400 {
0101                         #address-cells = <1>;
0102                         #size-cells = <0>;
0103                         compatible = "st,stm32-timers";
0104                         reg = <0x40000400 0x400>;
0105                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
0106                         clock-names = "int";
0107                         status = "disabled";
0108 
0109                         pwm {
0110                                 compatible = "st,stm32-pwm";
0111                                 #pwm-cells = <3>;
0112                                 status = "disabled";
0113                         };
0114 
0115                         timer@2 {
0116                                 compatible = "st,stm32-timer-trigger";
0117                                 reg = <2>;
0118                                 status = "disabled";
0119                         };
0120                 };
0121 
0122                 timers4: timers@40000800 {
0123                         #address-cells = <1>;
0124                         #size-cells = <0>;
0125                         compatible = "st,stm32-timers";
0126                         reg = <0x40000800 0x400>;
0127                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
0128                         clock-names = "int";
0129                         status = "disabled";
0130 
0131                         pwm {
0132                                 compatible = "st,stm32-pwm";
0133                                 #pwm-cells = <3>;
0134                                 status = "disabled";
0135                         };
0136 
0137                         timer@3 {
0138                                 compatible = "st,stm32-timer-trigger";
0139                                 reg = <3>;
0140                                 status = "disabled";
0141                         };
0142                 };
0143 
0144                 timers5: timers@40000c00 {
0145                         #address-cells = <1>;
0146                         #size-cells = <0>;
0147                         compatible = "st,stm32-timers";
0148                         reg = <0x40000C00 0x400>;
0149                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
0150                         clock-names = "int";
0151                         status = "disabled";
0152 
0153                         pwm {
0154                                 compatible = "st,stm32-pwm";
0155                                 #pwm-cells = <3>;
0156                                 status = "disabled";
0157                         };
0158 
0159                         timer@4 {
0160                                 compatible = "st,stm32-timer-trigger";
0161                                 reg = <4>;
0162                                 status = "disabled";
0163                         };
0164                 };
0165 
0166                 timers6: timers@40001000 {
0167                         #address-cells = <1>;
0168                         #size-cells = <0>;
0169                         compatible = "st,stm32-timers";
0170                         reg = <0x40001000 0x400>;
0171                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
0172                         clock-names = "int";
0173                         status = "disabled";
0174 
0175                         timer@5 {
0176                                 compatible = "st,stm32-timer-trigger";
0177                                 reg = <5>;
0178                                 status = "disabled";
0179                         };
0180                 };
0181 
0182                 timers7: timers@40001400 {
0183                         #address-cells = <1>;
0184                         #size-cells = <0>;
0185                         compatible = "st,stm32-timers";
0186                         reg = <0x40001400 0x400>;
0187                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
0188                         clock-names = "int";
0189                         status = "disabled";
0190 
0191                         timer@6 {
0192                                 compatible = "st,stm32-timer-trigger";
0193                                 reg = <6>;
0194                                 status = "disabled";
0195                         };
0196                 };
0197 
0198                 timers12: timers@40001800 {
0199                         #address-cells = <1>;
0200                         #size-cells = <0>;
0201                         compatible = "st,stm32-timers";
0202                         reg = <0x40001800 0x400>;
0203                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>;
0204                         clock-names = "int";
0205                         status = "disabled";
0206 
0207                         pwm {
0208                                 compatible = "st,stm32-pwm";
0209                                 #pwm-cells = <3>;
0210                                 status = "disabled";
0211                         };
0212 
0213                         timer@11 {
0214                                 compatible = "st,stm32-timer-trigger";
0215                                 reg = <11>;
0216                                 status = "disabled";
0217                         };
0218                 };
0219 
0220                 timers13: timers@40001c00 {
0221                         compatible = "st,stm32-timers";
0222                         reg = <0x40001C00 0x400>;
0223                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
0224                         clock-names = "int";
0225                         status = "disabled";
0226 
0227                         pwm {
0228                                 compatible = "st,stm32-pwm";
0229                                 #pwm-cells = <3>;
0230                                 status = "disabled";
0231                         };
0232                 };
0233 
0234                 timers14: timers@40002000 {
0235                         compatible = "st,stm32-timers";
0236                         reg = <0x40002000 0x400>;
0237                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
0238                         clock-names = "int";
0239                         status = "disabled";
0240 
0241                         pwm {
0242                                 compatible = "st,stm32-pwm";
0243                                 #pwm-cells = <3>;
0244                                 status = "disabled";
0245                         };
0246                 };
0247 
0248                 rtc: rtc@40002800 {
0249                         compatible = "st,stm32-rtc";
0250                         reg = <0x40002800 0x400>;
0251                         clocks = <&rcc 1 CLK_RTC>;
0252                         assigned-clocks = <&rcc 1 CLK_RTC>;
0253                         assigned-clock-parents = <&rcc 1 CLK_LSE>;
0254                         interrupt-parent = <&exti>;
0255                         interrupts = <17 1>;
0256                         st,syscfg = <&pwrcfg 0x00 0x100>;
0257                         status = "disabled";
0258                 };
0259 
0260                 usart2: serial@40004400 {
0261                         compatible = "st,stm32f7-uart";
0262                         reg = <0x40004400 0x400>;
0263                         interrupts = <38>;
0264                         clocks = <&rcc 1 CLK_USART2>;
0265                         status = "disabled";
0266                 };
0267 
0268                 usart3: serial@40004800 {
0269                         compatible = "st,stm32f7-uart";
0270                         reg = <0x40004800 0x400>;
0271                         interrupts = <39>;
0272                         clocks = <&rcc 1 CLK_USART3>;
0273                         status = "disabled";
0274                 };
0275 
0276                 usart4: serial@40004c00 {
0277                         compatible = "st,stm32f7-uart";
0278                         reg = <0x40004c00 0x400>;
0279                         interrupts = <52>;
0280                         clocks = <&rcc 1 CLK_UART4>;
0281                         status = "disabled";
0282                 };
0283 
0284                 usart5: serial@40005000 {
0285                         compatible = "st,stm32f7-uart";
0286                         reg = <0x40005000 0x400>;
0287                         interrupts = <53>;
0288                         clocks = <&rcc 1 CLK_UART5>;
0289                         status = "disabled";
0290                 };
0291 
0292                 i2c1: i2c@40005400 {
0293                         compatible = "st,stm32f7-i2c";
0294                         reg = <0x40005400 0x400>;
0295                         interrupts = <31>,
0296                                      <32>;
0297                         resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
0298                         clocks = <&rcc 1 CLK_I2C1>;
0299                         #address-cells = <1>;
0300                         #size-cells = <0>;
0301                         status = "disabled";
0302                 };
0303 
0304                 i2c2: i2c@40005800 {
0305                         compatible = "st,stm32f7-i2c";
0306                         reg = <0x40005800 0x400>;
0307                         interrupts = <33>,
0308                                      <34>;
0309                         resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
0310                         clocks = <&rcc 1 CLK_I2C2>;
0311                         #address-cells = <1>;
0312                         #size-cells = <0>;
0313                         status = "disabled";
0314                 };
0315 
0316                 i2c3: i2c@40005c00 {
0317                         compatible = "st,stm32f7-i2c";
0318                         reg = <0x40005c00 0x400>;
0319                         interrupts = <72>,
0320                                      <73>;
0321                         resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
0322                         clocks = <&rcc 1 CLK_I2C3>;
0323                         #address-cells = <1>;
0324                         #size-cells = <0>;
0325                         status = "disabled";
0326                 };
0327 
0328                 i2c4: i2c@40006000 {
0329                         compatible = "st,stm32f7-i2c";
0330                         reg = <0x40006000 0x400>;
0331                         interrupts = <95>,
0332                                      <96>;
0333                         resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
0334                         clocks = <&rcc 1 CLK_I2C4>;
0335                         #address-cells = <1>;
0336                         #size-cells = <0>;
0337                         status = "disabled";
0338                 };
0339 
0340                 cec: cec@40006c00 {
0341                         compatible = "st,stm32-cec";
0342                         reg = <0x40006C00 0x400>;
0343                         interrupts = <94>;
0344                         clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
0345                         clock-names = "cec", "hdmi-cec";
0346                         status = "disabled";
0347                 };
0348 
0349                 usart7: serial@40007800 {
0350                         compatible = "st,stm32f7-uart";
0351                         reg = <0x40007800 0x400>;
0352                         interrupts = <82>;
0353                         clocks = <&rcc 1 CLK_UART7>;
0354                         status = "disabled";
0355                 };
0356 
0357                 usart8: serial@40007c00 {
0358                         compatible = "st,stm32f7-uart";
0359                         reg = <0x40007c00 0x400>;
0360                         interrupts = <83>;
0361                         clocks = <&rcc 1 CLK_UART8>;
0362                         status = "disabled";
0363                 };
0364 
0365                 timers1: timers@40010000 {
0366                         #address-cells = <1>;
0367                         #size-cells = <0>;
0368                         compatible = "st,stm32-timers";
0369                         reg = <0x40010000 0x400>;
0370                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
0371                         clock-names = "int";
0372                         status = "disabled";
0373 
0374                         pwm {
0375                                 compatible = "st,stm32-pwm";
0376                                 #pwm-cells = <3>;
0377                                 status = "disabled";
0378                         };
0379 
0380                         timer@0 {
0381                                 compatible = "st,stm32-timer-trigger";
0382                                 reg = <0>;
0383                                 status = "disabled";
0384                         };
0385                 };
0386 
0387                 timers8: timers@40010400 {
0388                         #address-cells = <1>;
0389                         #size-cells = <0>;
0390                         compatible = "st,stm32-timers";
0391                         reg = <0x40010400 0x400>;
0392                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
0393                         clock-names = "int";
0394                         status = "disabled";
0395 
0396                         pwm {
0397                                 compatible = "st,stm32-pwm";
0398                                 #pwm-cells = <3>;
0399                                 status = "disabled";
0400                         };
0401 
0402                         timer@7 {
0403                                 compatible = "st,stm32-timer-trigger";
0404                                 reg = <7>;
0405                                 status = "disabled";
0406                         };
0407                 };
0408 
0409                 usart1: serial@40011000 {
0410                         compatible = "st,stm32f7-uart";
0411                         reg = <0x40011000 0x400>;
0412                         interrupts = <37>;
0413                         clocks = <&rcc 1 CLK_USART1>;
0414                         status = "disabled";
0415                 };
0416 
0417                 usart6: serial@40011400 {
0418                         compatible = "st,stm32f7-uart";
0419                         reg = <0x40011400 0x400>;
0420                         interrupts = <71>;
0421                         clocks = <&rcc 1 CLK_USART6>;
0422                         status = "disabled";
0423                 };
0424 
0425                 sdio2: mmc@40011c00 {
0426                         compatible = "arm,pl180", "arm,primecell";
0427                         arm,primecell-periphid = <0x00880180>;
0428                         reg = <0x40011c00 0x400>;
0429                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
0430                         clock-names = "apb_pclk";
0431                         interrupts = <103>;
0432                         max-frequency = <48000000>;
0433                         status = "disabled";
0434                 };
0435 
0436                 sdio1: mmc@40012c00 {
0437                         compatible = "arm,pl180", "arm,primecell";
0438                         arm,primecell-periphid = <0x00880180>;
0439                         reg = <0x40012c00 0x400>;
0440                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
0441                         clock-names = "apb_pclk";
0442                         interrupts = <49>;
0443                         max-frequency = <48000000>;
0444                         status = "disabled";
0445                 };
0446 
0447                 syscfg: syscon@40013800 {
0448                         compatible = "st,stm32-syscfg", "syscon";
0449                         reg = <0x40013800 0x400>;
0450                 };
0451 
0452                 exti: interrupt-controller@40013c00 {
0453                         compatible = "st,stm32-exti";
0454                         interrupt-controller;
0455                         #interrupt-cells = <2>;
0456                         reg = <0x40013C00 0x400>;
0457                         interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
0458                 };
0459 
0460                 timers9: timers@40014000 {
0461                         #address-cells = <1>;
0462                         #size-cells = <0>;
0463                         compatible = "st,stm32-timers";
0464                         reg = <0x40014000 0x400>;
0465                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
0466                         clock-names = "int";
0467                         status = "disabled";
0468 
0469                         pwm {
0470                                 compatible = "st,stm32-pwm";
0471                                 #pwm-cells = <3>;
0472                                 status = "disabled";
0473                         };
0474 
0475                         timer@8 {
0476                                 compatible = "st,stm32-timer-trigger";
0477                                 reg = <8>;
0478                                 status = "disabled";
0479                         };
0480                 };
0481 
0482                 timers10: timers@40014400 {
0483                         compatible = "st,stm32-timers";
0484                         reg = <0x40014400 0x400>;
0485                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
0486                         clock-names = "int";
0487                         status = "disabled";
0488 
0489                         pwm {
0490                                 compatible = "st,stm32-pwm";
0491                                 #pwm-cells = <3>;
0492                                 status = "disabled";
0493                         };
0494                 };
0495 
0496                 timers11: timers@40014800 {
0497                         compatible = "st,stm32-timers";
0498                         reg = <0x40014800 0x400>;
0499                         clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
0500                         clock-names = "int";
0501                         status = "disabled";
0502 
0503                         pwm {
0504                                 compatible = "st,stm32-pwm";
0505                                 #pwm-cells = <3>;
0506                                 status = "disabled";
0507                         };
0508                 };
0509 
0510                 pwrcfg: power-config@40007000 {
0511                         compatible = "st,stm32-power-config", "syscon";
0512                         reg = <0x40007000 0x400>;
0513                 };
0514 
0515                 crc: crc@40023000 {
0516                         compatible = "st,stm32f7-crc";
0517                         reg = <0x40023000 0x400>;
0518                         clocks = <&rcc 0 12>;
0519                         status = "disabled";
0520                 };
0521 
0522                 rcc: rcc@40023800 {
0523                         #reset-cells = <1>;
0524                         #clock-cells = <2>;
0525                         compatible = "st,stm32f746-rcc", "st,stm32-rcc";
0526                         reg = <0x40023800 0x400>;
0527                         clocks = <&clk_hse>, <&clk_i2s_ckin>;
0528                         st,syscfg = <&pwrcfg>;
0529                         assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
0530                         assigned-clock-rates = <1000000>;
0531                 };
0532 
0533                 dma1: dma-controller@40026000 {
0534                         compatible = "st,stm32-dma";
0535                         reg = <0x40026000 0x400>;
0536                         interrupts = <11>,
0537                                      <12>,
0538                                      <13>,
0539                                      <14>,
0540                                      <15>,
0541                                      <16>,
0542                                      <17>,
0543                                      <47>;
0544                         clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
0545                         #dma-cells = <4>;
0546                         status = "disabled";
0547                 };
0548 
0549                 dma2: dma-controller@40026400 {
0550                         compatible = "st,stm32-dma";
0551                         reg = <0x40026400 0x400>;
0552                         interrupts = <56>,
0553                                      <57>,
0554                                      <58>,
0555                                      <59>,
0556                                      <60>,
0557                                      <68>,
0558                                      <69>,
0559                                      <70>;
0560                         clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
0561                         #dma-cells = <4>;
0562                         st,mem2mem;
0563                         status = "disabled";
0564                 };
0565 
0566                 usbotg_hs: usb@40040000 {
0567                         compatible = "st,stm32f7-hsotg";
0568                         reg = <0x40040000 0x40000>;
0569                         interrupts = <77>;
0570                         clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
0571                         clock-names = "otg";
0572                         g-rx-fifo-size = <256>;
0573                         g-np-tx-fifo-size = <32>;
0574                         g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
0575                         status = "disabled";
0576                 };
0577 
0578                 usbotg_fs: usb@50000000 {
0579                         compatible = "st,stm32f4x9-fsotg";
0580                         reg = <0x50000000 0x40000>;
0581                         interrupts = <67>;
0582                         clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;
0583                         clock-names = "otg";
0584                         status = "disabled";
0585                 };
0586         };
0587 };
0588 
0589 &systick {
0590         clocks = <&rcc 1 0>;
0591         status = "okay";
0592 };