mainmenu "RT-Thread Configuration"

config $BSP_DIR
    string
    option env="BSP_ROOT"
    default "."

config $RTT_DIR
    string
    option env="RTT_ROOT"
    default "../.."

config $PKGS_DIR
    string
    option env="PKGS_ROOT"
    default "packages"

source "$RTT_DIR/Kconfig"
source "$PKGS_DIR/Kconfig"

config SOC_IMXRT1052
    bool 
    select ARCH_ARM_CORTEX_M7
    default y
    
config BOARD_USING_HYPERFLASH
    bool
    default n
config BOARD_USING_QSPIFLASH
    bool
    default n

# RT1050 board select!
choice
    prompt "RT1050 Board select"
    default BOARD_RT1050_EVK
    config BOARD_RT1050_EVK
        bool "RT1050_EVK"
        select BOARD_USING_HYPERFLASH
    config BOARD_RT1050_FIRE
        bool "RT1050_FIRE"
        select BOARD_USING_QSPIFLASH
    config BOARD_RT1050_ShareBoard
        bool "RT1050_ShareBoard"
        select BOARD_USING_QSPIFLASH
    config BOARD_RT1050_ATK
        bool "RT1050_ATK"
        select BOARD_USING_QSPIFLASH
    config BOARD_RT1050_SeeedStudio
        bool "RT1050_SeeedStudio"
        select BOARD_USING_HYPERFLASH
endchoice

menu "RT1050 Bsp Config" 

menu "Select uart drivers"
    config RT_USING_UART1
        bool "Using uart1"
        select RT_USING_SERIAL
        default y 
    config RT_USING_UART2
        bool "Using uart2"
        select RT_USING_SERIAL
        default n 
    config RT_USING_UART3
        bool "Using uart3"
        select RT_USING_SERIAL
        default n 
if !BOARD_RT1050_SeeedStudio
    config RT_USING_UART4
        bool "Using uart4"
        select RT_USING_SERIAL
        default n 
    config RT_USING_UART5
        bool "Using uart5"
        select RT_USING_SERIAL
        default n 
    config RT_USING_UART6
        bool "Using uart6"
        select RT_USING_SERIAL
        default n 
endif
if !BOARD_RT1050_ATK && !BOARD_RT1050_SeeedStudio
    config RT_USING_UART7
        bool "Using uart7"
        select RT_USING_SERIAL
        default n 
endif
    config RT_USING_UART8
        bool "Using uart8"
        select RT_USING_SERIAL
        default n 
endmenu

menu "Select spi bus and dev drivers"
    choice 
        prompt "SPI bus clock source"
        default LPSPI_CLK_SOURCE_FROM_PLL3PFD1

        config LPSPI_CLK_SOURCE_FROM_PLL3PFD1
            bool "PLL3PFD1"
        config LPSPI_CLK_SOURCE_FROM_PLL3PFD0
            bool "PLL3PFD0"
        config LPSPI_CLK_SOURCE_FROM_PLL2
            bool "PLL2"
        config LPSPI_CLK_SOURCE_FROM_PLL2PFD2
            bool "PLL2PFD2"
    endchoice
    config LPSPI_CLK_SOURCE
        int
        default 0 if LPSPI_CLK_SOURCE_FROM_PLL3PFD1
        default 1 if LPSPI_CLK_SOURCE_FROM_PLL3PFD0
        default 2 if LPSPI_CLK_SOURCE_FROM_PLL2
        default 3 if LPSPI_CLK_SOURCE_FROM_PLL2PFD2

    config LPSPI_CLK_SOURCE_DIVIDER
        int "SPI bus clock source divider"
        range 1 8
        default 8
if !BOARD_RT1050_SeeedStudio
    config RT_USING_SPIBUS1
        bool "Using spi1 bus"
        select RT_USING_SPI
        default n 
    choice
        prompt "spi1 bus sck io choice"
        default LPSPI1_SCK_GPIO_1
        depends on RT_USING_SPIBUS1
        config LPSPI1_SCK_GPIO_1
            bool "GPIO_EMC_27"
        config LPSPI1_SCK_GPIO_2
            bool "GPIO_SD_B0_00"
    endchoice
    choice
        prompt "spi1 bus sdo io choice"
        default LPSPI1_SDO_GPIO_1
        depends on RT_USING_SPIBUS1
        config LPSPI1_SDO_GPIO_1
            bool "GPIO_EMC_28"
        config LPSPI1_SDO_GPIO_2
            bool "GPIO_SD_B0_02"
    endchoice
    choice
        prompt "spi1 bus sdi io choice"
        default LPSPI1_SDI_GPIO_1
        depends on RT_USING_SPIBUS1
        config LPSPI1_SDI_GPIO_1
            bool "GPIO_EMC_29"
        config LPSPI1_SDI_GPIO_2
            bool "GPIO_SD_B0_03"
    endchoice

    config RT_USING_SPIBUS2
        bool "Using spi2 bus"
        select RT_USING_SPI
        default n 
    choice
        prompt "spi2 bus sck io choice"
        default LPSPI2_SCK_GPIO_1
        depends on RT_USING_SPIBUS2
        config LPSPI2_SCK_GPIO_1
            bool "GPIO_SD_B1_07"
        config LPSPI2_SCK_GPIO_2
            bool "GPIO_EMC_00"
    endchoice
    choice
        prompt "spi2 bus sdo io choice"
        default LPSPI2_SDO_GPIO_1
        depends on RT_USING_SPIBUS2
        config LPSPI2_SDO_GPIO_1
            bool "GPIO_SD_B1_08"
        config LPSPI2_SDO_GPIO_2
            bool "GPIO_EMC_02"
    endchoice
    choice
        prompt "spi2 bus sdi io choice"
        default LPSPI2_SDI_GPIO_1
        depends on RT_USING_SPIBUS2
        config LPSPI2_SDI_GPIO_1
            bool "GPIO_SD_B1_09"
        config LPSPI2_SDI_GPIO_2
            bool "GPIO_EMC_03"
    endchoice
endif
    config RT_USING_SPIBUS3
        bool "Using spi3 bus"
        select RT_USING_SPI
        default n 
    choice
        prompt "spi3 bus sck io choice"
        default LPSPI3_SCK_GPIO_1
        depends on RT_USING_SPIBUS3
        config LPSPI3_SCK_GPIO_1
            bool "GPIO_AD_B1_15"
        config LPSPI3_SCK_GPIO_2
            bool "GPIO_AD_B0_00"
            depends on !BOARD_RT1050_SeeedStudio
    endchoice
    choice
        prompt "spi3 bus sdo io choice"
        default LPSPI3_SDO_GPIO_1
        depends on RT_USING_SPIBUS3
        config LPSPI3_SDO_GPIO_1
            bool "GPIO_AD_B1_14"
        config LPSPI3_SDO_GPIO_2
            bool "GPIO_AD_B0_01"
            depends on !BOARD_RT1050_SeeedStudio
    endchoice
    choice
        prompt "spi3 bus sdi io choice"
        default LPSPI3_SDI_GPIO_1
        depends on RT_USING_SPIBUS3
        config LPSPI3_SDI_GPIO_1
            bool "GPIO_AD_B1_13"
        config LPSPI3_SDI_GPIO_2
            bool "GPIO_AD_B0_02"
            depends on !BOARD_RT1050_SeeedStudio
    endchoice

    config RT_USING_SPIBUS4
        bool "Using spi4 bus"
        select RT_USING_SPI
        default y 
    choice
        prompt "spi4 bus sck io choice"
        default LPSPI4_SCK_GPIO_1
        depends on RT_USING_SPIBUS4
        config LPSPI4_SCK_GPIO_1
            bool "GPIO_B0_03"
            depends on !BOARD_RT1050_SeeedStudio
        config LPSPI4_SCK_GPIO_2
            bool "GPIO_B1_07"
    endchoice
    choice
        prompt "spi4 bus sdo io choice"
        default LPSPI4_SDO_GPIO_1
        depends on RT_USING_SPIBUS4
        config LPSPI4_SDO_GPIO_1
            bool "GPIO_B0_02"
            depends on !BOARD_RT1050_SeeedStudio
        config LPSPI4_SDO_GPIO_2
            bool "GPIO_B1_06"
    endchoice
    choice
        prompt "spi4 bus sdi io choice"
        default LPSPI4_SDI_GPIO_1
        depends on RT_USING_SPIBUS4
        config LPSPI4_SDI_GPIO_1
            bool "GPIO_B0_01"
            depends on !BOARD_RT1050_SeeedStudio
        config LPSPI4_SDI_GPIO_2
            bool "GPIO_B1_05"
    endchoice

    config RT_USING_SPI_FLASH
        bool "Using spi flash with sfud"
        default n 
        select RT_USING_SPI
        select RT_USING_SFUD
        select RT_USING_PIN
    choice 
        prompt "SPI flash using spibus"
        default SPI_FLASH_USING_SPIBUS4
        depends on RT_USING_SPI_FLASH

        config SPI_FLASH_USING_SPIBUS1
            bool "spi1"
            select RT_USING_SPIBUS1
        config SPI_FLASH_USING_SPIBUS2
            bool "spi2"
            select RT_USING_SPIBUS2
        config SPI_FLASH_USING_SPIBUS3
            bool "spi3"
            select RT_USING_SPIBUS3
        config SPI_FLASH_USING_SPIBUS4
            bool "spi4"
            select RT_USING_SPIBUS4
    endchoice
    config SPI_FLASH_USING_SPIBUS_NAME
        string
        default "spi1" if SPI_FLASH_USING_SPIBUS1
        default "spi2" if SPI_FLASH_USING_SPIBUS2
        default "spi3" if SPI_FLASH_USING_SPIBUS3
        default "spi4" if SPI_FLASH_USING_SPIBUS4

    config SPI_FLASH_NAME
        string "SPI flash device name"
        default "flash0" 
        depends on RT_USING_SPI_FLASH

    config SPI_FLASH_USING_CS_PIN
        int "SPI flash cs pin index"
        default 79 
        range 1 127
        depends on RT_USING_SPI_FLASH
endmenu

menu "Select iic bus drivers"

    config RT_USING_HW_I2C1
        bool "using hardware i2c1"
        select RT_USING_I2C
        default y 
    choice
        prompt "i2c1 bus badurate choice"
        default HW_I2C1_BADURATE_100kHZ
        depends on RT_USING_HW_I2C1
        config HW_I2C1_BADURATE_100kHZ
            bool "100kHZ"
        config HW_I2C1_BADURATE_400kHZ
            bool "400kHZ"
    endchoice
if !BOARD_RT1050_SeeedStudio
    config RT_USING_HW_I2C2
        bool "using hardware i2c2"
        select RT_USING_I2C
        default n 
    choice
        prompt "i2c2 bus badurate choice"
        default HW_I2C2_BADURATE_100kHZ
        depends on RT_USING_HW_I2C2
        config HW_I2C2_BADURATE_100kHZ
            bool "100kHZ"
        config HW_I2C2_BADURATE_400kHZ
            bool "400kHZ"
    endchoice
endif
    config RT_USING_HW_I2C3
        bool "using hardware i2c3"
        select RT_USING_I2C
        default n 
    choice
        prompt "i2c3 bus badurate choice"
        default HW_I2C3_BADURATE_100kHZ
        depends on RT_USING_HW_I2C3
        config HW_I2C3_BADURATE_100kHZ
            bool "100kHZ"
        config HW_I2C3_BADURATE_400kHZ
            bool "400kHZ"
    endchoice
	
    config RT_USING_HW_I2C4
        bool "using hardware i2c4"
        select RT_USING_I2C
        default n 
    choice
        prompt "i2c4 bus badurate choice"
        default HW_I2C4_BADURATE_100kHZ
        depends on RT_USING_HW_I2C4
        config HW_I2C4_BADURATE_100kHZ
            bool "100kHZ"
        config HW_I2C4_BADURATE_400kHZ
            bool "400kHZ"
    endchoice

endmenu

menu "Select lcd driver"
    if RT_USING_LCD && BOARD_RT1050_EVK
    comment "Notice: Evk Board para: 480*272 4 4 8 2 40 10 106 45" 
    endif

    if RT_USING_LCD &&  BOARD_RT1050_ShareBoard 
    comment "Notice: ShareBoard Board para: 800*480 4 4 8 2 40 10 58 45" 
    endif	
	
    if RT_USING_LCD && BOARD_RT1050_FIRE 
    comment "Notice: Fire Board para: 800*480 4 4 8 2 40 10 58 45" 
    endif
	
    if RT_USING_LCD && BOARD_RT1050_ATK
    comment "Notice: ATK Board para: 480*272 4 4 8 2 40 10 109 45" 
    endif

    if RT_USING_LCD && BOARD_RT1050_SeeedStudio
    comment "Notice: SeeedStudio Board para: 480*272 4 4 8 2 40 10 127 45" 
    endif
    
    config RT_USING_LCD
        bool "Using lcd"
        default n 

    config LCD_WIDTH
        int "Width pixel num"
        default 480 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 800 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_HEIGHT
        int "Height pixel num" 
        default 272 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 480 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_HFP
        int "HFP"
        default 4 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 4 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_VFP
        int "VFP"
        default 4 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 4 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_HBP
        int "HBP"
        default 8 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 8 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_VBP
        int "VBP"
        default 2 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 2 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_HSW
        int "HSW"
        default 40 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 40 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD
    config LCD_VSW
        int "VSW"
        default 10 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 10 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD 
    config LCD_BL_PIN
        int "Backlight pin index"
        default 127 if BOARD_RT1050_SeeedStudio
        default 109 if BOARD_RT1050_ATK
        default 106 if BOARD_RT1050_EVK
        default 58  if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD 
    config LCD_RST_PIN
        int "Reset pin index"
        default 45 if (BOARD_RT1050_EVK  || BOARD_RT1050_ATK || BOARD_RT1050_SeeedStudio)
        default 45 if (BOARD_RT1050_FIRE || BOARD_RT1050_ShareBoard)
        depends on RT_USING_LCD 
endmenu

#menu "Select SDRAM driver"
    config RT_USING_SDRAM
        bool "Using sdram"
        default y 
#endmenu

#menu "Select RTC driver"
    config RT_USING_RTC_HP
        bool "Using hp rtc"
        select RT_USING_RTC
        default n 
#endmenu

if RT_USING_USB_DEVICE
    choice
        prompt "select usb device controller"
        default RT_USING_EHCI0_AS_DEVICE

        config RT_USING_EHCI0_AS_DEVICE
            bool "set EHCI0 as device"
        config RT_USING_EHCI1_AS_DEVICE
            bool "set EHCI1 as device"
    endchoice
endif

endmenu
