/*
 * Copyright (c) 2024 Nuvoton Technology Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NUMAKER_M2L31_CLOCK_H
#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NUMAKER_M2L31_CLOCK_H

#define NUMAKER_CLK_CLKSEL0_HCLKSEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_LXT 0x00000001
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_PLL 0x00000002
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_LIRC 0x00000003
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_MIRC 0x00000005
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_HIRC48M 0x00000006
#define NUMAKER_CLK_CLKSEL0_HCLKSEL_HIRC 0x00000007
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_LXT 0x00000001
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_PLL 0x00000002
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_LIRC 0x00000003
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_MIRC 0x00000005
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_HIRC48M 0x00000006
#define NUMAKER_CLK_CLKSEL0_HCLK0SEL_HIRC 0x00000007
#define NUMAKER_CLK_CLKSEL0_STCLKSEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL0_STCLKSEL_LXT 0x00000008
#define NUMAKER_CLK_CLKSEL0_STCLKSEL_HXT_DIV2 0x00000010
#define NUMAKER_CLK_CLKSEL0_STCLKSEL_HCLK_DIV2 0x00000018
#define NUMAKER_CLK_CLKSEL0_STCLKSEL_HIRC_DIV2 0x00000038
#define NUMAKER_CLK_CLKSEL0_HCLK1SEL_HIRC 0x00000000
#define NUMAKER_CLK_CLKSEL0_HCLK1SEL_MIRC 0x00001000
#define NUMAKER_CLK_CLKSEL0_HCLK1SEL_LXT 0x00002000
#define NUMAKER_CLK_CLKSEL0_HCLK1SEL_LIRC 0x00003000
#define NUMAKER_CLK_CLKSEL0_HCLK1SEL_HIRC48M_DIV2 0x00004000
#define NUMAKER_CLK_CLKSEL0_USBSEL_HIRC48M 0x00000000
#define NUMAKER_CLK_CLKSEL0_USBSEL_PLL 0x00000100
#define NUMAKER_CLK_CLKSEL0_EADC0SEL_PLL 0x00000400
#define NUMAKER_CLK_CLKSEL0_EADC0SEL_HCLK 0x00000800
#define NUMAKER_CLK_CLKSEL0_EADC0SEL_HCLK0 0x00000800
#define NUMAKER_CLK_CLKSEL0_EADC0SEL_HIRC 0x00000C00
#define NUMAKER_CLK_CLKSEL0_CANFD0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL0_CANFD0SEL_HIRC48M 0x01000000
#define NUMAKER_CLK_CLKSEL0_CANFD0SEL_HCLK 0x02000000
#define NUMAKER_CLK_CLKSEL0_CANFD0SEL_HCLK0 0x02000000
#define NUMAKER_CLK_CLKSEL0_CANFD0SEL_HIRC 0x03000000
#define NUMAKER_CLK_CLKSEL0_CANFD1SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL0_CANFD1SEL_HIRC48M 0x04000000
#define NUMAKER_CLK_CLKSEL0_CANFD1SEL_HCLK 0x08000000
#define NUMAKER_CLK_CLKSEL0_CANFD1SEL_HCLK0 0x08000000
#define NUMAKER_CLK_CLKSEL0_CANFD1SEL_HIRC 0x0C000000
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_LXT 0x00000010
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_HCLK 0x00000020
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_HCLK0 0x00000020
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_HIRC 0x00000030
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_LIRC 0x00000040
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_HIRC48M 0x00000050
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_PLL 0x00000060
#define NUMAKER_CLK_CLKSEL1_CLKOSEL_MIRC 0x00000070
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_LXT 0x00000100
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_PCLK0 0x00000200
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_EXT 0x00000300
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_LIRC 0x00000500
#define NUMAKER_CLK_CLKSEL1_TMR0SEL_HIRC 0x00000700
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_LXT 0x00001000
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_PCLK0 0x00002000
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_EXT 0x00003000
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_LIRC 0x00005000
#define NUMAKER_CLK_CLKSEL1_TMR1SEL_HIRC 0x00007000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_LXT 0x00010000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_PCLK1 0x00020000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_EXT 0x00030000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_LIRC 0x00050000
#define NUMAKER_CLK_CLKSEL1_TMR2SEL_HIRC 0x00070000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_LXT 0x00100000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_PCLK1 0x00200000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_EXT 0x00300000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_LIRC 0x00500000
#define NUMAKER_CLK_CLKSEL1_TMR3SEL_HIRC 0x00700000
#define NUMAKER_CLK_CLKSEL1_WWDTSEL_HCLK_DIV2048 0x80000000
#define NUMAKER_CLK_CLKSEL1_WWDTSEL_HCLK0_DIV2048 0x80000000
#define NUMAKER_CLK_CLKSEL1_WWDTSEL_LIRC 0xC0000000
#define NUMAKER_CLK_CLKSEL2_EPWM0SEL_HCLK 0x00000000
#define NUMAKER_CLK_CLKSEL2_EPWM0SEL_HCLK0 0x00000000
#define NUMAKER_CLK_CLKSEL2_EPWM0SEL_PCLK0 0x00000001
#define NUMAKER_CLK_CLKSEL2_EPWM1SEL_HCLK 0x00000000
#define NUMAKER_CLK_CLKSEL2_EPWM1SEL_HCLK0 0x00000000
#define NUMAKER_CLK_CLKSEL2_EPWM1SEL_PCLK1 0x00000002
#define NUMAKER_CLK_CLKSEL2_QSPI0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL2_QSPI0SEL_PLL 0x00000004
#define NUMAKER_CLK_CLKSEL2_QSPI0SEL_PCLK0 0x00000008
#define NUMAKER_CLK_CLKSEL2_QSPI0SEL_HIRC 0x0000000C
#define NUMAKER_CLK_CLKSEL2_SPI0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL2_SPI0SEL_PLL 0x00000010
#define NUMAKER_CLK_CLKSEL2_SPI0SEL_PCLK1 0x00000020
#define NUMAKER_CLK_CLKSEL2_SPI0SEL_HIRC 0x00000030
#define NUMAKER_CLK_CLKSEL2_SPI0SEL_HIRC48M 0x00000040
#define NUMAKER_CLK_CLKSEL2_TKSEL_HIRC 0x00000000
#define NUMAKER_CLK_CLKSEL2_TKSEL_MIRC 0x00000080
#define NUMAKER_CLK_CLKSEL2_SPI1SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL2_SPI1SEL_PLL 0x00001000
#define NUMAKER_CLK_CLKSEL2_SPI1SEL_PCLK0 0x00002000
#define NUMAKER_CLK_CLKSEL2_SPI1SEL_HIRC 0x00003000
#define NUMAKER_CLK_CLKSEL2_SPI1SEL_HIRC48M 0x00004000
#define NUMAKER_CLK_CLKSEL3_PWM0SEL_HCLK 0x00000000
#define NUMAKER_CLK_CLKSEL3_PWM0SEL_HCLK0 0x00000000
#define NUMAKER_CLK_CLKSEL3_PWM0SEL_PCLK0 0x00000040
#define NUMAKER_CLK_CLKSEL3_PWM1SEL_HCLK 0x00000000
#define NUMAKER_CLK_CLKSEL3_PWM1SEL_HCLK0 0x00000000
#define NUMAKER_CLK_CLKSEL3_PWM1SEL_PCLK1 0x00000080
#define NUMAKER_CLK_CLKSEL3_SPI2SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL3_SPI2SEL_PLL 0x00000100
#define NUMAKER_CLK_CLKSEL3_SPI2SEL_PCLK1 0x00000200
#define NUMAKER_CLK_CLKSEL3_SPI2SEL_HIRC 0x00000300
#define NUMAKER_CLK_CLKSEL3_SPI2SEL_HIRC48M 0x00000400
#define NUMAKER_CLK_CLKSEL3_SPI3SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL3_SPI3SEL_PLL 0x00001000
#define NUMAKER_CLK_CLKSEL3_SPI3SEL_PCLK0 0x00002000
#define NUMAKER_CLK_CLKSEL3_SPI3SEL_HIRC 0x00003000
#define NUMAKER_CLK_CLKSEL3_SPI3SEL_HIRC48M 0x00004000
#define NUMAKER_CLK_CLKSEL4_UART0SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART0SEL_PLL 0x00000001
#define NUMAKER_CLK_CLKSEL4_UART0SEL_LXT 0x00000002
#define NUMAKER_CLK_CLKSEL4_UART0SEL_HIRC 0x00000003
#define NUMAKER_CLK_CLKSEL4_UART0SEL_MIRC 0x00000004
#define NUMAKER_CLK_CLKSEL4_UART0SEL_HIRC48M 0x00000005
#define NUMAKER_CLK_CLKSEL4_UART1SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART1SEL_PLL 0x00000010
#define NUMAKER_CLK_CLKSEL4_UART1SEL_LXT 0x00000020
#define NUMAKER_CLK_CLKSEL4_UART1SEL_HIRC 0x00000030
#define NUMAKER_CLK_CLKSEL4_UART1SEL_MIRC 0x00000040
#define NUMAKER_CLK_CLKSEL4_UART1SEL_HIRC48M 0x00000050
#define NUMAKER_CLK_CLKSEL4_UART2SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART2SEL_PLL 0x00000100
#define NUMAKER_CLK_CLKSEL4_UART2SEL_LXT 0x00000200
#define NUMAKER_CLK_CLKSEL4_UART2SEL_HIRC 0x00000300
#define NUMAKER_CLK_CLKSEL4_UART2SEL_MIRC 0x00000400
#define NUMAKER_CLK_CLKSEL4_UART2SEL_HIRC48M 0x00000500
#define NUMAKER_CLK_CLKSEL4_UART3SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART3SEL_PLL 0x00001000
#define NUMAKER_CLK_CLKSEL4_UART3SEL_LXT 0x00002000
#define NUMAKER_CLK_CLKSEL4_UART3SEL_HIRC 0x00003000
#define NUMAKER_CLK_CLKSEL4_UART3SEL_MIRC 0x00004000
#define NUMAKER_CLK_CLKSEL4_UART3SEL_HIRC48M 0x00005000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_PLL 0x00010000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_LXT 0x00020000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_HIRC 0x00030000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_MIRC 0x00040000
#define NUMAKER_CLK_CLKSEL4_UART4SEL_HIRC48M 0x00050000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_PLL 0x00100000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_LXT 0x00200000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_HIRC 0x00300000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_MIRC 0x00400000
#define NUMAKER_CLK_CLKSEL4_UART5SEL_HIRC48M 0x00500000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_PLL 0x01000000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_LXT 0x02000000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_HIRC 0x03000000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_MIRC 0x04000000
#define NUMAKER_CLK_CLKSEL4_UART6SEL_HIRC48M 0x05000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_HXT 0x00000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_PLL 0x10000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_LXT 0x20000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_HIRC 0x30000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_MIRC 0x40000000
#define NUMAKER_CLK_CLKSEL4_UART7SEL_HIRC48M 0x50000000
#define NUMAKER_CLK_CLKDIV0_HCLK(x) (((x) - 1UL) << (0))
#define NUMAKER_CLK_CLKDIV0_HCLK0(x) (((x) - 1UL) << (0))
#define NUMAKER_CLK_CLKDIV0_USB(x) (((x) - 1UL) << (4))
#define NUMAKER_CLK_CLKDIV0_UART0(x) (((x) - 1UL) << (8))
#define NUMAKER_CLK_CLKDIV0_UART1(x) (((x) - 1UL) << (12))
#define NUMAKER_CLK_CLKDIV0_EADC0(x) (((x) - 1UL) << (16))
#define NUMAKER_CLK_CLKDIV4_UART2(x) (((x) - 1UL) << (0))
#define NUMAKER_CLK_CLKDIV4_UART3(x) (((x) - 1UL) << (4))
#define NUMAKER_CLK_CLKDIV4_UART4(x) (((x) - 1UL) << (8))
#define NUMAKER_CLK_CLKDIV4_UART5(x) (((x) - 1UL) << (12))
#define NUMAKER_CLK_CLKDIV4_UART6(x) (((x) - 1UL) << (16))
#define NUMAKER_CLK_CLKDIV4_UART7(x) (((x) - 1UL) << (20))
#define NUMAKER_CLK_CLKDIV5_CANFD0(x) (((x) - 1UL) << (0))
#define NUMAKER_CLK_CLKDIV5_CANFD1(x) (((x) - 1UL) << (4))
#define NUMAKER_CLK_PCLKDIV_APB0DIV_DIV1 0x00000000
#define NUMAKER_CLK_PCLKDIV_APB0DIV_DIV2 0x00000001
#define NUMAKER_CLK_PCLKDIV_APB0DIV_DIV4 0x00000002
#define NUMAKER_CLK_PCLKDIV_APB0DIV_DIV8 0x00000003
#define NUMAKER_CLK_PCLKDIV_APB0DIV_DIV16 0x00000004
#define NUMAKER_CLK_PCLKDIV_APB1DIV_DIV1 0x00000000
#define NUMAKER_CLK_PCLKDIV_APB1DIV_DIV2 0x00000010
#define NUMAKER_CLK_PCLKDIV_APB1DIV_DIV4 0x00000020
#define NUMAKER_CLK_PCLKDIV_APB1DIV_DIV8 0x00000030
#define NUMAKER_CLK_PCLKDIV_APB1DIV_DIV16 0x00000040
#define NUMAKER_PDMA0_MODULE 0x00000001
#define NUMAKER_ISP_MODULE 0x00000002
#define NUMAKER_EBI_MODULE 0x00000003
#define NUMAKER_ST_MODULE 0x018C0004
#define NUMAKER_CRC_MODULE 0x00000007
#define NUMAKER_CRPT_MODULE 0x0000000C
#define NUMAKER_KS_MODULE 0x0000000D
#define NUMAKER_USBH_MODULE 0x00A01090
#define NUMAKER_GPA_MODULE 0x00000018
#define NUMAKER_GPB_MODULE 0x00000019
#define NUMAKER_GPC_MODULE 0x0000001A
#define NUMAKER_GPD_MODULE 0x0000001B
#define NUMAKER_GPE_MODULE 0x0000001C
#define NUMAKER_GPF_MODULE 0x0000001D
#define NUMAKER_GPG_MODULE 0x0000001E
#define NUMAKER_GPH_MODULE 0x0000001F
#define NUMAKER_RTC_MODULE 0x20000001
#define NUMAKER_TMR0_MODULE 0x25A00002
#define NUMAKER_TMR1_MODULE 0x25B00003
#define NUMAKER_TMR2_MODULE 0x25C00004
#define NUMAKER_TMR3_MODULE 0x25D00005
#define NUMAKER_CLKO_MODULE 0x26100006
#define NUMAKER_ACMP01_MODULE 0x20000007
#define NUMAKER_I2C0_MODULE 0x20000008
#define NUMAKER_I2C1_MODULE 0x20000009
#define NUMAKER_I2C2_MODULE 0x2000000A
#define NUMAKER_I2C3_MODULE 0x2000000B
#define NUMAKER_QSPI0_MODULE 0x2908000C
#define NUMAKER_SPI0_MODULE 0x2990000D
#define NUMAKER_SPI1_MODULE 0x29B0000E
#define NUMAKER_SPI2_MODULE 0x2DA0000F
#define NUMAKER_UART0_MODULE 0x31801110
#define NUMAKER_UART1_MODULE 0x31901191
#define NUMAKER_UART2_MODULE 0x31A11012
#define NUMAKER_UART3_MODULE 0x31B11093
#define NUMAKER_UART4_MODULE 0x31C11114
#define NUMAKER_UART5_MODULE 0x31D11195
#define NUMAKER_UART6_MODULE 0x31E11216
#define NUMAKER_UART7_MODULE 0x31F11297
#define NUMAKER_OTG_MODULE 0x2000001A
#define NUMAKER_USBD_MODULE 0x20A0109B
#define NUMAKER_EADC0_MODULE 0x2128221C
#define NUMAKER_TRNG_MODULE 0x2000001F
#define NUMAKER_SPI3_MODULE 0x4DB00006
#define NUMAKER_USCI0_MODULE 0x40000008
#define NUMAKER_USCI1_MODULE 0x40000009
#define NUMAKER_WWDT_MODULE 0x4578000B
#define NUMAKER_DAC_MODULE 0x4000000C
#define NUMAKER_EPWM0_MODULE 0x48800010
#define NUMAKER_EPWM1_MODULE 0x48840011
#define NUMAKER_EQEI0_MODULE 0x40000016
#define NUMAKER_EQEI1_MODULE 0x40000017
#define NUMAKER_TK_MODULE 0x489C0019
#define NUMAKER_ECAP0_MODULE 0x4000001A
#define NUMAKER_ECAP1_MODULE 0x4000001B
#define NUMAKER_ACMP2_MODULE 0x60000007
#define NUMAKER_PWM0_MODULE 0x6C980008
#define NUMAKER_PWM1_MODULE 0x6C9C0009
#define NUMAKER_UTCPD0_MODULE 0x6000000F
#define NUMAKER_CANRAM0_MODULE 0x80000010
#define NUMAKER_CANRAM1_MODULE 0x80000011
#define NUMAKER_CANFD0_MODULE 0x81621014
#define NUMAKER_CANFD1_MODULE 0x816A1095
#define NUMAKER_HCLK1_MODULE 0x81B3101C
#define NUMAKER_LPPDMA0_MODULE 0xA0000000
#define NUMAKER_LPGPIO_MODULE 0xA0000001
#define NUMAKER_LPSRAM_MODULE 0xA0000002
#define NUMAKER_WDT_MODULE 0xB5600010
#define NUMAKER_LPSPI0_MODULE 0xB5080011
#define NUMAKER_LPI2C0_MODULE 0xA0000012
#define NUMAKER_LPUART0_MODULE 0xB5031113
#define NUMAKER_LPTMR0_MODULE 0xB5A00014
#define NUMAKER_LPTMR1_MODULE 0xB5B00015
#define NUMAKER_TTMR0_MODULE 0xB5100016
#define NUMAKER_TTMR1_MODULE 0xB5180017
#define NUMAKER_LPADC0_MODULE 0xB5431218
#define NUMAKER_OPA_MODULE 0xA000001B

#define NUMAKER_CLK_PMUCTL_PDMSEL_PD 0x00000000
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD0 0x00000000
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD1 0x00000001
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD2 0x00000002
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD3 0x00000003
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD4 0x00000004
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD5 0x00000005
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD0 0x00000008
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD1 0x00000009
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD2 0x0000000A
#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD0 0x0000000C
#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD1 0x0000000D

#endif
