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

if ARCH_CHIP_STM32G4

choice
	prompt "STM32G4 Chip Selection"
	depends on ARCH_CHIP_STM32G4

config ARCH_CHIP_STM32G431K
	bool "STM32G431K"
	select STM32_STM32G43XX
	select STM32_STM32G4XXK
	select STM32_STM32G431K

config ARCH_CHIP_STM32G431C
	bool "STM32G431C"
	select STM32_STM32G43XX
	select STM32_STM32G4XXC
	select STM32_STM32G431C

config ARCH_CHIP_STM32G431R
	bool "STM32G431R"
	select STM32_STM32G43XX
	select STM32_STM32G4XXR
	select STM32_STM32G431R

config ARCH_CHIP_STM32G431M
	bool "STM32G431M"
	select STM32_STM32G43XX
	select STM32_STM32G4XXM
	select STM32_STM32G431M

config ARCH_CHIP_STM32G431V
	bool "STM32G431V"
	select STM32_STM32G43XX
	select STM32_STM32G4XXV
	select STM32_STM32G431V

config ARCH_CHIP_STM32G474C
	bool "STM32G474C"
	select STM32_STM32G47XX
	select STM32_STM32G4XXC
	select STM32_STM32G474C

config ARCH_CHIP_STM32G474M
	bool "STM32G474M"
	select STM32_STM32G47XX
	select STM32_STM32G4XXM
	select STM32_STM32G474M

config ARCH_CHIP_STM32G474R
	bool "STM32G474R"
	select STM32_STM32G47XX
	select STM32_STM32G4XXR
	select STM32_STM32G474R
	select STM32_HAVE_USBFS

config ARCH_CHIP_STM32G474Q
	bool "STM32G474Q"
	select STM32_STM32G47XX
	select STM32_STM32G4XXQ
	select STM32_STM32G474Q

config ARCH_CHIP_STM32G474V
	bool "STM32G474V"
	select STM32_STM32G47XX
	select STM32_STM32G4XXV
	select STM32_STM32G474V

endchoice

endif

config STM32_STM32G4XXX
	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_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USART1
	select STM32_HAVE_USART2
	select STM32_HAVE_DMAMUX
	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_V3
	select STM32_HAVE_IP_ADC_M3M4_V2
	select STM32_FOC_HAVE_ADC_CHAN0_WORKAROUND
	select STM32_HAVE_COMMON_FOC
	select STM32_HAVE_IP_COMP_M3M4_V2
	select STM32_HAVE_IP_CORDIC_M3M4_V1 if STM32_HAVE_CORDIC
	select STM32_HAVE_IP_DAC_M3M4_V2
	select STM32_HAVE_IP_DCMI_V1
	select STM32_HAVE_IP_DFUMODE_M3M4_V1
	select STM32_HAVE_IP_DMA_V1
	select STM32_HAVE_IP_DMA_V1_8CH_DMAMUX
	select STM32_HAVE_IP_EXTI_V2
	select STM32_HAVE_IP_ETHMAC_M3M4_V1 if STM32_HAVE_ETHMAC
	select STM32_HAVE_IP_FDCAN_MCAN_M3M4_V1
	select STM32_HAVE_IP_FLASH_M3M4_V1
	select STM32_HAVE_IP_FLASH_M3M4_G4
	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_RNG_M3M4_V1 if STM32_HAVE_RNG
	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_SPI_V3
	select STM32_HAVE_IP_SYSCFG_M3M4_V1
	select STM32_HAVE_IP_TIMERS_M3M4_V3
	select STM32_HAVE_IP_USART_V4
	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_STM32G4_CAT2
	bool
	default n

config STM32_STM32G4_CAT3
	bool
	default n

config STM32_STM32G4_CAT4
	bool
	default n

config STM32_STM32G4XXK
	bool
	default n

config STM32_STM32G4XXC
	bool
	default n

config STM32_STM32G4XXR
	bool
	default n

config STM32_STM32G4XXM
	bool
	default n

config STM32_STM32G4XXV
	bool
	default n

config STM32_STM32G4XXP
	bool
	default n

config STM32_STM32G4XXQ
	bool
	default n

config STM32_STM32G43XX
	bool
	default n
	select STM32_STM32G4XXX
	select STM32_STM32G4_CAT2
	select STM32_HAVE_ADC2
	select STM32_HAVE_CCM
	select STM32_HAVE_COMP1
	select STM32_HAVE_COMP2
	select STM32_HAVE_COMP3
	select STM32_HAVE_COMP4
	select STM32_HAVE_CORDIC
	select STM32_HAVE_CRS
	select STM32_HAVE_DAC1
	select STM32_HAVE_DAC3
	select STM32_HAVE_FMAC
	select STM32_HAVE_FDCAN1
	select STM32_HAVE_I2C2
	select STM32_HAVE_I2C3
	select STM32_HAVE_LPTIM1
	select STM32_HAVE_LPUART1
	select STM32_HAVE_OPAMP1
	select STM32_HAVE_OPAMP2
	select STM32_HAVE_OPAMP3
	select STM32_HAVE_RNG
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM15
	select STM32_HAVE_TIM16
	select STM32_HAVE_TIM17
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM8
	select STM32_HAVE_UCPD
	select STM32_HAVE_USBDEV

config STM32_STM32G431K
	bool
	default n

config STM32_STM32G431C
	bool
	default n
	select STM32_HAVE_USART3

config STM32_STM32G431R
	bool
	default n
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4

config STM32_STM32G431M
	bool
	default n
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4

config STM32_STM32G431V
	bool
	default n
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4

config STM32_STM32G47XX
	bool
	default n
	select STM32_STM32G4XXX
	select STM32_STM32G4_CAT3
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_ADC4
	select STM32_HAVE_ADC5
	select STM32_HAVE_CCM
	select STM32_HAVE_COMP1
	select STM32_HAVE_COMP2
	select STM32_HAVE_COMP3
	select STM32_HAVE_COMP4
	select STM32_HAVE_COMP5
	select STM32_HAVE_COMP6
	select STM32_HAVE_COMP7
	select STM32_HAVE_CORDIC
	select STM32_HAVE_CRS
	select STM32_HAVE_DAC1
	select STM32_HAVE_DAC2
	select STM32_HAVE_DAC3
	select STM32_HAVE_DAC4
	select STM32_HAVE_FSMC
	select STM32_HAVE_FMAC
	select STM32_HAVE_FDCAN1
	select STM32_HAVE_FDCAN2
	select STM32_HAVE_HRTIM1
	select STM32_HAVE_I2C2
	select STM32_HAVE_I2C3
	select STM32_HAVE_I2C4
	select STM32_HAVE_I2S3
	select STM32_HAVE_LPTIM1
	select STM32_HAVE_LPUART1
	select STM32_HAVE_OPAMP1
	select STM32_HAVE_OPAMP2
	select STM32_HAVE_OPAMP3
	select STM32_HAVE_OPAMP4
	select STM32_HAVE_OPAMP5
	select STM32_HAVE_OPAMP6
	select STM32_HAVE_QSPI
	select STM32_HAVE_RNG
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM15
	select STM32_HAVE_TIM16
	select STM32_HAVE_TIM17
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM20
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM8
	select STM32_HAVE_USART3
	select STM32_HAVE_UCPD
	select STM32_HAVE_USBDEV

config STM32_STM32G474C
	bool
	default n
	select STM32_HAVE_FDCAN3

config STM32_STM32G474M
	bool
	default n
	select STM32_HAVE_FDCAN3
	select STM32_HAVE_SPI4
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config STM32_STM32G474R
	bool
	default n
	select STM32_HAVE_FDCAN3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config STM32_STM32G474Q
	bool
	default n
	select STM32_HAVE_FDCAN3
	select STM32_HAVE_FMC
	select STM32_HAVE_SPI4
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5

config STM32_STM32G474V
	bool
	default n
	select STM32_HAVE_FDCAN3
	select STM32_HAVE_FMC
	select STM32_HAVE_SPI4
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
