1/* 2 * Copyright (c) 2019 Interay Solutions B.V. 3 * Copyright (c) 2019 Oane Kingma 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8#include <arm/armv7-m.dtsi> 9#include <zephyr/dt-bindings/gpio/gpio.h> 10#include <zephyr/dt-bindings/i2c/i2c.h> 11#include "gpio_gecko.h" 12 13/ { 14 chosen { 15 zephyr,entropy = &trng0; 16 zephyr,flash-controller = &msc; 17 }; 18 19 cpus { 20 #address-cells = <1>; 21 #size-cells = <0>; 22 23 cpu0: cpu@0 { 24 compatible = "arm,cortex-m4f"; 25 reg = <0>; 26 }; 27 }; 28 29 sram0: memory@20000000 { 30 compatible = "mmio-sram"; 31 }; 32 33 soc { 34 msc: flash-controller@40000000 { 35 compatible = "silabs,gecko-flash-controller"; 36 reg = <0x40000000 0x110>; 37 interrupts = <33 0>; 38 39 #address-cells = <1>; 40 #size-cells = <1>; 41 42 flash0: flash@0 { 43 compatible = "soc-nv-flash"; 44 write-block-size = <4>; 45 erase-block-size = <4096>; 46 }; 47 }; 48 49 rtcc0: rtcc@40062000 { /* RTCC0 */ 50 compatible = "silabs,gecko-rtcc"; 51 reg = <0x40062000 0x184>; 52 interrupts = <31 0>; 53 clock-frequency = <32768>; 54 prescaler = <1>; 55 status = "disabled"; 56 }; 57 58 uart0: uart@40014000 { /* UART0 */ 59 compatible = "silabs,gecko-uart"; 60 reg = <0x40014000 0x400>; 61 interrupts = <21 0 22 0>; 62 interrupt-names = "rx", "tx"; 63 peripheral-id = <0>; 64 status = "disabled"; 65 }; 66 67 uart1: uart@40014400 { /* UART1 */ 68 compatible = "silabs,gecko-uart"; 69 reg = <0x40014400 0x400>; 70 interrupts = <23 0 24 0>; 71 interrupt-names = "rx", "tx"; 72 peripheral-id = <1>; 73 status = "disabled"; 74 }; 75 76 usart0: usart@40010000 { /* USART0 */ 77 compatible = "silabs,gecko-usart"; 78 reg = <0x40010000 0x400>; 79 interrupts = <6 0 7 0>; 80 interrupt-names = "rx", "tx"; 81 peripheral-id = <0>; 82 status = "disabled"; 83 }; 84 85 usart1: usart@40010400 { /* USART1 */ 86 compatible = "silabs,gecko-usart"; 87 reg = <0x40010400 0x400>; 88 interrupts = <17 0 18 0>; 89 interrupt-names = "rx", "tx"; 90 peripheral-id = <1>; 91 status = "disabled"; 92 }; 93 94 usart2: usart@40010800 { /* USART2 */ 95 compatible = "silabs,gecko-usart"; 96 reg = <0x40010800 0x400>; 97 interrupts = <19 0 20 0>; 98 interrupt-names = "rx", "tx"; 99 peripheral-id = <2>; 100 status = "disabled"; 101 }; 102 103 usart3: usart@40010c00 { /* USART3 */ 104 compatible = "silabs,gecko-usart"; 105 reg = <0x40010c00 0x400>; 106 interrupts = <37 0 38 0>; 107 interrupt-names = "rx", "tx"; 108 peripheral-id = <3>; 109 status = "disabled"; 110 }; 111 112 usart4: usart@40011000 { /* USART4 */ 113 compatible = "silabs,gecko-usart"; 114 reg = <0x40011000 0x400>; 115 interrupts = <39 0 40 0>; 116 interrupt-names = "rx", "tx"; 117 peripheral-id = <4>; 118 status = "disabled"; 119 }; 120 121 usart5: usart@40011400 { /* USART5 */ 122 compatible = "silabs,gecko-usart"; 123 reg = <0x40011400 0x400>; 124 interrupts = <50 0 51 0>; 125 interrupt-names = "rx", "tx"; 126 peripheral-id = <5>; 127 status = "disabled"; 128 }; 129 130 leuart0: leuart@4006a000 { /* LEUART0 */ 131 compatible = "silabs,gecko-leuart"; 132 reg = <0x4006a000 0x400>; 133 interrupts = <25 0>; 134 peripheral-id = <0>; 135 status = "disabled"; 136 }; 137 138 leuart1: leuart@4006a400 { /* LEUART1 */ 139 compatible = "silabs,gecko-leuart"; 140 reg = <0x4006a400 0x400>; 141 interrupts = <26 0>; 142 peripheral-id = <1>; 143 status = "disabled"; 144 }; 145 146 i2c0: i2c@40089000 { 147 compatible = "silabs,gecko-i2c"; 148 clock-frequency = <I2C_BITRATE_STANDARD>; 149 #address-cells = <1>; 150 #size-cells = <0>; 151 reg = <0x40089000 0x400>; 152 interrupts = <11 0>; 153 status = "disabled"; 154 }; 155 156 i2c1: i2c@40089400 { 157 compatible = "silabs,gecko-i2c"; 158 clock-frequency = <I2C_BITRATE_STANDARD>; 159 #address-cells = <1>; 160 #size-cells = <0>; 161 reg = <0x40089400 0x400>; 162 interrupts = <12 0>; 163 status = "disabled"; 164 }; 165 166 i2c2: i2c@40089800 { 167 compatible = "silabs,gecko-i2c"; 168 clock-frequency = <I2C_BITRATE_STANDARD>; 169 #address-cells = <1>; 170 #size-cells = <0>; 171 reg = <0x40089800 0x400>; 172 interrupts = <45 0>; 173 status = "disabled"; 174 }; 175 176 gpio: gpio@40088400 { 177 compatible = "silabs,gecko-gpio"; 178 reg = <0x40088400 0xc00>; 179 interrupts = <3 2 13 2>; 180 interrupt-names = "GPIO_EVEN", "GPIO_ODD"; 181 182 ranges; 183 #address-cells = <1>; 184 #size-cells = <1>; 185 186 gpioa: gpio@40088000 { 187 compatible = "silabs,gecko-gpio-port"; 188 reg = <0x40088000 0x30>; 189 peripheral-id = <0>; 190 gpio-controller; 191 #gpio-cells = <2>; 192 status = "disabled"; 193 }; 194 195 gpiob: gpio@40088030 { 196 compatible = "silabs,gecko-gpio-port"; 197 reg = <0x40088030 0x30>; 198 peripheral-id = <1>; 199 gpio-controller; 200 #gpio-cells = <2>; 201 status = "disabled"; 202 }; 203 204 gpioc: gpio@40088060 { 205 compatible = "silabs,gecko-gpio-port"; 206 reg = <0x40088060 0x30>; 207 peripheral-id = <2>; 208 gpio-controller; 209 #gpio-cells = <2>; 210 status = "disabled"; 211 }; 212 213 gpiod: gpio@40088090 { 214 compatible = "silabs,gecko-gpio-port"; 215 reg = <0x40088090 0x30>; 216 peripheral-id = <3>; 217 gpio-controller; 218 #gpio-cells = <2>; 219 status = "disabled"; 220 }; 221 222 gpioe: gpio@400880c0 { 223 compatible = "silabs,gecko-gpio-port"; 224 reg = <0x400880c0 0x30>; 225 peripheral-id = <4>; 226 gpio-controller; 227 #gpio-cells = <2>; 228 status = "disabled"; 229 }; 230 231 gpiof: gpio@400880f0 { 232 compatible = "silabs,gecko-gpio-port"; 233 reg = <0x400880f0 0x30>; 234 peripheral-id = <5>; 235 gpio-controller; 236 #gpio-cells = <2>; 237 status = "disabled"; 238 }; 239 240 gpiog: gpio@40088120 { 241 compatible = "silabs,gecko-gpio-port"; 242 reg = <0x40088120 0x30>; 243 peripheral-id = <6>; 244 gpio-controller; 245 #gpio-cells = <2>; 246 status = "disabled"; 247 }; 248 249 gpioh: gpio@40088150 { 250 compatible = "silabs,gecko-gpio-port"; 251 reg = <0x40088150 0x30>; 252 peripheral-id = <7>; 253 gpio-controller; 254 #gpio-cells = <2>; 255 status = "disabled"; 256 }; 257 258 gpioi: gpio@40088180 { 259 compatible = "silabs,gecko-gpio-port"; 260 reg = <0x40088180 0x30>; 261 peripheral-id = <8>; 262 gpio-controller; 263 #gpio-cells = <2>; 264 status = "disabled"; 265 }; 266 }; 267 268 trng0: trng@4001d000 { 269 compatible = "silabs,gecko-trng"; 270 reg = <0x4001d000 0x400>; 271 interrupts = <66 0>; 272 status = "disabled"; 273 }; 274 275 wdog0: wdog@40052000 { 276 compatible = "silabs,gecko-wdog"; 277 reg = <0x40052000 0x2C>; 278 peripheral-id = <0>; 279 interrupts = <1 0>; 280 status = "disabled"; 281 }; 282 283 wdog1: wdog@40052400 { 284 compatible = "silabs,gecko-wdog"; 285 reg = <0x40052400 0x2C>; 286 peripheral-id = <1>; 287 interrupts = <64 0>; 288 status = "disabled"; 289 }; 290 291 pinctrl: pin-controller { 292 /* Pin controller is a "virtual" device since SiLabs SoCs do pin 293 * control in a distributed way (GPIO registers and PSEL 294 * registers on each peripheral). 295 */ 296 compatible = "silabs,gecko-pinctrl"; 297 }; 298 }; 299}; 300 301&nvic { 302 arm,num-irq-priority-bits = <3>; 303}; 304