config SOC_SERIES_M032
    bool
    select ARCH_ARM_CORTEX_M0
    select SOC_FAMILY_NUMICRO
    select RT_USING_COMPONENTS_INIT
    select RT_USING_USER_MAIN
    default y

    config BSP_USE_STDDRIVER_SOURCE
        bool "Build StdDriver source"
        default n

    menuconfig BSP_USING_PDMA
        bool "Enable Peripheral Direct Memory Access Controller(PDMA)"
        default y

        if BSP_USING_PDMA
            config  NU_PDMA_MEMFUN_ACTOR_MAX
            int "Specify maximum mem actor for memfun"
            range 1 4
            default 4

            config  NU_PDMA_SGTBL_POOL_SIZE
            int "Specify maximum scatter-gather pool size"
            range 1 32
            default 16
        endif

    config BSP_USING_FMC
        bool "Enable Flash Memory Controller(FMC)"
        select RT_USING_FAL
        default n

    config BSP_USING_GPIO
        bool "Enable General Purpose I/O(GPIO)"
        select RT_USING_PIN
        default y

    menuconfig BSP_USING_CLK
        bool "Enable Clock Controller(CLK)"
        select RT_USING_PM
        select BSP_USING_TMR
        default y
        help
            Choose this option if you need CLK/PM function.
            Notice: Enable the option will hold timer3 resource

        if BSP_USING_CLK
            config NU_CLK_INVOKE_WKTMR
            bool "Enable SPD1 and DPD mode wakeup timer. (About 6.6 Secs)"
            default y
        endif

    menuconfig BSP_USING_RTC
        bool "Enable Real Time Clock(RTC)"
        select RT_USING_RTC

        config NU_RTC_SUPPORT_IO_RW
            bool "Support device RW entry"
            depends on BSP_USING_RTC && RT_USING_RTC

        config NU_RTC_SUPPORT_MSH_CMD
            bool "Support module shell command"
            depends on BSP_USING_RTC && RT_USING_RTC

    menuconfig BSP_USING_ADC
        bool "Enable Enhanced Analog-to-Digital Converter(ADC)"
        select RT_USING_ADC

        if BSP_USING_ADC
            config BSP_USING_ADC0
                bool "Enable ADC0"
        endif

    menuconfig BSP_USING_TMR
        bool "Enable Timer Controller(TIMER)"

        config BSP_USING_TIMER
            bool

        config BSP_USING_TIMER_CAPTURE
            bool

        config BSP_USING_TMR0
            bool "Enable TIMER0"
            depends on BSP_USING_TMR

        if BSP_USING_TMR0
            choice
                prompt "Select TIMER0 function mode"

                config BSP_USING_TIMER0
                    select BSP_USING_TIMER
                    select RT_USING_HWTIMER
                    bool "TIMER"
                help
                    Choose this option if you need TIMER function mode.

                config BSP_USING_TIMER0_CAPTURE
                    select BSP_USING_TIMER_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    bool "TIMER CAPTURE"
                help
                    Choose this option if you need CAPTURE function mode.

            endchoice
        endif

        config BSP_USING_TMR1
            bool "Enable TIMER1"
            depends on BSP_USING_TMR

        if BSP_USING_TMR1
            choice
                prompt "Select TIMER1 function mode"

                config BSP_USING_TIMER1
                    select BSP_USING_TIMER
                    select RT_USING_HWTIMER
                    bool "TIMER"
                    help
                    Choose this option if you need TIMER function mode.

                config BSP_USING_TIMER1_CAPTURE
                    select BSP_USING_TIMER_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    bool "TIMER CAPTURE"
                help
                    Choose this option if you need CAPTURE function mode.
            endchoice
         endif

        config BSP_USING_TMR2
            bool "Enable TIMER2"
            depends on BSP_USING_TMR

         if BSP_USING_TMR2
            choice
                prompt "Select TIMER2 function mode"

                config BSP_USING_TIMER2
                    select BSP_USING_TIMER
                    select RT_USING_HWTIMER
                    bool "TIMER"
                help
                    Choose this option if you need TIMER function mode.

                config BSP_USING_TIMER2_CAPTURE
                    select BSP_USING_TIMER_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    bool "TIMER CAPTURE"
                help
                    Choose this option if you need CAPTURE function mode.
            endchoice
        endif

        config BSP_USING_TMR3
            bool "Enable TIMER3"
            depends on BSP_USING_TMR && !BSP_USING_CLK

        if BSP_USING_TMR3
            choice
                prompt "Select TIMER3 function mode"

                config BSP_USING_TIMER3
                    select BSP_USING_TIMER
                    select RT_USING_HWTIMER
                    bool "TIMER"
                    help
                        Choose this option if you need TIMER function mode.

                config BSP_USING_TIMER3_CAPTURE
                    select BSP_USING_TIMER_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    bool "TIMER CAPTURE"
                help
                    Choose this option if you need CAPTURE function mode.
            endchoice
        endif

    menuconfig BSP_USING_UART
        bool "Enable Universal Asynchronous Receiver/Transmitters(UART)"
        select RT_USING_SERIAL

        if BSP_USING_UART
            config BSP_USING_UART0
                bool "Enable UART0"

            config BSP_USING_UART0_TX_DMA
                bool "Enable UART0 TX DMA"
                depends on BSP_USING_UART0 && RT_SERIAL_USING_DMA

            config BSP_USING_UART0_RX_DMA
                bool "Enable UART0 RX DMA"
                depends on BSP_USING_UART0 && RT_SERIAL_USING_DMA

            config BSP_USING_UART1
                bool "Enable UART1"

            config BSP_USING_UART1_TX_DMA
                bool "Enable UART1 TX DMA"
                depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA

            config BSP_USING_UART1_RX_DMA
                bool "Enable UART1 RX DMA"
                depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA

            config BSP_USING_UART2
                bool "Enable UART2"

            config BSP_USING_UART2_TX_DMA
                bool "Enable UART2 TX DMA"
                depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA

            config BSP_USING_UART2_RX_DMA
                bool "Enable UART2 RX DMA"
                depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA

            config BSP_USING_UART3
                bool "Enable UART3"

            config BSP_USING_UART3_TX_DMA
                bool "Enable UART3 TX DMA"
                depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA

            config BSP_USING_UART3_RX_DMA
                bool "Enable UART3 RX DMA"
                depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA

            config BSP_USING_UART4
                bool "Enable UART4"

            config BSP_USING_UART4_TX_DMA
                bool "Enable UART4 TX DMA"
                depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA

            config BSP_USING_UART4_RX_DMA
                bool "Enable UART4 RX DMA"
                depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA

            config BSP_USING_UART5
                bool "Enable UART5"

            config BSP_USING_UART5_TX_DMA
                bool "Enable UART5 TX DMA"
                depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA

            config BSP_USING_UART5_RX_DMA
                bool "Enable UART5 RX DMA"
                depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA

            config BSP_USING_UART6
                bool "Enable UART6"

            config BSP_USING_UART6_TX_DMA
                bool "Enable UART6 TX DMA"
                depends on BSP_USING_UART6 && RT_SERIAL_USING_DMA

            config BSP_USING_UART6_RX_DMA
                bool "Enable UART6 RX DMA"
                depends on BSP_USING_UART6 && RT_SERIAL_USING_DMA

            config BSP_USING_UART7
                bool "Enable UART7"

            config BSP_USING_UART7_TX_DMA
                bool "Enable UART7 TX DMA"
                depends on BSP_USING_UART7 && RT_SERIAL_USING_DMA

            config BSP_USING_UART7_RX_DMA
                bool "Enable UART7 RX DMA"
                depends on BSP_USING_UART7 && RT_SERIAL_USING_DMA
       endif

    menuconfig BSP_USING_I2C
        bool "Enable I2C Serial Interface Controller(I2C)"
        select RT_USING_I2C

        if BSP_USING_I2C
            config BSP_USING_I2C0
                bool "Enable I2C0"

            config BSP_USING_I2C1
                bool "Enable I2C1"
        endif

    menuconfig BSP_USING_USCI
        bool "Enable Universal Serial Control Interface Controller(USCI)"

    if BSP_USING_USCI

        config BSP_USING_UUART
            bool

        config BSP_USING_USPI
            bool

        config BSP_USING_USPI_PDMA
            bool
            default n

        config BSP_USING_UI2C
            bool

        config BSP_USING_USCI0
            bool "Enable USCI0"

        if BSP_USING_USCI0
            choice
                prompt "Select USCI0 function mode"

                config BSP_USING_UUART0
                    select RT_USING_SERIAL
                    select BSP_USING_UUART
                    bool "UUART0"
                    help
                        Choose this option if you need UART function mode.

                config BSP_USING_UI2C0
                    select RT_USING_I2C
                    select BSP_USING_UI2C
                    bool "UI2C0"
                    help
                        Choose this option if you need I2C function mode.

                config BSP_USING_USPI0
                    select RT_USING_SPI
                    select BSP_USING_USPI
                    bool "USPI0"
                    help
                        Choose this option if you need SPI function mode.
            endchoice

            config BSP_USING_UUART0_TX_DMA
                bool "Enable UUART0 TX DMA"
                depends on BSP_USING_UUART0 && RT_SERIAL_USING_DMA

            config BSP_USING_UUART0_RX_DMA
                bool "Enable UUART0 RX DMA"
                depends on BSP_USING_UUART0 && RT_SERIAL_USING_DMA

            config BSP_USING_USPI0_PDMA
                bool "Use PDMA for data transferring"
                select BSP_USING_USPI_PDMA
                depends on BSP_USING_USPI0
        endif

        config BSP_USING_USCI1
            bool "Enable USCI1"

            if BSP_USING_USCI1
                choice
                    prompt "Select USCI1 function mode"

                    config BSP_USING_UUART1
                        select RT_USING_SERIAL
                        select BSP_USING_UUART
                        bool "UUART1"
                        help
                          Choose this option if you need UART function mode.

                    config BSP_USING_UI2C1
                        select RT_USING_I2C
                        select BSP_USING_UI2C
                        bool "UI2C1"
                        help
                          Choose this option if you need I2C function mode.

                     config BSP_USING_USPI1
                        select RT_USING_SPI
                        select BSP_USING_USPI
                        bool "USPI1"
                        help
                          Choose this option if you need SPI function mode.
                endchoice

                config BSP_USING_UUART1_TX_DMA
                    bool "Enable UUART1 TX DMA"
                    depends on BSP_USING_UUART1 && RT_SERIAL_USING_DMA

                config BSP_USING_UUART1_RX_DMA
                    bool "Enable UUART1 RX DMA"
                    depends on BSP_USING_UUART1 && RT_SERIAL_USING_DMA

                config BSP_USING_USPI1_PDMA
                    bool "Use PDMA for data transferring"
                    select BSP_USING_USPI_PDMA
                    depends on BSP_USING_USPI1
            endif

    endif

    menuconfig BSP_USING_BPWM
        bool "Enable Basic PWM Generator and Capture Timer(BPWM)"
        select RT_USING_PWM

        if BSP_USING_BPWM

            config BSP_USING_BPWM_CAPTURE
                bool

            choice
                prompt "Select BPWM0 function mode"
                config BSP_USING_BPWM0
                    select RT_USING_PWM
                    bool "Enable BPWM0"
                    help
                        Choose this option if you need PWM function mode.

                config BSP_USING_BPWM0_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    select BSP_USING_BPWM_CAPTURE
                    bool "Enable BPWM0_CAPTURE"
                    help
                        Choose this option if you need PWM capture function mode.
            endchoice

            if BSP_USING_BPWM0_CAPTURE
                config BSP_USING_BPWM0_CAPTURE_CHMSK
                    hex "Specify channel mask for BPWM0_CAP channel."
                    range 0 0x3F
                    default 0
            endif

            choice
                prompt "Select BPWM1 function mode"
                config BSP_USING_BPWM1
                    select RT_USING_PWM
                    bool "Enable BPWM1"
                    help
                        Choose this option if you need PWM function mode.

                config BSP_USING_BPWM1_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    select BSP_USING_BPWM_CAPTURE
                    bool "Enable BPWM1_CAPTURE"
                    help
                        Choose this option if you need PWM capture function mode.
            endchoice

            if BSP_USING_BPWM1_CAPTURE
                config BSP_USING_BPWM1_CAPTURE_CHMSK
                   hex "Specify channel mask for BPWM1_CAP channel."
                   range 0 0x3F
                   default 0
            endif

        endif

    menuconfig BSP_USING_PWM
        bool "Enable PWM Generator and Capture Timer(PWM)"

        if BSP_USING_PWM

            config BSP_USING_PWM_CAPTURE
                bool

            choice
                prompt "Select PWM0 function mode"
                config BSP_USING_PWM0
                    select RT_USING_PWM
                    bool "Enable PWM0"
                    help
                        Choose this option if you need PWM function mode.

                config BSP_USING_PWM0_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    select BSP_USING_PWM_CAPTURE
                    bool "Enable PWM0_CAPTURE"
                    help
                        Choose this option if you need PWM capture function mode.
            endchoice

            if BSP_USING_PWM0_CAPTURE
                config BSP_USING_PWM0_CAPTURE_CHMSK
                    hex "Specify channel mask for PWM0_CAP channel."
                    range 0 0x3F
                    default 0
            endif

            choice
                prompt "Select PWM1 function mode"
                config BSP_USING_PWM1
                    select RT_USING_PWM
                    bool "Enable PWM1"
                    help
                        Choose this option if you need PWM function mode.

                config BSP_USING_PWM1_CAPTURE
                    select RT_USING_INPUT_CAPTURE
                    select BSP_USING_PWM_CAPTURE
                    bool "Enable PWM1_CAPTURE"
                    help
                        Choose this option if you need PWM capture function mode.
            endchoice

            if BSP_USING_PWM1_CAPTURE
                config BSP_USING_PWM1_CAPTURE_CHMSK
                   hex "Specify channel mask for PWM1_CAP channel."
                   range 0 0x3F
                   default 0
            endif

       endif

    menuconfig BSP_USING_SPI
       bool "Enable Serial Peripheral Interface(SPI)"
       select RT_USING_SPI

       if BSP_USING_SPI
            config BSP_USING_SPI_PDMA
            bool
            default n

            config BSP_USING_SPII2S
            bool
            default n

            choice
                prompt "Select SPI0 function mode"
                config BSP_USING_SPI0_NONE
                bool "NONE"
                help
                    Choose this option if you need not SPI0.

                config BSP_USING_SPI0
                bool "Enable SPI0"
                help
                    Choose this option if you need SPI function mode.

                config BSP_USING_SPII2S0
                    select RT_USING_AUDIO
                    select BSP_USING_SPII2S
                    bool "Enable SPII2S0"
                    help
                      Choose this option if you need SPII2S function mode.
            endchoice

            if BSP_USING_SPI0
                   config BSP_USING_SPI0_PDMA
                       bool "Enable PDMA for SPI0"
                       select BSP_USING_SPI_PDMA
                       depends on BSP_USING_SPI0
            endif

         endif

    menuconfig BSP_USING_QSPI
        bool "Enable Quad Serial Peripheral Interface(QSPI)"
        select RT_USING_SPI
        select RT_USING_QSPI
        select BSP_USING_SPI

        if BSP_USING_QSPI
           config BSP_USING_QSPI0
               bool "Enable QSPI0"

           config BSP_USING_QSPI0_PDMA
                bool "Enable PDMA for QSPI0"
                select BSP_USING_SPI_PDMA
                depends on BSP_USING_QSPI0
        endif

    menuconfig BSP_USING_CRC
        bool "Enable Cyclic Redundancy Check Generator(CRC)"
        select BSP_USING_CRYPTO
        select RT_USING_HWCRYPTO
        select RT_HWCRYPTO_USING_CRC
        select RT_HWCRYPTO_USING_CRC_07
        select RT_HWCRYPTO_USING_CRC_8005
        select RT_HWCRYPTO_USING_CRC_1021
        select RT_HWCRYPTO_USING_CRC_04C11DB7

        if BSP_USING_CRC
            config NU_CRC_USE_PDMA
            bool "Use PDMA for data transferring."
            select BSP_USING_PDMA
            default y
        endif

    menuconfig BSP_USING_SOFT_I2C
        bool "Enable SOFT I2C"

        if BSP_USING_SOFT_I2C
            config BSP_USING_SOFT_I2C0
            bool "Enable SOFT I2C0"
            select RT_USING_I2C
            select RT_USING_I2C_BITOPS
            default n

            if BSP_USING_SOFT_I2C0
                config BSP_SOFT_I2C0_SCL_PIN
                hex "Specify the pin index of SCL of SOFT I2C0"
                range 0 0x7F
                default 0x18

                config BSP_SOFT_I2C0_SDA_PIN
                hex "Specify the pin index of SDA of SOFT I2C0"
                range 0 0x7F
                default 0x17
            endif

            config BSP_USING_SOFT_I2C1
            bool "Enable SOFT I2C1"
            select RT_USING_I2C
            select RT_USING_I2C_BITOPS
            default n

            if BSP_USING_SOFT_I2C1
                config BSP_SOFT_I2C1_SCL_PIN
                hex "Specify the pin index of SCL of SOFT I2C1"
                range 0 0x7F
                default 0x0B

                config BSP_SOFT_I2C1_SDA_PIN
                hex "Specify the pin index of SDA of SOFT I2C1"
                range 0 0x7F
                default 0x0A
            endif
        endif

    config BSP_USING_WDT
        bool "Enable Watchdog Timer(WDT)"
        select RT_USING_WDT
        default y

    config BSP_USING_EBI
        bool "Enable External Bus Interface(EBI)"
        default n

    config BSP_USING_USBD
        bool "Enable Full-Speed USB Device Controller(USBD)"
        select RT_USING_USB_DEVICE