# Kconfig - ST Microelectronics STM32F1 MCU line
#
# Copyright (c) 2016 Open-RnD Sp. z o.o.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

if SOC_SERIES_STM32F1X

source "arch/arm/soc/st_stm32/stm32f1/Kconfig.defconfig.stm32f1*"

config SOC_SERIES
	default stm32f1

config SRAM_BASE_ADDRESS
	default 0x20000000

config FLASH_BASE_ADDRESS
	default 0x08000000

config NUM_IRQ_PRIO_BITS
	int
	default 4

endif # SOC_SERIES_STM32F1X
