Zephyr API 3.6.99
Loading...
Searching...
No Matches
b91-pinctrl.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Telink Semiconductor
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_B91_PINCTRL_COMMON_H_
8#define ZEPHYR_B91_PINCTRL_COMMON_H_
9
10/* IDs for GPIO functions */
11
12#define B91_FUNC_A 0x00
13#define B91_FUNC_B 0x01
14#define B91_FUNC_C 0x02
15
16/* IDs for GPIO Ports */
17
18#define B91_PORT_A 0x00
19#define B91_PORT_B 0x01
20#define B91_PORT_C 0x02
21#define B91_PORT_D 0x03
22#define B91_PORT_E 0x04
23
24/* IDs for GPIO Pins */
25
26#define B91_PIN_0 0x01
27#define B91_PIN_1 0x02
28#define B91_PIN_2 0x04
29#define B91_PIN_3 0x08
30#define B91_PIN_4 0x10
31#define B91_PIN_5 0x20
32#define B91_PIN_6 0x40
33#define B91_PIN_7 0x80
34
35/* B91 pinctrl pull-up/down */
36
37#define B91_PULL_NONE 0
38#define B91_PULL_DOWN 2
39#define B91_PULL_UP 3
40
41/* Pin function positions */
42
43#define B91_PIN_0_FUNC_POS 0x00
44#define B91_PIN_1_FUNC_POS 0x02
45#define B91_PIN_2_FUNC_POS 0x04
46#define B91_PIN_3_FUNC_POS 0x06
47#define B91_PIN_4_FUNC_POS 0x00
48#define B91_PIN_5_FUNC_POS 0x02
49#define B91_PIN_6_FUNC_POS 0x04
50#define B91_PIN_7_FUNC_POS 0x06
51
52/* B91 pin configuration bit field positions and masks */
53
54#define B91_PULL_POS 19
55#define B91_PULL_MSK 0x3
56#define B91_FUNC_POS 16
57#define B91_FUNC_MSK 0x3
58#define B91_PORT_POS 8
59#define B91_PORT_MSK 0xFF
60#define B91_PIN_POS 0
61#define B91_PIN_MSK 0xFFFF
62#define B91_PIN_ID_MSK 0xFF
63
64/* Setters and getters */
65
66#define B91_PINMUX_SET(port, pin, func) ((func << B91_FUNC_POS) | \
67 (port << B91_PORT_POS) | \
68 (pin << B91_PIN_POS))
69#define B91_PINMUX_GET_PULL(pinmux) ((pinmux >> B91_PULL_POS) & B91_PULL_MSK)
70#define B91_PINMUX_GET_FUNC(pinmux) ((pinmux >> B91_FUNC_POS) & B91_FUNC_MSK)
71#define B91_PINMUX_GET_PIN(pinmux) ((pinmux >> B91_PIN_POS) & B91_PIN_MSK)
72#define B91_PINMUX_GET_PIN_ID(pinmux) ((pinmux >> B91_PIN_POS) & B91_PIN_ID_MSK)
73
74#endif /* ZEPHYR_B91_PINCTRL_COMMON_H_ */