/* * Copyright (c) 2023 Nuvoton Technology Corporation. * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include #include #include #include #include / { chosen { zephyr,flash-controller = &fmc; }; aliases { rtc = &rtc; }; cpus { #address-cells = <1>; #size-cells = <0>; cpu@0 { device_type = "cpu"; compatible = "arm,cortex-m4f"; reg = <0>; }; }; sram0: memory@20000000 { compatible = "mmio-sram"; reg = <0x20000000 DT_SIZE_K(512)>; }; sysclk: system-clock { compatible = "fixed-clock"; clock-frequency = <200000000>; #clock-cells = <0>; }; soc { scc: system-clock-controller@40000200 { compatible = "nuvoton,numaker-scc"; reg = <0x40000200 0x100>; #clock-cells = <0>; /* hxt = "enable"; */ lxt = "enable"; hirc48m = "enable"; clk-pclkdiv = <(NUMAKER_CLK_PCLKDIV_APB0DIV_DIV2 | NUMAKER_CLK_PCLKDIV_APB1DIV_DIV2)>; core-clock = <200000000>; powerdown-mode = ; 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>; status = "okay"; }; fmc: flash-controller@4000c000 { compatible = "nuvoton,numaker-fmc"; reg = <0x4000c000 0x110>; #address-cells = <1>; #size-cells = <1>; flash0: flash@0 { compatible = "soc-nv-flash"; reg = <0 DT_SIZE_K(1024)>; 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_CLKSEL1_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_CLKSEL1_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_CLKSEL3_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_CLKSEL3_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_CLKSEL3_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_CLKSEL3_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_CLKSEL3_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_CLKSEL3_UART7SEL_HIRC NUMAKER_CLK_CLKDIV4_UART7(1)>; status = "disabled"; }; uart8: serial@40078000 { compatible = "nuvoton,numaker-uart"; reg = <0x40078000 0x1000>; interrupts = <99 0>; resets = <&rst NUMAKER_UART8_RST>; clocks = <&pcc NUMAKER_UART8_MODULE NUMAKER_CLK_CLKSEL2_UART8SEL_HIRC NUMAKER_CLK_CLKDIV5_UART8(1)>; status = "disabled"; }; uart9: serial@40079000 { compatible = "nuvoton,numaker-uart"; reg = <0x40079000 0x1000>; interrupts = <100 0>; resets = <&rst NUMAKER_UART9_RST>; clocks = <&pcc NUMAKER_UART9_MODULE NUMAKER_CLK_CLKSEL2_UART9SEL_HIRC NUMAKER_CLK_CLKDIV5_UART9(1)>; status = "disabled"; }; pinctrl: pin-controller@40000080 { compatible = "nuvoton,numaker-pinctrl"; reg = <0x40000080 0x28 0x40000500 0xa0>; reg-names = "mfos", "mfp"; status = "okay"; }; 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>; }; gpiog: gpio@40004180 { compatible = "nuvoton,numaker-gpio"; gpio-controller; #gpio-cells = <2>; reg = <0x40004180 0x40>; clocks = <&pcc NUMAKER_GPG_MODULE 0 0>; status = "disabled"; interrupts = <72 2>; }; gpioh: gpio@400041c0 { compatible = "nuvoton,numaker-gpio"; gpio-controller; #gpio-cells = <2>; reg = <0x400041c0 0x40>; clocks = <&pcc NUMAKER_GPH_MODULE 0 0>; status = "disabled"; interrupts = <88 2>; }; gpioi: gpio@40004200 { compatible = "nuvoton,numaker-gpio"; gpio-controller; #gpio-cells = <2>; reg = <0x40004200 0x40>; clocks = <&pcc NUMAKER_GPI_MODULE 0 0>; status = "disabled"; interrupts = <110 2>; }; gpioj: gpio@40004240 { compatible = "nuvoton,numaker-gpio"; gpio-controller; #gpio-cells = <2>; reg = <0x40004240 0x40>; clocks = <&pcc NUMAKER_GPJ_MODULE 0 0>; status = "disabled"; interrupts = <61 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"; }; spi4: spi@40065000 { compatible = "nuvoton,numaker-spi"; reg = <0x40065000 0x6c>; interrupts = <63 0>; resets = <&rst NUMAKER_SPI4_RST>; clocks = <&pcc NUMAKER_SPI4_MODULE NUMAKER_CLK_CLKSEL4_SPI4SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi5: spi@40066000 { compatible = "nuvoton,numaker-spi"; reg = <0x40066000 0x6c>; interrupts = <57 0>; resets = <&rst NUMAKER_SPI5_RST>; clocks = <&pcc NUMAKER_SPI5_MODULE NUMAKER_CLK_CLKSEL4_SPI5SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi6: spi@40067000 { compatible = "nuvoton,numaker-spi"; reg = <0x40067000 0x6c>; interrupts = <70 0>; resets = <&rst NUMAKER_SPI6_RST>; clocks = <&pcc NUMAKER_SPI6_MODULE NUMAKER_CLK_CLKSEL4_SPI6SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi7: spi@40068000 { compatible = "nuvoton,numaker-spi"; reg = <0x40068000 0x6c>; interrupts = <77 0>; resets = <&rst NUMAKER_SPI7_RST>; clocks = <&pcc NUMAKER_SPI7_MODULE NUMAKER_CLK_CLKSEL4_SPI7SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi8: spi@4006b000 { compatible = "nuvoton,numaker-spi"; reg = <0x4006b000 0x6c>; interrupts = <108 0>; resets = <&rst NUMAKER_SPI8_RST>; clocks = <&pcc NUMAKER_SPI8_MODULE NUMAKER_CLK_CLKSEL4_SPI8SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi9: spi@4006c000 { compatible = "nuvoton,numaker-spi"; reg = <0x4006c000 0x6c>; interrupts = <111 0>; resets = <&rst NUMAKER_SPI9_RST>; clocks = <&pcc NUMAKER_SPI9_MODULE NUMAKER_CLK_CLKSEL4_SPI9SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi10: spi@4006d000 { compatible = "nuvoton,numaker-spi"; reg = <0x4006d000 0x6c>; interrupts = <119 0>; resets = <&rst NUMAKER_SPI10_RST>; clocks = <&pcc NUMAKER_SPI10_MODULE NUMAKER_CLK_CLKSEL4_SPI10SEL_HIRC 0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; 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"; }; canfd2: canfd@40028000 { compatible = "nuvoton,numaker-canfd"; reg = <0x40028000 0x200>, <0x40028200 0x1800>; reg-names = "m_can", "message_ram"; interrupts = <120 0>, <121 0>; interrupt-names = "int0", "int1"; resets = <&rst NUMAKER_CANFD2_RST>; clocks = <&pcc NUMAKER_CANFD2_MODULE NUMAKER_CLK_CLKSEL0_CANFD2SEL_HCLK NUMAKER_CLK_CLKDIV5_CANFD2(1)>; bosch,mram-cfg = <0x0 12 10 3 3 3 3 3>; status = "disabled"; }; canfd3: canfd@4002c000 { compatible = "nuvoton,numaker-canfd"; reg = <0x4002c000 0x200>, <0x4002c200 0x1800>; reg-names = "m_can", "message_ram"; interrupts = <122 0>, <123 0>; interrupt-names = "int0", "int1"; resets = <&rst NUMAKER_CANFD3_RST>; clocks = <&pcc NUMAKER_CANFD3_MODULE NUMAKER_CLK_CLKSEL0_CANFD3SEL_HCLK NUMAKER_CLK_CLKDIV5_CANFD3(1)>; bosch,mram-cfg = <0x0 12 10 3 3 3 3 3>; status = "disabled"; }; emac: ethernet@40012000 { compatible = "nuvoton,numaker-ethernet"; reg = <0x40012000 0x105C>; interrupts = <66 0>; resets = <&rst NUMAKER_EMAC0_RST>; phy-addr = <1>; clocks = <&pcc NUMAKER_EMAC0_MODULE 0 0>; status = "disabled"; }; i2c0: i2c@40080000 { compatible = "nuvoton,numaker-i2c"; clock-frequency = ; 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 = ; 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 = ; 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 = ; 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>; }; i2c4: i2c@40084000 { compatible = "nuvoton,numaker-i2c"; clock-frequency = ; reg = <0x40084000 0x1000>; interrupts = <118 0>; resets = <&rst NUMAKER_I2C4_RST>; clocks = <&pcc NUMAKER_I2C4_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(12)>; channels = <19>; status = "disabled"; #io-channel-cells = <1>; }; eadc1: eadc@4004b000 { compatible = "nuvoton,numaker-adc"; reg = <0x4004b000 0xffc>; interrupts = <104 0>; resets = <&rst NUMAKER_EADC1_RST>; clocks = <&pcc NUMAKER_EADC1_MODULE NUMAKER_CLK_CLKSEL0_EADC1SEL_HCLK NUMAKER_CLK_CLKDIV2_EADC1(12)>; channels = <19>; status = "disabled"; #io-channel-cells = <1>; }; eadc2: eadc@40097000 { compatible = "nuvoton,numaker-adc"; reg = <0x40097000 0xffc>; interrupts = <124 0>; resets = <&rst NUMAKER_EADC2_RST>; clocks = <&pcc NUMAKER_EADC2_MODULE NUMAKER_CLK_CLKSEL0_EADC2SEL_HCLK NUMAKER_CLK_CLKDIV5_EADC2(12)>; channels = <19>; status = "disabled"; #io-channel-cells = <1>; }; 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 = <1536>; status = "disabled"; num-bidir-endpoints = <25>; disallow-iso-in-out-same-number; }; wwdt: watchdog@40040100 { compatible = "nuvoton,numaker-wwdt"; reg = <0x40040100 0x10>; interrupts = <9 0>; clocks = <&pcc NUMAKER_WWDT_MODULE NUMAKER_CLK_CLKSEL1_WWDTSEL_LIRC 0>; status = "disabled"; }; 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>; }; }; }; &nvic { arm,num-irq-priority-bits = <4>; };