#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
comment "STM32 F4 configuration"

if ARCH_CHIP_STM32F4

choice
	prompt "STM32F4 Chip Selection"
	depends on ARCH_CHIP_STM32F4

config ARCH_CHIP_STM32F401CB
	bool "STM32F401CB"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401RB
	bool "STM32F401RB"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401VB
	bool "STM32F401VB"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401CC
	bool "STM32F401CC"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401RC
	bool "STM32F401RC"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401VC
	bool "STM32F401VC"
	select STM32_STM32F401xBC

config ARCH_CHIP_STM32F401CD
	bool "STM32F401CD"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F401RD
	bool "STM32F401RD"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F401VD
	bool "STM32F401VD"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F401CE
	bool "STM32F401CE"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F401RE
	bool "STM32F401RE"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F401VE
	bool "STM32F401VE"
	select STM32_STM32F401xDE

config ARCH_CHIP_STM32F410RB
	bool "STM32F410RB"
	select STM32_STM32F4XXX
	select STM32_STM32F410

config ARCH_CHIP_STM32F411CE
	bool "STM32F411CE"
	select STM32_STM32F4XXX
	select STM32_STM32F411

config ARCH_CHIP_STM32F411RE
	bool "STM32F411RE"
	select STM32_STM32F4XXX
	select STM32_STM32F411

config ARCH_CHIP_STM32F411VE
	bool "STM32F411VE"
	select STM32_STM32F4XXX
	select STM32_STM32F411

config ARCH_CHIP_STM32F412CE
	bool "STM32F412CE"
	select STM32_STM32F4XXX
	select STM32_STM32F412

config ARCH_CHIP_STM32F412ZG
	bool "STM32F412ZG"
	select STM32_STM32F4XXX
	select STM32_STM32F412

config ARCH_CHIP_STM32F405RG
	bool "STM32F405RG"
	select STM32_STM32F4XXX
	select STM32_STM32F405

config ARCH_CHIP_STM32F405VG
	bool "STM32F405VG"
	select STM32_STM32F4XXX
	select STM32_STM32F405

config ARCH_CHIP_STM32F405ZG
	bool "STM32F405ZG"
	select STM32_STM32F4XXX
	select STM32_STM32F405

config ARCH_CHIP_STM32F407VE
	bool "STM32F407VE"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F407VG
	bool "STM32F407VG"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F407ZE
	bool "STM32F407ZE"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F407ZG
	bool "STM32F407ZG"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F407IE
	bool "STM32F407IE"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F407IG
	bool "STM32F407IG"
	select STM32_STM32F4XXX
	select STM32_STM32F407

config ARCH_CHIP_STM32F427V
	bool "STM32F427V"
	select STM32_STM32F4XXX
	select STM32_STM32F427

config ARCH_CHIP_STM32F427Z
	bool "STM32F427Z"
	select STM32_STM32F4XXX
	select STM32_STM32F427

config ARCH_CHIP_STM32F427I
	bool "STM32F427I"
	select STM32_STM32F4XXX
	select STM32_STM32F427

config ARCH_CHIP_STM32F429V
	bool "STM32F429V"
	select STM32_STM32F4XXX
	select STM32_STM32F429

config ARCH_CHIP_STM32F429Z
	bool "STM32F429Z"
	select STM32_STM32F4XXX
	select STM32_STM32F429

config ARCH_CHIP_STM32F429I
	bool "STM32F429I"
	select STM32_STM32F4XXX
	select STM32_STM32F429

config ARCH_CHIP_STM32F429B
	bool "STM32F429B"
	select STM32_STM32F4XXX
	select STM32_STM32F429

config ARCH_CHIP_STM32F429N
	bool "STM32F429N"
	select STM32_STM32F4XXX
	select STM32_STM32F429

config ARCH_CHIP_STM32F446M
	bool "STM32F446M"
	select STM32_STM32F4XXX
	select STM32_STM32F446

config ARCH_CHIP_STM32F446R
	bool "STM32F446R"
	select STM32_STM32F4XXX
	select STM32_STM32F446

config ARCH_CHIP_STM32F446V
	bool "STM32F446V"
	select STM32_STM32F4XXX
	select STM32_STM32F446

config ARCH_CHIP_STM32F446Z
	bool "STM32F446Z"
	select STM32_STM32F4XXX
	select STM32_STM32F446

config ARCH_CHIP_STM32F469A
	bool "STM32F469A"
	select STM32_STM32F4XXX
	select STM32_STM32F469

config ARCH_CHIP_STM32F469I
	bool "STM32F469I"
	select STM32_STM32F4XXX
	select STM32_STM32F469
	select STM32_HAVE_ETHMAC

config ARCH_CHIP_STM32F469B
	bool "STM32F469B"
	select STM32_STM32F4XXX
	select STM32_STM32F469
	select STM32_HAVE_ETHMAC

config ARCH_CHIP_STM32F469N
	bool "STM32F469N"
	select STM32_STM32F4XXX
	select STM32_STM32F469
	select STM32_HAVE_ETHMAC

endchoice

endif

config STM32_STM32F4XXX
	bool
	default n
	select STM32_HAVE_OTGHS
	select STM32_HAVE_DMA1
	select STM32_HAVE_DMA2
	select ARCH_CORTEXM4
	select ARCH_HAVE_FPU
	select STM32_HAVE_DCMI
	select STM32_HAVE_HASH
	select STM32_HAVE_I2C1
	select STM32_HAVE_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USART1
	select STM32_HAVE_USART2
	select STM32_HAVE_FLASH_ICACHE
	select STM32_HAVE_FLASH_DCACHE
	select STM32_HAVE_CRYP
	select STM32_HAVE_SPI2
	select STM32_HAVE_I2C2
	select STM32_HAVE_IOCOMPENSATION
	select STM32_HAVE_IP_AES_M3M4_V1 if STM32_HAVE_AES
	select STM32_HAVE_IP_BBSRAM_M3M4_V1
	select STM32_HAVE_IP_BKP_M3M4_V1
	select STM32_HAVE_IP_CAN_BXCAN_M3M4_V1
	select STM32_HAVE_IP_CCM_M3M4_V1 if STM32_HAVE_CCM
	select STM32_HAVE_IP_CRYPTO_M3M4_V1
	select STM32_HAVE_IP_DBGMCU_M3M4_V2
	select STM32_HAVE_IP_ADC_M3M4_V1
	select STM32_HAVE_COMMON_FOC
	select STM32_HAVE_IP_DCMI_V1
	select STM32_HAVE_IP_DAC_M3M4_V1
	select STM32_HAVE_IP_DFUMODE_M3M4_V1
	select STM32_HAVE_IP_DMA_V2
	select STM32_HAVE_IP_DMA_V2_STREAM
	select STM32_HAVE_ETHERNET if STM32_HAVE_ETHMAC
	select STM32_HAVE_IP_EXTI_V1
	select STM32_HAVE_IP_ETHMAC_M3M4_V1 if STM32_HAVE_ETHMAC
	select STM32_HAVE_IP_FLASH_M3M4_V1
	select STM32_HAVE_IP_FLASH_M3M4_F2F4
	select STM32_HAVE_IP_FMC_M3M4_V1 if STM32_HAVE_FMC
	select STM32_HAVE_IP_FREERUN_M3M4_V1
	select STM32_HAVE_IP_FSMC_M3M4_V1 if STM32_HAVE_FSMC
	select STM32_HAVE_IP_GPIO_M3M4_V1
	select STM32_HAVE_IP_I2C_M3M4_V1
	select STM32_HAVE_IP_I2S_M3M4_V1
	select STM32_HAVE_IP_ONESHOT_M3M4_V1
	select STM32_HAVE_IP_OTGHS_M3M4_V1
	select STM32_HAVE_IP_OTGFS_M3M4_V1 if STM32_HAVE_OTGFS
	select STM32_HAVE_IP_PWR_M3M4_V1
	select STM32_HAVE_IP_RNG_M3M4_V1 if STM32_HAVE_RNG
	select STM32_HAVE_IP_RTC_M3M4_V1
	select STM32_HAVE_IP_RTCC_M3M4_F4
	select STM32_HAVE_RTC_MAGIC
	select STM32_HAVE_RTC
	select STM32_HAVE_CRC
	select STM32_HAVE_PWR
	select STM32_HAVE_BKPSRAM
	select STM32_HAVE_IP_SDIO_M3M4_V1
	select STM32_HAVE_IP_SPI_V2
	select STM32_HAVE_IP_SYSCFG_M3M4_V1
	select STM32_HAVE_IP_TIMERS_M3M4_V1
	select STM32_HAVE_IP_USART_V2
	select STM32_HAVE_IP_USBDEV_M3M4_V1 if STM32_HAVE_USBDEV
	select STM32_HAVE_IP_USBFS_M3M4_V1 if STM32_HAVE_USBFS
	select STM32_HAVE_IP_LTDC_M3M4_V1 if STM32_HAVE_LTDC
	select STM32_HAVE_IP_WDG_M3M4_V1

config STM32_STM32F401xBC
	bool
	default n
	select STM32_STM32F401

config STM32_STM32F401xDE
	bool
	default n
	select STM32_STM32F401

config STM32_STM32F401
	bool
	default n
	select ARCH_CORTEXM4
	select STM32_STM32F4XXX
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_OTGFS

config STM32_STM32F410
	bool
	default n
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM11
	select STM32_HAVE_SPI5
	select STM32_HAVE_DAC1

config STM32_STM32F411
	bool
	default n
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_SPI5
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_OTGFS

config STM32_STM32F412
	bool
	default n
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_USART3
	select STM32_HAVE_USART2
	select STM32_HAVE_USART6
	select STM32_HAVE_I2C1
	select STM32_HAVE_I2C2
	select STM32_HAVE_I2C3
	select STM32_HAVE_SPI1
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_OTGFS
	select STM32_HAVE_I2SPLL

config STM32_STM32F405
	bool
	default n
	select STM32_HAVE_FSMC
	select STM32_HAVE_CCM
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_DAC2
	select STM32_HAVE_SPI3
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_RNG
	select STM32_HAVE_OTGFS

config STM32_STM32F407
	bool
	default n
	select STM32_HAVE_FSMC
	select STM32_HAVE_CCM
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_SPI3
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_RNG
	select STM32_HAVE_ETHMAC
	select STM32_HAVE_OTGFS

# This is really 427/437, but we treat the two the same.

config STM32_STM32F427
	bool
	default n
	select STM32_HAVE_OVERDRIVE
	select STM32_HAVE_FMC
	select STM32_HAVE_CCM
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_UART7
	select STM32_HAVE_UART8
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_RNG
	select STM32_HAVE_ETHMAC
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_SPI5
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_OTGFS
	select STM32_HAVE_SPI6
	select STM32_HAVE_I2SPLL

# This is really 429/439, but we treat the two the same.

config STM32_STM32F429
	bool
	default n
	select STM32_HAVE_DMA2D
	select STM32_HAVE_IP_DMA2D_M3M4_V1
	select STM32_HAVE_OVERDRIVE
	select STM32_HAVE_FMC
	select STM32_HAVE_LTDC
	select STM32_HAVE_CCM
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_UART7
	select STM32_HAVE_UART8
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_RNG
	select STM32_HAVE_ETHMAC
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_I2S3
	select STM32_HAVE_SPI4
	select STM32_HAVE_SPI5
	select STM32_HAVE_SPI6
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_OTGFS

config STM32_STM32F446
	bool
	default n
	select STM32_HAVE_OVERDRIVE
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
	select STM32_HAVE_OTGFS
	select STM32_HAVE_SAIPLL
	select STM32_HAVE_I2SPLL

# This is really 469/479, but we treat the two the same.

config STM32_STM32F469
	bool
	default n
	select STM32_HAVE_DMA2D
	select STM32_HAVE_IP_DMA2D_M3M4_V1
	select STM32_HAVE_OVERDRIVE
	select STM32_HAVE_FMC
	select STM32_HAVE_LTDC
	select STM32_HAVE_CCM
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USART6
	select STM32_HAVE_UART7
	select STM32_HAVE_UART8
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_TIM12
	select STM32_HAVE_TIM13
	select STM32_HAVE_TIM14
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_CAN2
	select STM32_HAVE_DAC1
	select STM32_HAVE_RNG
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_SPI5
	select STM32_HAVE_SPI6
	select STM32_HAVE_OTGFS
	select STM32_HAVE_SAIPLL
	select STM32_HAVE_I2SPLL
	select STM32_HAVE_I2S3
	select STM32_HAVE_I2C3
