Add support for configuring UART/UARTE peripheral pins. Co-authored-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no> Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
130 lines
3 KiB
C
130 lines
3 KiB
C
/*
|
|
* Copyright (c) 2021 Nordic Semiconductor ASA
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_
|
|
#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_
|
|
|
|
/*
|
|
* The whole nRF pin configuration information is encoded in a 32-bit bitfield
|
|
* organized as follows:
|
|
*
|
|
* - 31..16: Pin function.
|
|
* - 15..13: Reserved.
|
|
* - 12: Pin low power mode.
|
|
* - 11..8: Pin output drive configuration.
|
|
* - 7..6: Pin pull configuration.
|
|
* - 5..0: Pin number (combination of port and pin).
|
|
*/
|
|
|
|
/**
|
|
* @name nRF pin configuration bit field positions and masks.
|
|
* @{
|
|
*/
|
|
|
|
/** Position of the function field. */
|
|
#define NRF_FUN_POS 16U
|
|
/** Mask for the function field. */
|
|
#define NRF_FUN_MSK 0xFFFFU
|
|
/** Position of the low power field. */
|
|
#define NRF_LP_POS 12U
|
|
/** Mask for the low power field. */
|
|
#define NRF_LP_MSK 0x1U
|
|
/** Position of the drive configuration field. */
|
|
#define NRF_DRIVE_POS 8U
|
|
/** Mask for the drive configuration field. */
|
|
#define NRF_DRIVE_MSK 0xFU
|
|
/** Position of the pull configuration field. */
|
|
#define NRF_PULL_POS 6U
|
|
/** Mask for the pull configuration field. */
|
|
#define NRF_PULL_MSK 0x3U
|
|
/** Position of the pin field. */
|
|
#define NRF_PIN_POS 0U
|
|
/** Mask for the pin field. */
|
|
#define NRF_PIN_MSK 0x3FU
|
|
|
|
/** @} */
|
|
|
|
/**
|
|
* @name nRF pinctrl pin functions.
|
|
* @{
|
|
*/
|
|
|
|
/** UART TX */
|
|
#define NRF_FUN_UART_TX 0U
|
|
/** UART RX */
|
|
#define NRF_FUN_UART_RX 1U
|
|
/** UART RTS */
|
|
#define NRF_FUN_UART_RTS 2U
|
|
/** UART CTS */
|
|
#define NRF_FUN_UART_CTS 3U
|
|
|
|
/** @} */
|
|
|
|
/**
|
|
* @name nRF pinctrl output drive.
|
|
* @note Values match nrf_gpio_pin_drive_t constants.
|
|
* @{
|
|
*/
|
|
|
|
/** Standard '0', standard '1'. */
|
|
#define NRF_DRIVE_S0S1 0U
|
|
/** High drive '0', standard '1'. */
|
|
#define NRF_DRIVE_H0S1 1U
|
|
/** Standard '0', high drive '1'. */
|
|
#define NRF_DRIVE_S0H1 2U
|
|
/** High drive '0', high drive '1'. */
|
|
#define NRF_DRIVE_H0H1 3U
|
|
/** Disconnect '0' standard '1'. */
|
|
#define NRF_DRIVE_D0S1 4U
|
|
/** Disconnect '0', high drive '1'. */
|
|
#define NRF_DRIVE_D0H1 5U
|
|
/** Standard '0', disconnect '1'. */
|
|
#define NRF_DRIVE_S0D1 6U
|
|
/** High drive '0', disconnect '1'. */
|
|
#define NRF_DRIVE_H0D1 7U
|
|
/** Extra high drive '0', extra high drive '1'. */
|
|
#define NRF_DRIVE_E0E1 11U
|
|
|
|
/** @} */
|
|
|
|
/**
|
|
* @name nRF pinctrl pull-up/down.
|
|
* @note Values match nrf_gpio_pin_pull_t constants.
|
|
* @{
|
|
*/
|
|
|
|
/** Pull-up disabled. */
|
|
#define NRF_PULL_NONE 0U
|
|
/** Pull-down enabled. */
|
|
#define NRF_PULL_DOWN 1U
|
|
/** Pull-up enabled. */
|
|
#define NRF_PULL_UP 3U
|
|
|
|
/** @} */
|
|
|
|
/**
|
|
* @name nRF pinctrl low power mode.
|
|
* @{
|
|
*/
|
|
|
|
/** Input. */
|
|
#define NRF_LP_DISABLE 0U
|
|
/** Output. */
|
|
#define NRF_LP_ENABLE 1U
|
|
|
|
/** @} */
|
|
|
|
/**
|
|
* @brief Utility macro to build nRF psels property entry.
|
|
*
|
|
* @param fun Pin function configuration (see NRF_FUNC_{name} macros).
|
|
* @param port Port (0 or 1).
|
|
* @param pin Pin (0..31).
|
|
*/
|
|
#define NRF_PSEL(fun, port, pin) \
|
|
((((((port) * 32U) + (pin)) & NRF_PIN_MSK) << NRF_PIN_POS) | \
|
|
((NRF_FUN_ ## fun & NRF_FUN_MSK) << NRF_FUN_POS))
|
|
|
|
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NRF_PINCTRL_H_ */
|