| /* |
| * Copyright (c) 2024 Nuvoton Technology Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <arm/armv8-m.dtsi> |
| #include <mem.h> |
| #include <freq.h> |
| #include <zephyr/dt-bindings/clock/numaker_m2l31x_clock.h> |
| #include <zephyr/dt-bindings/reset/numaker_m2l31x_reset.h> |
| #include <zephyr/dt-bindings/gpio/gpio.h> |
| #include <zephyr/dt-bindings/i2c/i2c.h> |
| #include <zephyr/dt-bindings/adc/adc.h> |
| |
| / { |
| chosen { |
| zephyr,flash-controller = &rmc; |
| }; |
| |
| aliases { |
| rtc = &rtc; |
| }; |
| |
| cpus { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| cpu@0 { |
| device_type = "cpu"; |
| compatible = "arm,cortex-m23"; |
| reg = <0>; |
| }; |
| }; |
| |
| sysclk: system-clock { |
| compatible = "fixed-clock"; |
| clock-frequency = <DT_FREQ_M(72)>; |
| #clock-cells = <0>; |
| }; |
| |
| soc { |
| scc: system-clock-controller@40000200 { |
| compatible = "nuvoton,numaker-scc"; |
| reg = <0x40000200 0x100>; |
| #clock-cells = <0>; |
| lxt = "enable"; |
| hirc48m = "enable"; |
| clk-pclkdiv = <(NUMAKER_CLK_PCLKDIV_APB0DIV_DIV2 | |
| NUMAKER_CLK_PCLKDIV_APB1DIV_DIV2)>; |
| core-clock = <DT_FREQ_M(72)>; |
| powerdown-mode = <NUMAKER_CLK_PMUCTL_PDMSEL_DPD0>; |
| |
| pcc: peripheral-clock-controller { |
| compatible = "nuvoton,numaker-pcc"; |
| #clock-cells = <3>; |
| }; |
| }; |
| |
| rst: reset-controller@40000000 { |
| compatible = "nuvoton,numaker-rst"; |
| reg = <0x40000000 0x20>; |
| #reset-cells = <1>; |
| }; |
| |
| rmc: flash-controller@4000c000 { |
| compatible = "nuvoton,numaker-rmc"; |
| reg = <0x4000c000 0x1000>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| flash0: flash@0 { |
| compatible = "soc-nv-flash"; |
| erase-block-size = <4096>; |
| write-block-size = <4>; |
| }; |
| }; |
| |
| uart0: serial@40070000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40070000 0x1000>; |
| interrupts = <36 0>; |
| resets = <&rst NUMAKER_UART0_RST>; |
| clocks = <&pcc NUMAKER_UART0_MODULE NUMAKER_CLK_CLKSEL4_UART0SEL_HIRC |
| NUMAKER_CLK_CLKDIV0_UART0(1)>; |
| status = "disabled"; |
| }; |
| |
| uart1: serial@40071000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40071000 0x1000>; |
| interrupts = <37 0>; |
| resets = <&rst NUMAKER_UART1_RST>; |
| clocks = <&pcc NUMAKER_UART1_MODULE NUMAKER_CLK_CLKSEL4_UART1SEL_HIRC |
| NUMAKER_CLK_CLKDIV0_UART1(1)>; |
| status = "disabled"; |
| }; |
| |
| uart2: serial@40072000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40072000 0x1000>; |
| interrupts = <48 0>; |
| resets = <&rst NUMAKER_UART2_RST>; |
| clocks = <&pcc NUMAKER_UART2_MODULE NUMAKER_CLK_CLKSEL4_UART2SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART2(1)>; |
| status = "disabled"; |
| }; |
| |
| uart3: serial@40073000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40073000 0x1000>; |
| interrupts = <49 0>; |
| resets = <&rst NUMAKER_UART3_RST>; |
| clocks = <&pcc NUMAKER_UART3_MODULE NUMAKER_CLK_CLKSEL4_UART3SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART3(1)>; |
| status = "disabled"; |
| }; |
| |
| uart4: serial@40074000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40074000 0x1000>; |
| interrupts = <74 0>; |
| resets = <&rst NUMAKER_UART4_RST>; |
| clocks = <&pcc NUMAKER_UART4_MODULE NUMAKER_CLK_CLKSEL4_UART4SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART4(1)>; |
| status = "disabled"; |
| }; |
| |
| uart5: serial@40075000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40075000 0x1000>; |
| interrupts = <75 0>; |
| resets = <&rst NUMAKER_UART5_RST>; |
| clocks = <&pcc NUMAKER_UART5_MODULE NUMAKER_CLK_CLKSEL4_UART5SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART5(1)>; |
| status = "disabled"; |
| }; |
| |
| uart6: serial@40076000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40076000 0x1000>; |
| interrupts = <102 0>; |
| resets = <&rst NUMAKER_UART6_RST>; |
| clocks = <&pcc NUMAKER_UART6_MODULE NUMAKER_CLK_CLKSEL4_UART6SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART6(1)>; |
| status = "disabled"; |
| }; |
| |
| uart7: serial@40077000 { |
| compatible = "nuvoton,numaker-uart"; |
| reg = <0x40077000 0x1000>; |
| interrupts = <103 0>; |
| resets = <&rst NUMAKER_UART7_RST>; |
| clocks = <&pcc NUMAKER_UART7_MODULE NUMAKER_CLK_CLKSEL4_UART7SEL_HIRC |
| NUMAKER_CLK_CLKDIV4_UART7(1)>; |
| status = "disabled"; |
| }; |
| |
| pinctrl: pin-controller@40000080 { |
| compatible = "nuvoton,numaker-pinctrl"; |
| reg = <0x40000080 0x20 |
| 0x40000500 0x80>; |
| reg-names = "mfos", "mfp"; |
| }; |
| |
| gpioa: gpio@40004000 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x40004000 0x40>; |
| clocks = <&pcc NUMAKER_GPA_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <16 2>; |
| }; |
| |
| gpiob: gpio@40004040 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x40004040 0x40>; |
| clocks = <&pcc NUMAKER_GPB_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <17 2>; |
| }; |
| |
| gpioc: gpio@40004080 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x40004080 0x40>; |
| clocks = <&pcc NUMAKER_GPC_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <18 2>; |
| }; |
| |
| gpiod: gpio@400040c0 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x400040c0 0x40>; |
| clocks = <&pcc NUMAKER_GPD_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <19 2>; |
| }; |
| |
| gpioe: gpio@40004100 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x40004100 0x40>; |
| clocks = <&pcc NUMAKER_GPE_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <20 2>; |
| }; |
| |
| gpiof: gpio@40004140 { |
| compatible = "nuvoton,numaker-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x40004140 0x40>; |
| clocks = <&pcc NUMAKER_GPF_MODULE 0 0>; |
| status = "disabled"; |
| interrupts = <21 2>; |
| }; |
| |
| spi0: spi@40061000 { |
| compatible = "nuvoton,numaker-spi"; |
| reg = <0x40061000 0x6c>; |
| interrupts = <23 0>; |
| resets = <&rst NUMAKER_SPI0_RST>; |
| clocks = <&pcc NUMAKER_SPI0_MODULE NUMAKER_CLK_CLKSEL2_SPI0SEL_HIRC 0>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| |
| spi1: spi@40062000 { |
| compatible = "nuvoton,numaker-spi"; |
| reg = <0x40062000 0x6c>; |
| interrupts = <51 0>; |
| resets = <&rst NUMAKER_SPI1_RST>; |
| clocks = <&pcc NUMAKER_SPI1_MODULE NUMAKER_CLK_CLKSEL2_SPI1SEL_HIRC 0>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| |
| spi2: spi@40063000 { |
| compatible = "nuvoton,numaker-spi"; |
| reg = <0x40063000 0x6c>; |
| interrupts = <52 0>; |
| resets = <&rst NUMAKER_SPI2_RST>; |
| clocks = <&pcc NUMAKER_SPI2_MODULE NUMAKER_CLK_CLKSEL3_SPI2SEL_HIRC 0>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| |
| spi3: spi@40064000 { |
| compatible = "nuvoton,numaker-spi"; |
| reg = <0x40064000 0x6c>; |
| interrupts = <62 0>; |
| resets = <&rst NUMAKER_SPI3_RST>; |
| clocks = <&pcc NUMAKER_SPI3_MODULE NUMAKER_CLK_CLKSEL3_SPI3SEL_HIRC 0>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| |
| i2c0: i2c@40080000 { |
| compatible = "nuvoton,numaker-i2c"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| reg = <0x40080000 0x1000>; |
| interrupts = <38 0>; |
| resets = <&rst NUMAKER_I2C0_RST>; |
| clocks = <&pcc NUMAKER_I2C0_MODULE 0 0>; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| |
| i2c1: i2c@40081000 { |
| compatible = "nuvoton,numaker-i2c"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| reg = <0x40081000 0x1000>; |
| interrupts = <39 0>; |
| resets = <&rst NUMAKER_I2C1_RST>; |
| clocks = <&pcc NUMAKER_I2C1_MODULE 0 0>; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| |
| i2c2: i2c@40082000 { |
| compatible = "nuvoton,numaker-i2c"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| reg = <0x40082000 0x1000>; |
| interrupts = <82 0>; |
| resets = <&rst NUMAKER_I2C2_RST>; |
| clocks = <&pcc NUMAKER_I2C2_MODULE 0 0>; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| |
| i2c3: i2c@40083000 { |
| compatible = "nuvoton,numaker-i2c"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| reg = <0x40083000 0x1000>; |
| interrupts = <83 0>; |
| resets = <&rst NUMAKER_I2C3_RST>; |
| clocks = <&pcc NUMAKER_I2C3_MODULE 0 0>; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| |
| eadc0: eadc@40043000 { |
| compatible = "nuvoton,numaker-adc"; |
| reg = <0x40043000 0xffc>; |
| interrupts = <42 0>; |
| resets = <&rst NUMAKER_EADC0_RST>; |
| clocks = <&pcc NUMAKER_EADC0_MODULE |
| NUMAKER_CLK_CLKSEL0_EADC0SEL_HCLK |
| NUMAKER_CLK_CLKDIV0_EADC0(2)>; |
| channels = <31>; |
| status = "disabled"; |
| #io-channel-cells = <1>; |
| }; |
| |
| rtc: rtc@40041000 { |
| compatible = "nuvoton,numaker-rtc"; |
| reg = <0x40041000 0x138>; |
| interrupts = <6 0>; |
| oscillator = "lxt"; |
| clocks = <&pcc NUMAKER_RTC_MODULE 0 0>; |
| alarms-count = <1>; |
| }; |
| |
| epwm0: epwm@40058000 { |
| compatible = "nuvoton,numaker-pwm"; |
| reg = <0x40058000 0x37c>; |
| interrupts = <25 0>, <26 0>, <27 0>; |
| interrupt-names = "pair0", "pair1", "pair2"; |
| resets = <&rst NUMAKER_EPWM0_RST>; |
| prescaler = <19>; |
| clocks = <&pcc NUMAKER_EPWM0_MODULE NUMAKER_CLK_CLKSEL2_EPWM0SEL_PCLK0 0>; |
| #pwm-cells = <3>; |
| status = "disabled"; |
| }; |
| |
| epwm1: epwm@40059000 { |
| compatible = "nuvoton,numaker-pwm"; |
| reg = <0x40059000 0x37c>; |
| interrupts = <29 0>, <30 0>, <31 0>; |
| interrupt-names = "pair0", "pair1", "pair2"; |
| resets = <&rst NUMAKER_EPWM1_RST>; |
| prescaler = <19>; |
| clocks = <&pcc NUMAKER_EPWM1_MODULE NUMAKER_CLK_CLKSEL2_EPWM1SEL_PCLK1 0>; |
| #pwm-cells = <3>; |
| status = "disabled"; |
| }; |
| |
| canfd0: canfd@40020000 { |
| compatible = "nuvoton,numaker-canfd"; |
| reg = <0x40020000 0x200>, <0x40020200 0x1800>; |
| reg-names = "m_can", "message_ram"; |
| interrupts = <112 0>, <113 0>; |
| interrupt-names = "int0", "int1"; |
| resets = <&rst NUMAKER_CANFD0_RST>; |
| clocks = <&pcc NUMAKER_CANFD0_MODULE |
| NUMAKER_CLK_CLKSEL0_CANFD0SEL_HCLK |
| NUMAKER_CLK_CLKDIV5_CANFD0(1)>; |
| bosch,mram-cfg = <0x0 12 10 3 3 3 3 3>; |
| status = "disabled"; |
| }; |
| |
| canfd1: canfd@40024000 { |
| compatible = "nuvoton,numaker-canfd"; |
| reg = <0x40024000 0x200>, <0x40024200 0x1800>; |
| reg-names = "m_can", "message_ram"; |
| interrupts = <114 0>, <115 0>; |
| interrupt-names = "int0", "int1"; |
| resets = <&rst NUMAKER_CANFD1_RST>; |
| clocks = <&pcc NUMAKER_CANFD1_MODULE |
| NUMAKER_CLK_CLKSEL0_CANFD1SEL_HCLK |
| NUMAKER_CLK_CLKDIV5_CANFD1(1)>; |
| bosch,mram-cfg = <0x0 12 10 3 3 3 3 3>; |
| status = "disabled"; |
| }; |
| |
| usbd: usbd@400c0000 { |
| compatible = "nuvoton,numaker-usbd"; |
| reg = <0x400c0000 0x1000>; |
| interrupts = <53 0>; |
| resets = <&rst NUMAKER_USBD_RST>; |
| clocks = <&pcc NUMAKER_USBD_MODULE NUMAKER_CLK_CLKSEL0_USBSEL_HIRC48M |
| NUMAKER_CLK_CLKDIV0_USB(1)>; |
| dma-buffer-size = <1024>; |
| status = "disabled"; |
| num-bidir-endpoints = <19>; |
| disallow-iso-in-out-same-number; |
| }; |
| |
| wwdt: watchdog@40096000 { |
| compatible = "nuvoton,numaker-wwdt"; |
| reg = <0x40096000 0x10>; |
| interrupts = <9 0>; |
| clocks = <&pcc NUMAKER_WWDT_MODULE NUMAKER_CLK_CLKSEL1_WWDTSEL_LIRC 0>; |
| status = "disabled"; |
| }; |
| |
| tcpc0: utcpd@400c6000 { |
| compatible = "nuvoton,numaker-tcpc"; |
| reg = <0x400c6000 0x1000>, |
| <0x40043000 0x1000>, |
| <0x40050000 0x1000>; |
| reg-names = "utcpd", "eadc", "timer"; |
| interrupts = <108 0>; |
| interrupt-names = "utcpd"; |
| resets = <&rst NUMAKER_UTCPD0_RST>, |
| <&rst NUMAKER_TMR0_RST>; |
| reset-names = "utcpd", "timer"; |
| clocks = <&pcc NUMAKER_UTCPD0_MODULE 0 0>, |
| <&pcc NUMAKER_TMR0_MODULE NUMAKER_CLK_CLKSEL1_TMR0SEL_HIRC 0>; |
| clock-names = "utcpd", "timer"; |
| status = "disabled"; |
| |
| vbus0: vbus0 { |
| compatible = "nuvoton,numaker-vbus"; |
| status = "disabled"; |
| }; |
| |
| ppc0: ppc0 { |
| compatible = "nuvoton,numaker-ppc"; |
| status = "disabled"; |
| }; |
| }; |
| }; |
| }; |
| |
| &nvic { |
| arm,num-irq-priority-bits = <2>; |
| }; |