mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-04 07:21:57 +00:00
Add a common driver for pin control subsystem in STM32 MCU series. The driver allows for selection of pin's function without the ability of pin remapping. The driver implements a pinmux driver API, with custom `func` and `pin` encoding in API calls. The caller is expected to use STM32PIN() helper macro for encoding port/pin numbers or using one of the provided STM32_PIN_* defines. The common driver requires SoC specific support to be implemented. The SoC code must implement these calls: stm32_get_pin_config(), stm32_get_port_clock(), stm32_pin_configure(). Consult pinmux_stm32.h header for detailn on semantics of these calls. The driver also requires board level integration. The call stm32_board_get_pinconf() is expected to privide pin function assignments for the target board. Whenever an IO pin is being enabled, the driver will automatically enable the clock for corresponding port. The driver does not implement disabling of port's clock as this has potentially disruptive, as such such operation should be done explicitly in the code. The pin control module needs to be initialized before any other modules, but after clock_control. For this reason, the driver is initialized by default at PRIMARY level, with priority set to 2. The priority can be changed through configuration. Change-Id: I8cb746d0f3cad72cd50b3355fe6d93a9f469be25 Origin: Original Signed-off-by: Maciej Borzecki <maciek.borzecki@gmail.com>
34 lines
1.2 KiB
Plaintext
34 lines
1.2 KiB
Plaintext
# 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
|