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_ */