soc: kinetis: Add common pinctrl include file
Add pinctrl include file to define SOC specific pinctrl_soc_t structure, used to store pin configuration for pinctrl driver Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
dee7cc74c5
commit
bdbb72a95a
2 changed files with 62 additions and 0 deletions
|
@ -4,6 +4,9 @@ zephyr_sources_ifdef(CONFIG_KINETIS_FLASH_CONFIG flash_configuration.c)
|
|||
|
||||
add_subdirectory(${SOC_SERIES})
|
||||
|
||||
# This is for access to pinctrl macros
|
||||
zephyr_include_directories(common)
|
||||
|
||||
zephyr_linker_sources_ifdef(CONFIG_KINETIS_FLASH_CONFIG
|
||||
ROM_START
|
||||
SORT_KEY ${CONFIG_KINETIS_FLASH_CONFIG_OFFSET}
|
||||
|
|
59
soc/arm/nxp_kinetis/common/pinctrl_soc.h
Normal file
59
soc/arm/nxp_kinetis/common/pinctrl_soc.h
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright (c) 2022 NXP
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
* @file
|
||||
* NXP Kinetis SOC specific helpers for pinctrl driver
|
||||
*/
|
||||
|
||||
#ifndef ZEPHYR_SOC_ARM_NXP_KINETIS_COMMON_PINCTRL_SOC_H_
|
||||
#define ZEPHYR_SOC_ARM_NXP_KINETIS_COMMON_PINCTRL_SOC_H_
|
||||
|
||||
#include <devicetree.h>
|
||||
#include <zephyr/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @cond INTERNAL_HIDDEN */
|
||||
|
||||
typedef uint32_t pinctrl_soc_pin_t;
|
||||
|
||||
/* Kinetis KW/KL series does not support open drain. Define macros to have no effect */
|
||||
#if defined(CONFIG_SOC_SERIES_KINETIS_KWX) || \
|
||||
defined(CONFIG_SOC_SERIES_KINETIS_KL2X)
|
||||
#define PORT_PCR_ODE(x) 0x0
|
||||
#define PORT_PCR_ODE_MASK 0x0
|
||||
#endif
|
||||
|
||||
#define Z_PINCTRL_KINETIS_PINCFG(node_id) \
|
||||
(PORT_PCR_DSE(DT_ENUM_IDX(node_id, drive_strength)) | \
|
||||
PORT_PCR_PS(DT_PROP(node_id, bias_pull_up)) | \
|
||||
PORT_PCR_PE(DT_PROP(node_id, bias_pull_up)) | \
|
||||
PORT_PCR_PE(DT_PROP(node_id, bias_pull_down)) | \
|
||||
PORT_PCR_ODE(DT_PROP(node_id, drive_open_drain)) | \
|
||||
PORT_PCR_SRE(DT_ENUM_IDX(node_id, slew_rate)) | \
|
||||
PORT_PCR_PFE(DT_PROP(node_id, nxp_passive_filter)))
|
||||
|
||||
#define Z_PINCTRL_KINETIS_PCR_MASK \
|
||||
(PORT_PCR_MUX_MASK | PORT_PCR_DSE_MASK | PORT_PCR_ODE_MASK | \
|
||||
PORT_PCR_PFE_MASK | PORT_PCR_SRE_MASK | PORT_PCR_PE_MASK | \
|
||||
PORT_PCR_PS_MASK)
|
||||
|
||||
|
||||
#define Z_PINCTRL_STATE_PIN_INIT(group, pin_prop, idx) \
|
||||
DT_PROP_BY_IDX(group, pin_prop, idx) | Z_PINCTRL_KINETIS_PINCFG(group),
|
||||
|
||||
#define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) \
|
||||
{DT_FOREACH_CHILD_VARGS(DT_PHANDLE(node_id, prop), \
|
||||
DT_FOREACH_PROP_ELEM, pinmux, Z_PINCTRL_STATE_PIN_INIT)};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ZEPHYR_SOC_ARM_NXP_KINETIS_COMMON_PINCTRL_SOC_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue