menu "Hardware Drivers Config"

    menu "Onboard Peripheral Drivers"

        menuconfig BSP_USING_FS
            bool "Enable filesystem"
            select RT_USING_DFS
            default n
            if BSP_USING_FS
                config BSP_USING_ONCHIP_FS
                    bool "Enable ONCHIP filesystem"
                    select RT_USING_FAL
                    select RT_USING_DFS_ELMFAT
                    select RT_USING_MTD_NOR
                    select BSP_USING_ONCHIP_FLASH
                    default n

                menuconfig BSP_USING_SDCARD_FS
                    bool "Enable SDCARD filesystem"
                    select BSP_USING_SDHI
                    select BSP_USING_SDHI1
                    select RT_USING_DFS_ELMFAT
                    default n
                    
                    if  BSP_USING_SDCARD_FS

                        config SDHI_USING_CD
                            bool "enable RA_SDHI_CD_PIN"
                            default y

                        config RA_SDHI_CD_PIN
                            string "SD Card hot plug detection pin"
                            default "p503"
                    endif
                
                config BSP_USING_SPICARD_FS
                    bool "Enable SPI FLASH filesystem"
                    select BSP_USING_SCI
                    select BSP_USING_SCI2
                    select BSP_USING_SCI2_SPI
                    select RT_USING_SPI_MSD
                    select RT_USING_DFS_ELMFAT
                    default n
            endif

        menuconfig BSP_USING_LCD
            bool "Enable LCD"
            default n
            select BSP_USING_GPIO
            select BSP_USING_PWM
            select BSP_USING_PWM6
            if BSP_USING_LCD
                config BSP_USING_RGB565_LCD
                    bool "Enable RGB565 LCD"
                    default n
                config BSP_USING_MIPI_LCD
                    bool "Enable MIPI LCD"
                    default n
            endif


        menuconfig BSP_USING_LVGL
            bool "Enable LVGL for LCD"
            select PKG_USING_LVGL
            default n
            if BSP_USING_LVGL
                config BSP_USING_LCD_RGB
                    bool "Enable LVGL for LCD_RGB565"
                    select BSP_USING_LCD
                    default n
            endif

    endmenu

    menu "On-chip Peripheral Drivers"

        rsource "../../libraries/HAL_Drivers/drivers/Kconfig"

        menuconfig BSP_USING_ADC
            bool "Enable ADC"
            default n
            select RT_USING_ADC
            if BSP_USING_ADC
                config BSP_USING_ADC0
                    bool "Enable ADC0"
                    default n
            endif
        menuconfig BSP_USING_DAC
            bool "Enable DAC"
            default n
            select RT_USING_DAC
            if BSP_USING_DAC
                config BSP_USING_DAC0
                    bool "Enable DAC0"
                    default n
            endif

        menuconfig BSP_USING_UART
            bool "Enable UART"
            default y
            select RT_USING_SERIAL
            select RT_USING_SERIAL_V2
            if BSP_USING_UART
                menuconfig BSP_USING_UART2
                    bool "Enable UART2"
                    default n
                    if BSP_USING_UART2
                        config BSP_UART2_RX_USING_DMA
                            bool "Enable UART2 RX DMA"
                            depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
                            default n

                        config BSP_UART2_TX_USING_DMA
                            bool "Enable UART2 TX DMA"
                            depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
                            default n

                        config BSP_UART2_RX_BUFSIZE
                            int "Set UART2 RX buffer size"
                            range 64 65535
                            depends on RT_USING_SERIAL_V2
                            default 256

                        config BSP_UART2_TX_BUFSIZE
                            int "Set UART2 TX buffer size"
                            range 0 65535
                            depends on RT_USING_SERIAL_V2
                            default 0
                    endif
                menuconfig BSP_USING_UART9
                    bool "Enable UART9"
                    default n
                    if BSP_USING_UART9
                        config BSP_UART9_RX_USING_DMA
                            bool "Enable UART9 RX DMA"
                            depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA
                            default n

                        config BSP_UART9_TX_USING_DMA
                            bool "Enable UART9 TX DMA"
                            depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA
                            default n

                        config BSP_UART9_RX_BUFSIZE
                            int "Set UART9 RX buffer size"
                            range 64 65535
                            depends on RT_USING_SERIAL_V2
                            default 256

                        config BSP_UART9_TX_BUFSIZE
                            int "Set UART9 TX buffer size"
                            range 0 65535
                            depends on RT_USING_SERIAL_V2
                            default 0
                    endif
            endif

        menuconfig BSP_USING_SCI
            bool "Enable SCI Controller"
            default n
            config BSP_USING_SCIn_SPI
                bool
                depends on BSP_USING_SCI
                select RT_USING_SPI
                default n

            config BSP_USING_SCIn_I2C
                bool
                depends on BSP_USING_SCI
                select RT_USING_I2C
                default n

            config BSP_USING_SCIn_UART
                bool
                depends on BSP_USING_SCI
                select RT_USING_SERIAL
                select RT_USING_SERIAL_V2
                default n

            if BSP_USING_SCI
                config BSP_USING_SCI0
                    bool "Enable SCI0"
                    default n
                    if BSP_USING_SCI0
                        choice BSP_SCI0_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI0_SPI
                        config BSP_USING_SCI0_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI0_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI0_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI0_UART
                            config BSP_SCI0_UART_RX_BUFSIZE
                                int "Set UART0 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI0_UART_TX_BUFSIZE
                                int "Set UART0 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI1
                    bool "Enable SCI1"
                    default n
                    if BSP_USING_SCI1
                        choice BSP_SCI1_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI1_SPI
                        config BSP_USING_SCI1_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI1_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI1_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI1_UART
                            config BSP_SCI1_UART_RX_BUFSIZE
                                int "Set UART1 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI1_UART_TX_BUFSIZE
                                int "Set UART1 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI2
                    bool "Enable SCI2"
                    default n
                    if BSP_USING_SCI2
                        choice BSP_SCI2_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI2_SPI
                        config BSP_USING_SCI2_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI2_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI2_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI2_UART
                            config BSP_SCI2_UART_RX_BUFSIZE
                                int "Set UART2 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI2_UART_TX_BUFSIZE
                                int "Set UART2 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI3
                    bool "Enable SCI3"
                    default n
                    if BSP_USING_SCI3
                        choice BSP_SCI3_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI3_SPI
                        config BSP_USING_SCI3_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI3_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI3_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI3_UART
                            config BSP_SCI3_UART_RX_BUFSIZE
                                int "Set UART3 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI3_UART_TX_BUFSIZE
                                int "Set UART3 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI4
                    bool "Enable SCI4"
                    default n
                    if BSP_USING_SCI4
                        choice BSP_SCI4_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI4_SPI
                        config BSP_USING_SCI4_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI4_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI4_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI4_UART
                            config BSP_SCI4_UART_RX_BUFSIZE
                                int "Set UART4 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI4_UART_TX_BUFSIZE
                                int "Set UART4 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI5
                    bool "Enable SCI5"
                    default n
                    if BSP_USING_SCI5
                        choice BSP_SCI5_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI5_SPI
                        config BSP_USING_SCI5_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI5_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI5_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI5_UART
                            config BSP_SCI5_UART_RX_BUFSIZE
                                int "Set UART5 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI5_UART_TX_BUFSIZE
                                int "Set UART5 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI6
                    bool "Enable SCI6"
                    default n
                    if BSP_USING_SCI6
                        choice BSP_SCI6_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI6_SPI
                        config BSP_USING_SCI6_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI6_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI6_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI6_UART
                            config BSP_SCI6_UART_RX_BUFSIZE
                                int "Set UART6 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI6_UART_TX_BUFSIZE
                                int "Set UART6 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI7
                    bool "Enable SCI7"
                    default n
                    if BSP_USING_SCI7
                        choice BSP_SCI7_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI7_SPI
                        config BSP_USING_SCI7_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI7_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI7_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI7_UART
                            config BSP_SCI7_UART_RX_BUFSIZE
                                int "Set UART7 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI7_UART_TX_BUFSIZE
                                int "Set UART7 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI8
                    bool "Enable SCI8"
                    default n
                    if BSP_USING_SCI8
                        choice BSP_SCI8_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI8_SPI
                        config BSP_USING_SCI8_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI8_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI8_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI8_UART
                            config BSP_SCI8_UART_RX_BUFSIZE
                                int "Set UART8 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI8_UART_TX_BUFSIZE
                                int "Set UART8 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
                config BSP_USING_SCI9
                    bool "Enable SCI9"
                    default n
                    if BSP_USING_SCI9
                        choice BSP_SCI9_SEL
                        prompt "choice sci mode"
                        default BSP_USING_SCI9_SPI
                        config BSP_USING_SCI9_SPI
                            select BSP_USING_SCIn_SPI
                            bool "SPI mode"
                        config BSP_USING_SCI9_I2C
                            select BSP_USING_SCIn_I2C
                            bool "I2C mode"
                        config BSP_USING_SCI9_UART
                            select BSP_USING_SCIn_UART
                            bool "UART mode"
                        endchoice
                        if BSP_USING_SCI9_UART
                            config BSP_SCI9_UART_RX_BUFSIZE
                                int "Set UART9 RX buffer size"
                                range 64 65535
                                depends on RT_USING_SERIAL_V2
                                default 256

                            config BSP_SCI9_UART_TX_BUFSIZE
                                int "Set UART9 TX buffer size"
                                range 0 65535
                                depends on RT_USING_SERIAL_V2
                                default 0
                        endif
                    endif
            endif

        menuconfig BSP_USING_SPI
            bool "Enable SPI BUS"
            default n
            select RT_USING_SPI
            if BSP_USING_SPI 
                config BSP_USING_SPI0
                    bool "Enable SPI0 BUS"
                    default n
                config BSP_USING_SPI1
                    bool "Enable SPI1 BUS"
                    default n
            endif

        menuconfig BSP_USING_HW_I2C
            bool "Enable hardware I2C BUS"
            default n
            select RT_USING_I2C
            if BSP_USING_HW_I2C
                config BSP_USING_HW_I2C0
                    bool "Enable Hardware I2C0 BUS"
                    default n
                config BSP_USING_HW_I2C1
                    bool "Enable Hardware I2C1 BUS"
                    default n
            endif

        menuconfig BSP_USING_SDHI
            bool "Enable SDHI"
            default n
            select RT_USING_SDIO
            if BSP_USING_SDHI
                config BSP_USING_SDHI1
                    bool "Enable SDHI1"
                    default n
                config BSP_USING_SDHI2
                    bool "Enable SDHI2"
                    default n
                config SDHI_USING_1_BIT
                    bool "Use 1-bit Mode(4-bit when disable)"
                    default y
        endif

        menuconfig BSP_USING_PWM
            bool "Enable PWM"
            default n
            select RT_USING_PWM
            if BSP_USING_PWM
                config BSP_USING_PWM6
                    bool "Enable GPT6 (16-Bits) output PWM"
                    default n
                config BSP_USING_PWM12
                    bool "Enable GPT12 (16-Bits) output PWM"
                    default n
            endif

        menuconfig BSP_USING_CAN
            bool "Enable CAN"
            default n
            select RT_USING_CAN
            if BSP_USING_CAN
                config BSP_USING_CAN0
                    bool "Enable CAN0"
                    default n
            endif
    
        config BSP_USING_G2D
            bool "Enable G2D"
            default n

        menuconfig BSP_USING_SDRAM
            bool "Enable SDRAM"
            if BSP_USING_SDRAM
                config BSP_USING_SDRAM_SIZE
                    hex "(HEX)SDRAM SIZE"
                    default 0x2000000
            endif

        config BSP_USING_ETH
            bool "Enable Ethernet"
            select RT_USING_SAL
            select RT_USING_LWIP
            select RT_USING_NETDEV
            default n

    endmenu

    menu "Board extended module Drivers"

        menuconfig BSP_USING_RW007
                bool "Enable RW007"
                default n
                select PKG_USING_RW007
                select BSP_USING_SPI
                select BSP_USING_SPI1
                select RT_USING_MEMPOOL
                select RW007_NOT_USE_EXAMPLE_DRIVERS

            if BSP_USING_RW007
                config RA_RW007_SPI_BUS_NAME
                    string "RW007 BUS NAME"
                    default "spi1"

                config RA_RW007_CS_PIN
                    hex "(HEX)CS pin index"
                    default 0x040D

                config RA_RW007_BOOT0_PIN
                    hex "(HEX)BOOT0 pin index (same as spi clk pin)"
                    default 0x040C

                config RA_RW007_BOOT1_PIN
                    hex "(HEX)BOOT1 pin index (same as spi cs pin)"
                    default 0x040D

                config RA_RW007_INT_BUSY_PIN
                    hex "(HEX)INT/BUSY pin index"
                    default 0x0800

                config RA_RW007_RST_PIN
                    hex "(HEX)RESET pin index"
                    default 0x0504
            endif

    endmenu

endmenu
