1/* 2 * Copyright (c) 2021 Rafael Dias Menezes <rdmeneze@gmail.com> 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <arm/armv7-m.dtsi> 8#include <zephyr/dt-bindings/gpio/gpio.h> 9#include <zephyr/dt-bindings/i2c/i2c.h> 10#include "gpio_gecko.h" 11 12/ { 13 chosen { 14 zephyr,flash-controller = &msc; 15 }; 16 17 cpus { 18 #address-cells = <1>; 19 #size-cells = <0>; 20 21 }; 22 23 sram0: memory@20000000 { 24 compatible = "mmio-sram"; 25 }; 26 27 soc { 28 msc: flash-controller@400e0000 { 29 compatible = "silabs,gecko-flash-controller"; 30 reg = <0x400e0000 0x800>; 31 interrupts = <24 0>; 32 33 #address-cells = <1>; 34 #size-cells = <1>; 35 36 flash0: flash@0 { 37 compatible = "soc-nv-flash"; 38 write-block-size = <4>; 39 erase-block-size = <2048>; 40 }; 41 }; 42 43 usart0: usart@40010000 { /* USART0 */ 44 compatible = "silabs,gecko-usart"; 45 reg = <0x40010000 0x400>; 46 interrupts = <11 0 12 0>; 47 interrupt-names = "rx", "tx"; 48 peripheral-id = <0>; 49 status = "disabled"; 50 }; 51 52 usart1: usart@40010400 { /* USART1 */ 53 compatible = "silabs,gecko-usart"; 54 reg = <0x40010400 0x400>; 55 interrupts = <19 0 20 0>; 56 interrupt-names = "rx", "tx"; 57 peripheral-id = <1>; 58 status = "disabled"; 59 }; 60 61 leuart0: leuart@4004a000 { /* LEUART0 */ 62 compatible = "silabs,gecko-leuart"; 63 reg = <0x4004a000 0x400>; 64 interrupts = <21 0>; 65 peripheral-id = <0>; 66 status = "disabled"; 67 }; 68 69 i2c0: i2c@4000c000 { 70 compatible = "silabs,gecko-i2c"; 71 clock-frequency = <I2C_BITRATE_STANDARD>; 72 #address-cells = <1>; 73 #size-cells = <0>; 74 reg = <0x4000c000 0x400>; 75 interrupts = <16 0>; 76 status = "disabled"; 77 }; 78 79 rtcc0: rtcc@40042000 { 80 compatible = "silabs,gecko-rtcc"; 81 reg = <0x40042000 0x184>; 82 interrupts = <29 0>; 83 clock-frequency = <32768>; 84 prescaler = <1>; 85 status = "disabled"; 86 }; 87 88 gpio: gpio@4000a400 { 89 compatible = "silabs,gecko-gpio"; 90 reg = <0x4000a400 0xf00>; 91 interrupts = <9 2 17 2>; 92 interrupt-names = "GPIO_EVEN", "GPIO_ODD"; 93 94 ranges; 95 #address-cells = <1>; 96 #size-cells = <1>; 97 98 gpioa: gpio@4000a000 { 99 compatible = "silabs,gecko-gpio-port"; 100 reg = <0x4000a000 0x30>; 101 peripheral-id = <0>; 102 gpio-controller; 103 #gpio-cells = <2>; 104 status = "disabled"; 105 }; 106 107 gpiob: gpio@4000a030 { 108 compatible = "silabs,gecko-gpio-port"; 109 reg = <0x4000a030 0x30>; 110 peripheral-id = <1>; 111 gpio-controller; 112 #gpio-cells = <2>; 113 status = "disabled"; 114 }; 115 116 gpioc: gpio@4000a060 { 117 compatible = "silabs,gecko-gpio-port"; 118 reg = <0x4000a060 0x30>; 119 peripheral-id = <2>; 120 gpio-controller; 121 #gpio-cells = <2>; 122 status = "disabled"; 123 }; 124 125 gpiod: gpio@4000a090 { 126 compatible = "silabs,gecko-gpio-port"; 127 reg = <0x4000a090 0x30>; 128 peripheral-id = <3>; 129 gpio-controller; 130 #gpio-cells = <2>; 131 status = "disabled"; 132 }; 133 134 gpiof: gpio@4000a0f0 { 135 compatible = "silabs,gecko-gpio-port"; 136 reg = <0x4000a0f0 0x30>; 137 peripheral-id = <5>; 138 gpio-controller; 139 #gpio-cells = <2>; 140 status = "disabled"; 141 }; 142 pinctrl: pin-controller { 143 /* Pin controller is a "virtual" device since SiLabs SoCs do pin 144 * control in a distributed way (GPIO registers and PSEL 145 * registers on each peripheral). 146 */ 147 compatible = "silabs,gecko-pinctrl"; 148 }; 149 }; 150 151 wdog0: wdog@40052000 { 152 compatible = "silabs,gecko-wdog"; 153 reg = <0x40052000 0x400>; 154 peripheral-id = <0>; 155 interrupts = <2 0>; 156 status = "disabled"; 157 }; 158 }; 159}; 160 161&nvic { 162 arm,num-irq-priority-bits = <3>; 163}; 164