blob: 5ac5f43c8454d6a051434e710763c4fe57dd3e63 [file] [log] [blame]
Anas Nashif3ae52622019-04-06 09:08:09 -04001/* SPDX-License-Identifier: Apache-2.0 */
2
Christian Taedcke39592822017-04-05 18:49:41 +02003#include <arm/armv7-m.dtsi>
Kumar Galac3076d62018-10-04 18:29:47 -05004#include <dt-bindings/gpio/gpio.h>
Piotr Mienkowskibca692e2019-02-01 15:43:19 +01005#include <dt-bindings/i2c/i2c.h>
Piotr Mienkowskia148e112019-01-14 16:39:40 +01006#include "gpio_gecko.h"
Christian Taedcke39592822017-04-05 18:49:41 +02007
8/ {
Kumar Gala7a15afc2020-04-22 13:46:15 -05009 chosen {
10 zephyr,flash-controller = &msc;
11 };
12
Christian Taedcke39592822017-04-05 18:49:41 +020013 cpus {
Kumar Galadef322f2018-09-18 14:51:26 -050014 #address-cells = <1>;
15 #size-cells = <0>;
16
Piotr Zięcik7d56fc32019-06-21 14:47:08 +020017 cpu0: cpu@0 {
Christian Taedcke39592822017-04-05 18:49:41 +020018 compatible = "arm,cortex-m4f";
Kumar Gala716047f2018-09-18 07:50:37 -050019 reg = <0>;
Christian Taedcke39592822017-04-05 18:49:41 +020020 };
21 };
22
Kumar Gala6856ad12018-09-18 07:59:03 -050023 sram0: memory@20000000 {
Kumar Gala6856ad12018-09-18 07:59:03 -050024 compatible = "mmio-sram";
25 };
26
Christian Taedcke39592822017-04-05 18:49:41 +020027 soc {
Kumar Gala7a15afc2020-04-22 13:46:15 -050028 msc: flash-controller@400c0000 {
Piotr Mienkowskid9e21712018-08-07 14:11:45 +020029 compatible = "silabs,gecko-flash-controller";
30 label = "FLASH_CTRL";
31 reg = <0x400c0000 0x78>;
32 interrupts = <35 0>;
33
34 #address-cells = <1>;
35 #size-cells = <1>;
36
37 flash0: flash@0 {
38 compatible = "soc-nv-flash";
39 label = "FLASH_0";
40 write-block-size = <4>;
Piotr Mienkowskidf33e5e2019-04-02 10:54:29 +020041 erase-block-size = <2048>;
Piotr Mienkowskid9e21712018-08-07 14:11:45 +020042 };
43 };
44
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010045 usart0: usart@4000c000 { /* USART0 */
46 compatible = "silabs,gecko-usart";
Christian Taedcke39592822017-04-05 18:49:41 +020047 reg = <0x4000c000 0x400>;
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010048 interrupts = <3 0>, <4 0>;
49 interrupt-names = "rx", "tx";
Oane Kingma536e7852019-09-20 08:34:57 +020050 peripheral-id = <0>;
Christian Taedcke39592822017-04-05 18:49:41 +020051 status = "disabled";
52 label = "UART_0";
53 };
54
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010055 usart1: usart@4000c400 { /* USART1 */
56 compatible = "silabs,gecko-usart";
Christian Taedcke39592822017-04-05 18:49:41 +020057 reg = <0x4000c400 0x400>;
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010058 interrupts = <15 0>, <16 0>;
59 interrupt-names = "rx", "tx";
Oane Kingma536e7852019-09-20 08:34:57 +020060 peripheral-id = <1>;
Christian Taedcke39592822017-04-05 18:49:41 +020061 status = "disabled";
62 label = "UART_1";
63 };
64
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010065 usart2: usart@4000c800 { /* USART2 */
66 compatible = "silabs,gecko-usart";
Christian Taedcke39592822017-04-05 18:49:41 +020067 reg = <0x4000c800 0x400>;
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010068 interrupts = <18 0>, <19 0>;
69 interrupt-names = "rx", "tx";
Oane Kingma536e7852019-09-20 08:34:57 +020070 peripheral-id = <2>;
Christian Taedcke39592822017-04-05 18:49:41 +020071 status = "disabled";
72 label = "UART_2";
73 };
74
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010075 uart0: uart@4000e000 { /* UART0 */
76 compatible = "silabs,gecko-uart";
Christian Taedcke39592822017-04-05 18:49:41 +020077 reg = <0x4000e000 0x400>;
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010078 interrupts = <20 0>, <21 0>;
79 interrupt-names = "rx", "tx";
Oane Kingma536e7852019-09-20 08:34:57 +020080 peripheral-id = <0>;
Christian Taedcke39592822017-04-05 18:49:41 +020081 status = "disabled";
82 label = "UART_3";
83 };
84
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010085 uart1: uart@4000e400 { /* UART1 */
86 compatible = "silabs,gecko-uart";
Christian Taedcke39592822017-04-05 18:49:41 +020087 reg = <0x4000e400 0x400>;
Diego Sueiro0c7a28c2018-10-16 17:51:01 +010088 interrupts = <22 0>, <23 0>;
89 interrupt-names = "rx", "tx";
Oane Kingma536e7852019-09-20 08:34:57 +020090 peripheral-id = <1>;
Christian Taedcke39592822017-04-05 18:49:41 +020091 status = "disabled";
92 label = "UART_4";
93 };
Kumar Galac3076d62018-10-04 18:29:47 -050094
Piotr Mienkowski91786e92019-01-31 15:27:21 +010095 leuart0: leuart@40084000 { /* LEUART0 */
96 compatible = "silabs,gecko-leuart";
97 reg = <0x40084000 0x400>;
98 interrupts = <24 0>;
Oane Kingma536e7852019-09-20 08:34:57 +020099 peripheral-id = <0>;
Piotr Mienkowski91786e92019-01-31 15:27:21 +0100100 status = "disabled";
101 label = "LEUART_0";
102 };
103
104 leuart1: leuart@40084400 { /* LEUART1 */
105 compatible = "silabs,gecko-leuart";
106 reg = <0x40084400 0x400>;
107 interrupts = <25 0>;
Oane Kingma536e7852019-09-20 08:34:57 +0200108 peripheral-id = <1>;
Piotr Mienkowski91786e92019-01-31 15:27:21 +0100109 status = "disabled";
110 label = "LEUART_1";
111 };
112
Piotr Mienkowskibca692e2019-02-01 15:43:19 +0100113 i2c0: i2c@4000a000 {
114 compatible = "silabs,gecko-i2c";
115 clock-frequency = <I2C_BITRATE_STANDARD>;
116 #address-cells = <1>;
117 #size-cells = <0>;
118 reg = <0x4000a000 0x400>;
119 interrupts = <9 0>;
120 label = "I2C_0";
121 status = "disabled";
122 };
123
124 i2c1: i2c@4000a400 {
125 compatible = "silabs,gecko-i2c";
126 clock-frequency = <I2C_BITRATE_STANDARD>;
127 #address-cells = <1>;
128 #size-cells = <0>;
129 reg = <0x4000a400 0x400>;
130 interrupts = <10 0>;
131 label = "I2C_1";
132 status = "disabled";
133 };
134
Kumar Galac3076d62018-10-04 18:29:47 -0500135 gpio@40006100 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100136 compatible = "silabs,gecko-gpio";
Kumar Galac3076d62018-10-04 18:29:47 -0500137 reg = <0x40006100 0xf00>;
138 interrupts = <1 2 11 2>;
139 interrupt-names = "GPIO_EVEN", "GPIO_ODD";
140 label = "GPIO";
141
142 ranges;
143 #address-cells = <1>;
144 #size-cells = <1>;
145
146 gpioa: gpio@40006000 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100147 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500148 reg = <0x40006000 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100149 peripheral-id = <0>;
Kumar Galac3076d62018-10-04 18:29:47 -0500150 label = "GPIO_A";
151 gpio-controller;
152 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100153 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500154 };
155
156 gpiob: gpio@40006024 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100157 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500158 reg = <0x40006024 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100159 peripheral-id = <1>;
Kumar Galac3076d62018-10-04 18:29:47 -0500160 label = "GPIO_B";
161 gpio-controller;
162 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100163 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500164 };
165
166 gpioc: gpio@40006048 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100167 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500168 reg = <0x40006048 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100169 peripheral-id = <2>;
Kumar Galac3076d62018-10-04 18:29:47 -0500170 label = "GPIO_C";
171 gpio-controller;
172 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100173 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500174 };
175
176 gpiod: gpio@4000606c {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100177 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500178 reg = <0x4000606c 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100179 peripheral-id = <3>;
Kumar Galac3076d62018-10-04 18:29:47 -0500180 label = "GPIO_D";
181 gpio-controller;
182 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100183 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500184 };
185
186 gpioe: gpio@40006090 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100187 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500188 reg = <0x40006090 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100189 peripheral-id = <4>;
Kumar Galac3076d62018-10-04 18:29:47 -0500190 label = "GPIO_E";
191 gpio-controller;
192 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100193 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500194 };
195
196 gpiof: gpio@400060b4 {
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100197 compatible = "silabs,gecko-gpio-port";
Kumar Galac3076d62018-10-04 18:29:47 -0500198 reg = <0x400060b4 0x24>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100199 peripheral-id = <5>;
Kumar Galac3076d62018-10-04 18:29:47 -0500200 label = "GPIO_F";
201 gpio-controller;
202 #gpio-cells = <2>;
Piotr Mienkowski8a9df522020-03-23 00:47:15 +0100203 status = "disabled";
Kumar Galac3076d62018-10-04 18:29:47 -0500204 };
205 };
Christian Taedcke39592822017-04-05 18:49:41 +0200206 };
207};
208
209&nvic {
210 arm,num-irq-priority-bits = <3>;
211};