blob: 47a24f4811685adde366f9efcd52034f58b1e474 [file] [log] [blame]
/*
* Copyright (c) 2024 STMicroelectronics
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <arm/armv8.1-m.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/adc/stm32l4_adc.h>
#include <zephyr/dt-bindings/clock/stm32n6_clock.h>
#include <zephyr/dt-bindings/dma/stm32_dma.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/reset/stm32n6_reset.h>
#include <zephyr/dt-bindings/memory-controller/stm32-fmc-nor-psram.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <freq.h>
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m55";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
mpu: mpu@e000ed90 {
compatible = "arm,armv8.1m-mpu";
reg = <0xe000ed90 0x40>;
};
};
};
axisram1: memory@34000000 {
compatible = "mmio-sram";
};
axisram2: memory@34180400 {
compatible = "mmio-sram";
};
clocks {
clk_hse: clk-hse {
#clock-cells = <0>;
compatible = "st,stm32n6-hse-clock";
status = "disabled";
};
clk_hsi: clk-hsi {
#clock-cells = <0>;
compatible = "st,stm32h7-hsi-clock";
clock-frequency = <DT_FREQ_M(64)>;
status = "disabled";
};
clk_lse: clk-lse {
#clock-cells = <0>;
compatible = "st,stm32-lse-clock";
clock-frequency = <32768>;
driving-capability = <2>;
status = "disabled";
};
clk_lsi: clk-lsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <DT_FREQ_K(32)>;
status = "disabled";
};
pll1: pll: pll {
#clock-cells = <0>;
compatible = "st,stm32n6-pll-clock";
status = "disabled";
};
pll2: pll2 {
#clock-cells = <0>;
compatible = "st,stm32n6-pll-clock";
status = "disabled";
};
pll3: pll3 {
#clock-cells = <0>;
compatible = "st,stm32n6-pll-clock";
status = "disabled";
};
pll4: pll4 {
#clock-cells = <0>;
compatible = "st,stm32n6-pll-clock";
status = "disabled";
};
cpusw: cpusw {
#clock-cells = <0>;
compatible = "st,stm32n6-cpu-clock-mux", "st,stm32-clock-mux";
status = "disabled";
};
perck: perck {
#clock-cells = <0>;
compatible = "st,stm32-clock-mux";
status = "disabled";
};
ic1: ic1 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic2: ic2 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic3: ic3 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic4: ic4 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic5: ic5 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic6: ic6 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic7: ic7 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic8: ic8 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic9: ic9 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic10: ic10 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic11: ic11 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic12: ic12 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic13: ic13 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic14: ic14 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic15: ic15 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic16: ic16 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic17: ic17 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic18: ic18 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic19: ic19 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
ic20: ic20 {
#clock-cells = <0>;
compatible = "st,stm32n6-ic-clock-mux";
status = "disabled";
};
};
soc {
rcc: rcc@56028000 {
compatible = "st,stm32n6-rcc";
clocks-controller;
#clock-cells = <2>;
reg = <0x56028000 0x2000>;
rctl: reset-controller {
compatible = "st,stm32-rcc-rctl";
#reset-cells = <1>;
};
};
exti: interrupt-controller@56025000 {
compatible = "st,stm32g0-exti", "st,stm32-exti";
interrupt-controller;
#interrupt-cells = <1>;
#address-cells = <1>;
reg = <0x56025000 0x400>;
num-lines = <16>;
interrupts = <20 0>, <21 0>, <22 0>, <23 0>,
<24 0>, <25 0>, <26 0>, <27 0>,
<28 0>, <29 0>, <30 0>, <31 0>,
<32 0>, <33 0>, <34 0>, <35 0>;
interrupt-names = "line0", "line1", "line2", "line3",
"line4", "line5", "line6", "line7",
"line8", "line9", "line10", "line11",
"line12", "line13", "line14", "line15";
line-ranges = <0 1>, <1 1>, <2 1>, <3 1>,
<4 1>, <5 1>, <6 1>, <7 1>,
<8 1>, <9 1>, <10 1>, <11 1>,
<12 1>, <13 1>, <14 1>, <15 1>;
};
pinctrl: pin-controller@56020000 {
compatible = "st,stm32-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x56020000 0x2000>;
gpioa: gpio@56020000 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56020000 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 0)>;
};
gpiob: gpio@56020400 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56020400 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 1)>;
};
gpioc: gpio@56020800 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56020800 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 2)>;
};
gpiod: gpio@56020c00 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56020c00 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 3)>;
};
gpioe: gpio@56021000 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56021000 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 4)>;
};
gpiof: gpio@56021400 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56021400 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 5)>;
};
gpiog: gpio@56021800 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56021800 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 6)>;
};
gpioh: gpio@56021c00 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56021c00 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 7)>;
};
gpion: gpio@56023400 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56023400 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 13)>;
};
gpioo: gpio@56023800 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56023800 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 14)>;
};
gpiop: gpio@56023c00 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56023C00 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 15)>;
};
gpioq: gpio@56024000 {
compatible = "st,stm32-gpio";
gpio-controller;
#gpio-cells = <2>;
reg = <0x56024000 0x400>;
clocks = <&rcc STM32_CLOCK(AHB4, 16)>;
};
};
adc1: adc@50022000 {
compatible = "st,stm32n6-adc", "st,stm32-adc";
reg = <0x50022000 0x400>;
clocks = <&rcc STM32_CLOCK(AHB1, 5)>;
interrupts = <46 0>;
status = "disabled";
#io-channel-cells = <1>;
resolutions = <STM32_ADC_RES(12, 0x00)
STM32_ADC_RES(10, 0x01)
STM32_ADC_RES(8, 0x02)
STM32_ADC_RES(6, 0x03)>;
sampling-times = <2 3 7 12 14 47 247 1500>;
st,adc-sequencer = "FULLY_CONFIGURABLE";
st,adc-oversampler = "OVERSAMPLER_EXTENDED";
};
adc2: adc@50022100 {
compatible = "st,stm32n6-adc", "st,stm32-adc";
reg = <0x50022100 0x300>;
clocks = <&rcc STM32_CLOCK(AHB1, 5)>;
interrupts = <46 0>;
status = "disabled";
#io-channel-cells = <1>;
resolutions = <STM32_ADC_RES(12, 0x00)
STM32_ADC_RES(10, 0x01)
STM32_ADC_RES(8, 0x02)
STM32_ADC_RES(6, 0x03)>;
sampling-times = <2 3 7 12 14 47 247 1500>;
st,adc-sequencer = "FULLY_CONFIGURABLE";
st,adc-oversampler = "OVERSAMPLER_EXTENDED";
};
fdcan1: can@5000a000 {
compatible = "st,stm32h7-fdcan";
reg = <0x5000A000 0x400>, <0x5000C000 0xd54>;
reg-names = "m_can", "message_ram";
clocks = <&rcc STM32_CLOCK(APB1_2, 8)>;
interrupts = <180 0>, <181 0>, <186 0>;
interrupt-names = "int0", "int1", "calib";
bosch,mram-cfg = <0x0 28 8 3 3 0 3 3>;
status = "disabled";
};
fdcan2: can@5000a400 {
compatible = "st,stm32h7-fdcan";
reg = <0x5000A400 0x400>, <0x5000C000 0x1aa8>;
reg-names = "m_can", "message_ram";
clocks = <&rcc STM32_CLOCK(APB1_2, 8)>;
interrupts = <182 0>, <183 0>;
interrupt-names = "int0", "int1";
bosch,mram-cfg = <0xd54 28 8 3 3 0 3 3>;
status = "disabled";
};
fdcan3: can@5000e800 {
compatible = "st,stm32h7-fdcan";
reg = <0x5000E800 0x400>, <0x5000C000 0x2800>;
reg-names = "m_can", "message_ram";
clocks = <&rcc STM32_CLOCK(APB1_2, 8)>;
interrupts = <184 0>, <185 0>;
interrupt-names = "int0", "int1";
bosch,mram-cfg = <0x1aa8 28 8 3 3 0 3 3>;
status = "disabled";
};
usart1: serial@52001000 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x52001000 0x400>;
clocks = <&rcc STM32_CLOCK(APB2, 4)>;
resets = <&rctl STM32_RESET(APB2, 4)>;
interrupts = <159 0>;
status = "disabled";
};
usart2: serial@50004400 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50004400 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 17)>;
resets = <&rctl STM32_RESET(APB1L, 17)>;
interrupts = <160 0>;
status = "disabled";
};
usart3: serial@50004800 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50004800 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 18)>;
resets = <&rctl STM32_RESET(APB1L, 18)>;
interrupts = <161 0>;
status = "disabled";
};
uart4: serial@50004c00 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50004C00 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 19)>;
resets = <&rctl STM32_RESET(APB1L, 19)>;
interrupts = <162 0>;
status = "disabled";
};
uart5: serial@50005000 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50005000 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 20)>;
resets = <&rctl STM32_RESET(APB1L, 20)>;
interrupts = <163 0>;
status = "disabled";
};
usart6: serial@52001400 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x52001400 0x400>;
clocks = <&rcc STM32_CLOCK(APB2, 5)>;
resets = <&rctl STM32_RESET(APB2, 5)>;
interrupts = <164 0>;
status = "disabled";
};
uart7: serial@50007800 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50007800 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 30)>;
resets = <&rctl STM32_RESET(APB1L, 30)>;
interrupts = <165 0>;
status = "disabled";
};
uart8: serial@50007c00 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x50007C00 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 31)>;
resets = <&rctl STM32_RESET(APB1L, 31)>;
interrupts = <166 0>;
status = "disabled";
};
uart9: serial@52001800 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x52001800 0x400>;
clocks = <&rcc STM32_CLOCK(APB2, 6)>;
resets = <&rctl STM32_RESET(APB2, 6)>;
interrupts = <167 0>;
status = "disabled";
};
usart10: serial@52001c00 {
compatible = "st,stm32-usart", "st,stm32-uart";
reg = <0x52001C00 0x400>;
clocks = <&rcc STM32_CLOCK(APB2, 7)>;
resets = <&rctl STM32_RESET(APB2, 7)>;
interrupts = <168 0>;
status = "disabled";
};
i2c1: i2c@50005400 {
compatible = "st,stm32-i2c-v2";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x50005400 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 21)>;
interrupts = <100 0>, <101 0>;
interrupt-names = "event", "error";
status = "disabled";
};
i2c2: i2c@50005800 {
compatible = "st,stm32-i2c-v2";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x50005800 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 22)>;
interrupts = <102 0>, <103 0>;
interrupt-names = "event", "error";
status = "disabled";
};
i2c3: i2c@50005c00 {
compatible = "st,stm32-i2c-v2";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x50005C00 0x400>;
clocks = <&rcc STM32_CLOCK(APB1, 23)>;
interrupts = <104 0>, <105 0>;
interrupt-names = "event", "error";
status = "disabled";
};
i2c4: i2c@56001c00 {
compatible = "st,stm32-i2c-v2";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x56001C00 0x400>;
clocks = <&rcc STM32_CLOCK(APB4, 7)>;
interrupts = <106 0>, <107 0>;
interrupt-names = "event", "error";
status = "disabled";
};
spi1: spi@52003000 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x52003000 0x400>;
interrupts = <153 0>;
clocks = <&rcc STM32_CLOCK(APB2, 12)>;
status = "disabled";
};
spi2: spi@50003800 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x50003800 0x400>;
interrupts = <154 0>;
clocks = <&rcc STM32_CLOCK(APB1, 14)>;
status = "disabled";
};
spi3: spi@50003c00 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x50003C00 0x400>;
interrupts = <155 0>;
clocks = <&rcc STM32_CLOCK(APB1, 15)>;
status = "disabled";
};
spi4: spi@52003400 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x52003400 0x400>;
interrupts = <156 0>;
clocks = <&rcc STM32_CLOCK(APB2, 13)>;
status = "disabled";
};
spi5: spi@52005000 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x52005000 0x400>;
interrupts = <157 0>;
clocks = <&rcc STM32_CLOCK(APB2, 20)>;
status = "disabled";
};
spi6: spi@56001400 {
compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x56001400 0x400>;
interrupts = <158 0>;
clocks = <&rcc STM32_CLOCK(APB4, 5)>;
status = "disabled";
};
gpdma1: dma@50021000 {
compatible = "st,stm32u5-dma";
#dma-cells = <3>;
reg = <0x50021000 0x1000>;
clocks = <&rcc STM32_CLOCK(AHB1, 4)>;
interrupts = <84 0 85 0 86 0 87 0 88 0 89 0 90 0 91 0
92 0 93 0 94 0 95 0 96 0 97 0 98 0 99 0>;
dma-channels = <16>;
dma-requests = <144>;
dma-offset = <0>;
status = "disabled";
};
};
};
&nvic {
arm,num-irq-priority-bits = <4>;
};