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

if ARCH_CHIP_STM32F3

choice
	prompt "STM32F3 Chip Selection"
	depends on ARCH_CHIP_STM32F3

config ARCH_CHIP_STM32F302K6
	bool "STM32F302K6"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_I2C3

config ARCH_CHIP_STM32F302K8
	bool "STM32F302K8"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_I2C3

config ARCH_CHIP_STM32F302C6
	bool "STM32F302C6"
	select STM32_STM32F30XX
	select STM32_STM32F302

config ARCH_CHIP_STM32F302C8
	bool "STM32F302C8"
	select STM32_STM32F30XX
	select STM32_STM32F302

config ARCH_CHIP_STM32F302R6
	bool "STM32F302R6"
	select STM32_STM32F30XX
	select STM32_STM32F302

config ARCH_CHIP_STM32F302R8
	bool "STM32F302R8"
	select STM32_STM32F30XX
	select STM32_STM32F302

config ARCH_CHIP_STM32F302CB
	bool "STM32F302CB"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F302CC
	bool "STM32F302CC"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F302RB
	bool "STM32F302RB"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config ARCH_CHIP_STM32F302RC
	bool "STM32F302RC"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config ARCH_CHIP_STM32F302VB
	bool "STM32F302VB"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config ARCH_CHIP_STM32F302VC
	bool "STM32F302VC"
	select STM32_STM32F30XX
	select STM32_STM32F302
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config ARCH_CHIP_STM32F303K6
	bool "STM32F303K6"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_DAC2

config ARCH_CHIP_STM32F303K8
	bool "STM32F303K8"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_DAC2

config ARCH_CHIP_STM32F303C6
	bool "STM32F303C6"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_DAC2
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F303C8
	bool "STM32F303C8"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_DAC2
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F303CB
	bool "STM32F303CB"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303CC
	bool "STM32F303CC"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303RB
	bool "STM32F303RB"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303RC
	bool "STM32F303RC"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303RD
	bool "STM32F303RD"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_I2C3
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303RE
	bool "STM32F303RE"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_I2C3
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_SPI4
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303VB
	bool "STM32F303VB"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303VC
	bool "STM32F303VC"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_USBDEV

config ARCH_CHIP_STM32F303VD
	bool "STM32F303VD"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F303VE
	bool "STM32F303VE"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F303ZD
	bool "STM32F303ZD"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F303ZE
	bool "STM32F303ZE"
	select STM32_STM32F30XX
	select STM32_STM32F303
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_USART3

config ARCH_CHIP_STM32F334K4
	bool "STM32F334K4"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334K6
	bool "STM32F334K6"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334K8
	bool "STM32F334K8"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334C4
	bool "STM32F334C4"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334C6
	bool "STM32F334C6"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334C8
	bool "STM32F334C8"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334R4
	bool "STM32F334R4"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334R6
	bool "STM32F334R6"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F334R8
	bool "STM32F334R8"
	select STM32_STM32F33XX

config ARCH_CHIP_STM32F372C8
	bool "STM32F372C8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372R8
	bool "STM32F372R8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372V8
	bool "STM32F372V8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372CB
	bool "STM32F372CB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372RB
	bool "STM32F372RB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372VB
	bool "STM32F372VB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372CC
	bool "STM32F372CC"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372RC
	bool "STM32F372RC"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F372VC
	bool "STM32F372VC"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373C8
	bool "STM32F373C8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373R8
	bool "STM32F373R8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373V8
	bool "STM32F373V8"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373CB
	bool "STM32F373CB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373RB
	bool "STM32F373RB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373VB
	bool "STM32F373VB"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373CC
	bool "STM32F373CC"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373RC
	bool "STM32F373RC"
	select STM32_STM32F37XX

config ARCH_CHIP_STM32F373VC
	bool "STM32F373VC"
	select STM32_STM32F37XX

endchoice

endif

config STM32_STM32F30XX
	bool
	default n
	select STM32_HAVE_DMA1
	select STM32_HAVE_DMA2
	select ARCH_CORTEXM4
	select ARCH_HAVE_FPU
	select STM32_HAVE_I2C1
	select STM32_HAVE_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USART1
	select STM32_HAVE_USART2
	select STM32_HAVE_CAN1
	select STM32_HAVE_DAC1
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM15
	select STM32_HAVE_TIM16
	select STM32_HAVE_TIM17
	select STM32_HAVE_TSC
	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_V2
	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_V1
	select STM32_HAVE_IP_DMA_V1_8CH
	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_F1F3
	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_HRTIM_M3M4_V1 if STM32_HAVE_HRTIM1
	select STM32_HAVE_IP_I2C_M3M4_V2
	select STM32_HAVE_IP_I2S_M3M4_V1
	select STM32_HAVE_IP_ONESHOT_M3M4_V1
	select STM32_HAVE_IP_PWR_M3M4_V1
	select STM32_HAVE_IP_RTC_M3M4_V1
	select STM32_HAVE_IP_RTCC_M3M4_V1
	select STM32_HAVE_RTC_MAGIC
	select STM32_HAVE_RTC
	select STM32_HAVE_CRC
	select STM32_HAVE_PWR
	select STM32_HAVE_IP_SDIO_M3M4_V1
	select STM32_HAVE_IP_SPI_V3
	select STM32_HAVE_IP_SYSCFG_M3M4_V1
	select STM32_HAVE_IP_TIMERS_M3M4_V2
	select STM32_HAVE_IP_USART_V3
	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_OTGFS_M3M4_V1 if STM32_HAVE_OTGFS
	select STM32_HAVE_IP_WDG_M3M4_V1

config STM32_STM32F302
	bool
	default n
	select STM32_HAVE_ADC2
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM4
	select STM32_HAVE_USBDEV

config STM32_STM32F303
	bool
	default n
	select STM32_HAVE_ADC2
	select STM32_HAVE_CCM
	select STM32_HAVE_TIM7

config STM32_STM32F33XX
	bool
	default n
	select STM32_HAVE_DMA1
	select STM32_HAVE_COMP
	select STM32_HAVE_DMA2
	select ARCH_CORTEXM4
	select ARCH_HAVE_FPU
	select STM32_HAVE_I2C1
	select STM32_HAVE_HRTIM1
	select STM32_HAVE_COMP2
	select STM32_HAVE_COMP4
	select STM32_HAVE_COMP6
	select STM32_HAVE_OPAMP2
	select STM32_HAVE_CCM
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM15
	select STM32_HAVE_TIM16
	select STM32_HAVE_TIM17
	select STM32_HAVE_TSC
	select STM32_HAVE_ADC2
	select STM32_HAVE_CAN1
	select STM32_HAVE_DAC1
	select STM32_HAVE_DAC2
	select STM32_HAVE_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USART2
	select STM32_HAVE_USART3
	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_V2
	select STM32_HAVE_IP_COMP_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_V1
	select STM32_HAVE_IP_DMA_V1_8CH
	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_F1F3
	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_HRTIM_M3M4_V1 if STM32_HAVE_HRTIM1
	select STM32_HAVE_IP_I2C_M3M4_V2
	select STM32_HAVE_IP_I2S_M3M4_V1
	select STM32_HAVE_IP_ONESHOT_M3M4_V1
	select STM32_HAVE_IP_OPAMP_M3M4_V1 if STM32_HAVE_OPAMP1 || STM32_HAVE_OPAMP2 || STM32_HAVE_OPAMP3 || STM32_HAVE_OPAMP4 || STM32_HAVE_OPAMP5 || STM32_HAVE_OPAMP6
	select STM32_HAVE_IP_PWR_M3M4_V1
	select STM32_HAVE_IP_RTC_M3M4_V1
	select STM32_HAVE_IP_RTCC_M3M4_V1
	select STM32_HAVE_RTC_MAGIC
	select STM32_HAVE_RTC
	select STM32_HAVE_CRC
	select STM32_HAVE_PWR
	select STM32_HAVE_IP_SDIO_M3M4_V1
	select STM32_HAVE_IP_SPI_V3
	select STM32_HAVE_IP_SYSCFG_M3M4_V1
	select STM32_HAVE_IP_TIMERS_M3M4_V2
	select STM32_HAVE_IP_USART_V3
	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_OTGFS_M3M4_V1 if STM32_HAVE_OTGFS
	select STM32_HAVE_IP_WDG_M3M4_V1

config STM32_STM32F37XX
	bool
	default n
	select STM32_HAVE_DMA1
	select STM32_HAVE_DMA2
	select ARCH_CORTEXM4
	select ARCH_HAVE_FPU
	select STM32_HAVE_I2C1
	select STM32_HAVE_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USBDEV
	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_TIM15
	select STM32_HAVE_TIM16
	select STM32_HAVE_TIM17
	select STM32_HAVE_TSC
	select STM32_HAVE_SDADC1
	select STM32_HAVE_SDADC2
	select STM32_HAVE_SDADC3
	select STM32_HAVE_CAN1
	select STM32_HAVE_DAC1
	select STM32_HAVE_DAC2
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_USART3
	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_TIMERS_M3M4_V1
	select STM32_HAVE_IP_ADC_M3M4_V1_BASIC
	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_V1
	select STM32_HAVE_IP_DMA_V1_8CH
	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_F1F3
	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_HRTIM_M3M4_V1 if STM32_HAVE_HRTIM1
	select STM32_HAVE_IP_I2C_M3M4_V2
	select STM32_HAVE_IP_I2S_M3M4_V1
	select STM32_HAVE_IP_ONESHOT_M3M4_V1
	select STM32_HAVE_IP_PWR_M3M4_V1
	select STM32_HAVE_IP_RTC_M3M4_V1
	select STM32_HAVE_IP_RTCC_M3M4_V1
	select STM32_HAVE_RTC_MAGIC
	select STM32_HAVE_RTC
	select STM32_HAVE_CRC
	select STM32_HAVE_PWR
	select STM32_HAVE_IP_SDADC_M3M4_V1
	select STM32_HAVE_IP_SDIO_M3M4_V1
	select STM32_HAVE_IP_SPI_V3
	select STM32_HAVE_IP_SYSCFG_M3M4_V1
	select STM32_HAVE_IP_USART_V3
	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_OTGFS_M3M4_V1 if STM32_HAVE_OTGFS
	select STM32_HAVE_IP_WDG_M3M4_V1
