# Kconfig - configuration for STM32 pinmux
#
# 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.
#

config PINMUX_STM32
	bool "Pinmux driver for STM32 MCUs"
	depends on PINMUX && SOC_STM32
	help
	 Enable pin multiplexter for STM32 MCUs

config PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY
	int "Device initialization priority STM32 pinmux"
	depends on PINMUX_STM32
	default 2
	help
	 This option controls the priority of pinmux device initialization.
	 Higher priority ensures that the device is initialized earlier in
	 the startup cycle. Note that the pinmux device needs to be initialized
	 after clock control device, but possibly before all other devices.
	 If unsure, leave at default value 2
