Zephyr API Documentation
4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
em32f967-pinctrl.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2024 ELAN Microelectronics Corp.
3
* SPDX-License-Identifier: Apache-2.0
4
*/
5
6
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_EM32F967_PINCTRL_H_
7
#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_EM32F967_PINCTRL_H_
8
16
17
/* Pin multiplexing values for EM32F967 - based on CSV specification */
18
#define EM32F967_GPIO 0
/* 000: GPIO function */
19
#define EM32F967_AF1 1
/* 001: Alternate function 1 (SPI1, etc.) */
20
#define EM32F967_AF2 2
/* 010: Alternate function 2 (UART, etc.) */
21
#define EM32F967_AF3 3
/* 011: Alternate function 3 (Timer, 7816, etc.) */
22
#define EM32F967_AF4 4
/* 100: Alternate function 4 (I2C, etc.) */
23
#define EM32F967_AF5 5
/* 101: Alternate function 5 (I2C, WKUP, etc.) */
24
#define EM32F967_AF6 6
/* 110: Alternate function 6 (SSP2, etc.) */
25
#define EM32F967_AF7 7
/* 111: Alternate function 7 (PWM, etc.) */
26
37
#define EM32F967_MUX_SHIFT 0U
38
#define EM32F967_MUX_MASK 0x7U
39
#define EM32F967_PIN_SHIFT 3U
40
#define EM32F967_PIN_MASK 0xFU
41
#define EM32F967_PORT_SHIFT 7U
42
#define EM32F967_PORT_MASK 0x1U
43
51
#define EM32F967_PINMUX(port, pin, mux) \
52
(((((port) - 'A') & EM32F967_PORT_MASK) << EM32F967_PORT_SHIFT) | \
53
(((pin) & EM32F967_PIN_MASK) << EM32F967_PIN_SHIFT) | \
54
(((EM32F967_##mux) & EM32F967_MUX_MASK) << EM32F967_MUX_SHIFT))
55
56
/* Helper macros to extract fields from encoded pinmux value */
57
#define EM32F967_DT_PINMUX_PORT(pinmux) (((pinmux) >> EM32F967_PORT_SHIFT) & EM32F967_PORT_MASK)
58
59
#define EM32F967_DT_PINMUX_PIN(pinmux) (((pinmux) >> EM32F967_PIN_SHIFT) & EM32F967_PIN_MASK)
60
61
#define EM32F967_DT_PINMUX_MUX(pinmux) (((pinmux) >> EM32F967_MUX_SHIFT) & EM32F967_MUX_MASK)
62
63
/* Pull-up/Pull-down definitions for 5V tolerant pins (PA0-PA6) */
64
#define EM32F967_PULL_NONE_5V 0
/* 00: Floating */
65
#define EM32F967_PULL_UP0_5V 1
/* 01: PU0 (66KΩ@5V, 101KΩ@3.3V, 238KΩ@1.8V) */
66
#define EM32F967_PULL_UP1_5V 2
/* 10: PU1 (4.7KΩ@5V, 6.41KΩ@3.3V, 12.7KΩ@1.8V) */
67
#define EM32F967_PULL_DOWN_5V 3
/* 11: PD (15KΩ@5V, 21.8KΩ@3.3V, 49.6KΩ@1.8V) */
68
69
/* Pull-up/Pull-down definitions for 3V pins (PA11-PA15, PB0-PB15) */
70
#define EM32F967_PULL_NONE_3V 0
/* 00: Floating */
71
#define EM32F967_PULL_UP0_3V 1
/* 01: PU0 (66KΩ@3.3V, 140KΩ@1.8V) */
72
#define EM32F967_PULL_UP1_3V 2
/* 10: PU1 (4.7KΩ@3.3V, 8.53KΩ@1.8V) */
73
#define EM32F967_PULL_DOWN_3V 3
/* 11: PD (15KΩ@3.3V, 25.2KΩ@1.8V) */
74
75
/* Drive strength definitions */
76
#define EM32F967_DRIVE_NORMAL 0
/* Normal drive strength */
77
#define EM32F967_DRIVE_HIGH 1
/* High drive strength (Load=30pF) */
78
79
#endif
/* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_EM32F967_PINCTRL_H_ */
zephyr
dt-bindings
pinctrl
em32f967-pinctrl.h
Generated on
for Zephyr API Documentation by
1.15.0