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