Zephyr API Documentation
4.0.99
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
20
extern
"C"
{
21
#endif
22
32
typedef
uint32_t
pinctrl_soc_pin_t
;
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.h
Devicetree main header.
types.h
pinctrl_soc_pin_t
struct pinctrl_soc_pin pinctrl_soc_pin_t
Type for R-Car pin.
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:90
zephyr
drivers
pinctrl
pinctrl_soc_sam_common.h
Generated on Mon Nov 18 2024 06:02:27 for Zephyr API Documentation by
1.12.0