Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
pinctrl_soc_sam_common.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022, Gerson Fernando Budke <nandojve@gmail.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_SOC_SAM_COMMON_H_
13#define ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_SOC_SAM_COMMON_H_
14
15#include <zephyr/devicetree.h>
16#include <zephyr/types.h>
17#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
33
41#if defined(CONFIG_SOC_FAMILY_ATMEL_SAM)
42#define Z_PINCTRL_STATE_PIN_INIT(node_id, prop, idx) \
43 ((DT_PROP_BY_IDX(node_id, prop, idx) << SAM_PINCTRL_PINMUX_POS) \
44 | (DT_PROP(node_id, bias_pull_up) << SAM_PINCTRL_PULLUP_POS) \
45 | (DT_PROP(node_id, bias_pull_down) << SAM_PINCTRL_PULLDOWN_POS) \
46 | (DT_PROP(node_id, drive_open_drain) << SAM_PINCTRL_OPENDRAIN_POS) \
47 ),
48#else /* CONFIG_SOC_FAMILY_ATMEL_SAM0 */
49#define Z_PINCTRL_STATE_PIN_INIT(node_id, prop, idx) \
50 ((DT_PROP_BY_IDX(node_id, prop, idx) << SAM_PINCTRL_PINMUX_POS) \
51 | (DT_PROP(node_id, bias_pull_up) << SAM_PINCTRL_PULLUP_POS) \
52 | (DT_PROP(node_id, bias_pull_down) << SAM_PINCTRL_PULLDOWN_POS) \
53 | (DT_PROP(node_id, input_enable) << SAM_PINCTRL_INPUTENABLE_POS) \
54 | (DT_PROP(node_id, output_enable) << SAM_PINCTRL_OUTPUTENABLE_POS) \
55 | (DT_ENUM_IDX(node_id, drive_strength) << SAM_PINCTRL_DRIVESTRENGTH_POS)\
56 ),
57#endif
58
65#define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) \
66 {DT_FOREACH_CHILD_VARGS(DT_PHANDLE(node_id, prop), \
67 DT_FOREACH_PROP_ELEM, pinmux, \
68 Z_PINCTRL_STATE_PIN_INIT)}
69
80#define SAM_PINCTRL_FLAGS_DEFAULT (0U)
81#define SAM_PINCTRL_FLAGS_POS (0U)
82#define SAM_PINCTRL_FLAGS_MASK (0x3F << SAM_PINCTRL_FLAGS_POS)
83#define SAM_PINCTRL_FLAG_MASK (1U)
84#define SAM_PINCTRL_PULLUP_POS (SAM_PINCTRL_FLAGS_POS)
85#define SAM_PINCTRL_PULLUP (1U << SAM_PINCTRL_PULLUP_POS)
86#define SAM_PINCTRL_PULLDOWN_POS (SAM_PINCTRL_PULLUP_POS + 1U)
87#define SAM_PINCTRL_PULLDOWN (1U << SAM_PINCTRL_PULLDOWN_POS)
88#define SAM_PINCTRL_OPENDRAIN_POS (SAM_PINCTRL_PULLDOWN_POS + 1U)
89#define SAM_PINCTRL_OPENDRAIN (1U << SAM_PINCTRL_OPENDRAIN_POS)
90#define SAM_PINCTRL_INPUTENABLE_POS (SAM_PINCTRL_OPENDRAIN_POS + 1U)
91#define SAM_PINCTRL_INPUTENABLE (1U << SAM_PINCTRL_INPUTENABLE_POS)
92#define SAM_PINCTRL_OUTPUTENABLE_POS (SAM_PINCTRL_INPUTENABLE_POS + 1U)
93#define SAM_PINCTRL_OUTPUTENABLE (1U << SAM_PINCTRL_OUTPUTENABLE_POS)
94#define SAM_PINCTRL_DRIVESTRENGTH_POS (SAM_PINCTRL_OUTPUTENABLE_POS + 1U)
95#define SAM_PINCTRL_DRIVESTRENGTH (1U << SAM_PINCTRL_DRIVESTRENGTH_POS)
96
105#define SAM_PINCTRL_FLAG_GET(pincfg, pos) \
106 (((pincfg) >> pos) & SAM_PINCTRL_FLAG_MASK)
107
108#define SAM_PINCTRL_FLAGS_GET(pincfg) \
109 (((pincfg) >> SAM_PINCTRL_FLAGS_POS) & SAM_PINCTRL_FLAGS_MASK)
110
111#ifdef __cplusplus
112}
113#endif
114
115#endif /* ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_SOC_SAM_COMMON_H_ */
Devicetree main header.
struct pinctrl_soc_pin pinctrl_soc_pin_t
Type for R-Car pin.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90