blob: 23ad3ba93341d35cfc301b543e5c089c52f8a4f1 [file] [log] [blame]
/*
* Copyright 2022 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_SOC_ARM_NXP_S32_S32ZE_PINCTRL_SOC_H_
#define ZEPHYR_SOC_ARM_NXP_S32_S32ZE_PINCTRL_SOC_H_
#include "pinctrl_soc_common.h"
#if defined(CONFIG_SOC_S32Z27_R52)
#include "S32Z2_SIUL2.h"
#else
#error "SoC not supported"
#endif
#define S32_SIUL2_IDX(n) \
n == 0 ? IP_SIUL2_0 : (n == 1 ? IP_SIUL2_1 : ( \
n == 3 ? IP_SIUL2_3 : (n == 4 ? IP_SIUL2_4 : ( \
n == 5 ? IP_SIUL2_5 : (NULL)))))
#define S32_PULL_SEL(group) \
COND_CODE_1(DT_PROP(group, bias_pull_up), (PORT_INTERNAL_PULL_UP_ENABLED),\
(COND_CODE_1(DT_PROP(group, bias_pull_down), \
(PORT_INTERNAL_PULL_DOWN_ENABLED), (PORT_INTERNAL_PULL_NOT_ENABLED))))
/* To enable open drain both OBE and ODE bits need to be set */
#define S32_OPEN_DRAIN(group) \
DT_PROP(group, drive_open_drain) && DT_PROP(group, output_enable) ? \
(PORT_OPEN_DRAIN_ENABLED) : (PORT_OPEN_DRAIN_DISABLED)
#define S32_SLEW_RATE(group) \
COND_CODE_1(DT_NODE_HAS_PROP(group, slew_rate), \
(UTIL_CAT(PORT_SLEW_RATE_CONTROL, DT_PROP(group, slew_rate))), \
(PORT_SLEW_RATE_CONTROL0))
/*
* The default values are reset values and don't apply to the type of pads
* currently supported.
*/
#define S32_PIN_OPTIONS_INIT(group, mux) \
.pullConfig = S32_PULL_SEL(group), \
.openDrain = S32_OPEN_DRAIN(group), \
.slewRateCtrlSel = S32_SLEW_RATE(group), \
.terminationResistor = PORT_TERMINATION_RESISTOR_DISABLED, \
.receiverSel = PORT_RECEIVER_ENABLE_SINGLE_ENDED, \
.currentReferenceControl = PORT_CURRENT_REFERENCE_CONTROL_DISABLED, \
.rxCurrentBoost = PORT_RX_CURRENT_BOOST_DISABLED, \
.safeMode = PORT_SAFE_MODE_DISABLED,
#endif /* ZEPHYR_SOC_ARM_NXP_S32_S32ZE_PINCTRL_SOC_H_ */