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

if ARCH_CHIP_STM32L1

choice
	prompt "STM32L1 Chip Selection"
	depends on ARCH_CHIP_STM32L1

config ARCH_CHIP_STM32L151C6
	bool "STM32L151C6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151C8
	bool "STM32L151C8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151CB
	bool "STM32L151CB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151R6
	bool "STM32L151R6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151R8
	bool "STM32L151R8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151RB
	bool "STM32L151RB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151V6
	bool "STM32L151V6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151V8
	bool "STM32L151V8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L151VB
	bool "STM32L151VB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM

config ARCH_CHIP_STM32L152C6
	bool "STM32L152C6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x18 LCD interface

config ARCH_CHIP_STM32L152C8
	bool "STM32L152C8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x18 LCD interface

config ARCH_CHIP_STM32L152CB
	bool "STM32L152CB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 48-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM with
		4x18 LCD interface

config ARCH_CHIP_STM32L152R6
	bool "STM32L152R6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x32/8x28 LCD interface

config ARCH_CHIP_STM32L152R8
	bool "STM32L152R8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x32/8x28 LCD interface

config ARCH_CHIP_STM32L152RB
	bool "STM32L152RB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 64-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM with
		4x32/8x28 LCD interface

config ARCH_CHIP_STM32L152V6
	bool "STM32L152V6"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 32KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x44/8x40 LCD interface

config ARCH_CHIP_STM32L152V8
	bool "STM32L152V8"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 64KB FLASH, 10KB SRAM, 4KB EEPROM with
		4x44/8x40 LCD interface

config ARCH_CHIP_STM32L152VB
	bool "STM32L152VB"
	select STM32_STM32L15XX
	select STM32L1_LOWDENSITY
	---help---
		STM32L 100-pin EnergyLite, 128KB FLASH, 16KB SRAM, 4KB EEPROM with
		4x44/8x40 LCD interface

config ARCH_CHIP_STM32L152CC
	bool "STM32L152CC"
	select STM32_STM32L15XX
	select STM32L1_MEDIUMPLUSDENSITY
	---help---
		STM32L 48-pin EnergyLite, 256KB FLASH, 32KB SRAM, 8KB EEPROM with
		4x18 LCD interface

config ARCH_CHIP_STM32L152RC
	bool "STM32L152RC"
	select STM32_STM32L15XX
	select STM32L1_MEDIUMPLUSDENSITY
	---help---
		STM32L 64-pin EnergyLite, 256KB FLASH, 32KB SRAM, 8KB EEPROM with
		4x32/8x28 LCD interface

config ARCH_CHIP_STM32L152VC
	bool "STM32L152VC"
	select STM32_STM32L15XX
	select STM32L1_MEDIUMPLUSDENSITY
	---help---
		STM32L 100-pin EnergyLite, 256KB FLASH, 32KB SRAM, 8KB EEPROM with
		4x44/8x40 LCD interface

config ARCH_CHIP_STM32L151RE
	bool "STM32L151RE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L152RE
	bool "STM32L152RE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L151VE
	bool "STM32L151VE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L152VE
	bool "STM32L152VE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L151QE
	bool "STM32L151QE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L152QE
	bool "STM32L152QE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L151ZE
	bool "STM32L151ZE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L152ZE
	bool "STM32L152ZE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY

config ARCH_CHIP_STM32L162ZD
	bool "STM32L162ZD"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY
	select STM32_HAVE_AES
	---help---
		STM32L 144-pin EnergyLite, 384KB FLASH, 48KB SRAM, 12KB EEPROM with
		4x44/8x40 LCD interface

config ARCH_CHIP_STM32L162VE
	bool "STM32L162VE"
	select STM32_STM32L15XX
	select STM32L1_HIGHDENSITY
	select STM32_HAVE_AES
	---help---
		STM32L 100-pin EnergyLite, 512KB FLASH, 80KB SRAM, 16KB EEPROM with
		4x44/8x40 LCD interface

endchoice

endif

config STM32_STM32L15XX
	bool
	default n
	select STM32_HAVE_DMA1
	select STM32_HAVE_COMP
	select STM32_HAVE_DMA2
	select ARCH_CORTEXM3
	select STM32_ENERGYLITE
	select STM32_HAVE_I2C1
	select STM32_HAVE_LCD
	select STM32_HAVE_SPI1
	select STM32_HAVE_SYSCFG
	select STM32_HAVE_USART1
	select STM32_HAVE_USART2
	select STM32_HAVE_USBDEV
	select STM32_HAVE_DAC1
	select STM32_HAVE_I2C2
	select STM32_HAVE_SPI2
	select STM32_HAVE_SPI3
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM3
	select STM32_HAVE_TIM4
	select STM32_HAVE_TIM9
	select STM32_HAVE_TIM10
	select STM32_HAVE_TIM11
	select STM32_HAVE_ADC2
	select STM32_HAVE_USART3
	select STM32_HAVE_RTC_SUBSECONDS if !STM32L1_LOWDENSITY
	select STM32_HAVE_RTC_MAGIC
	select STM32_HAVE_RTC
	select STM32_HAVE_CRC
	select STM32_HAVE_PWR
	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_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_L1
	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_V1
	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_L1 if !STM32_HAVE_RTC_COUNTER
	select STM32_HAVE_IP_SDIO_M3M4_V1
	select STM32_HAVE_IP_SPI_V1
	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_OTGFS_M3M4_V1 if STM32_HAVE_OTGFS
	select STM32_HAVE_IP_WDG_M3M4_V1

config STM32L1_MEDIUMPLUSDENSITY
	bool
	default n

config STM32L1_HIGHDENSITY
	bool
	default n
	select STM32_HAVE_FSMC
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1

config STM32L1_MEDIUMDENSITY
	bool
	default n
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_ADC2
	select STM32_HAVE_ADC3
	select STM32_HAVE_CAN1

config STM32L1_LOWDENSITY
	bool
	default n
	select STM32_HAVE_USART3
	select STM32_HAVE_UART4
	select STM32_HAVE_UART5
	select STM32_HAVE_TIM1
	select STM32_HAVE_TIM2
	select STM32_HAVE_TIM5
	select STM32_HAVE_TIM6
	select STM32_HAVE_TIM7
	select STM32_HAVE_TIM8
	select STM32_HAVE_ADC2
	select STM32_HAVE_CAN1
