Line data Source code
1 0 : /*
2 : * Copyright (c) 2022 Silicon Labs
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_
7 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_
8 :
9 : /*
10 : * The whole GECKO_pin configuration information is encoded in a 32-bit bitfield
11 : * organized as follows:
12 : *
13 : * - 31..24: Pin function.
14 : * - 23..16: Reserved.
15 : * - 15..8: Port for UART_RX/UART_TX functions.
16 : * - 7..0: Pin number for UART_RX/UART_TX functions.
17 : * - 15..8: Reserved for UART_LOC function.
18 : * - 7..0: Loc for UART_LOC function.
19 : */
20 :
21 : /**
22 : * @name GECKO_pin configuration bit field positions and masks.
23 : * @{
24 : */
25 :
26 : /** Position of the function field. */
27 1 : #define GECKO_FUN_POS 24U
28 : /** Mask for the function field. */
29 1 : #define GECKO_FUN_MSK 0xFFU
30 :
31 : /** Position of the pin field. */
32 1 : #define GECKO_PIN_POS 0U
33 : /** Mask for the pin field. */
34 1 : #define GECKO_PIN_MSK 0xFFU
35 :
36 : /** Position of the port field. */
37 1 : #define GECKO_PORT_POS 8U
38 : /** Mask for the port field. */
39 1 : #define GECKO_PORT_MSK 0xFFU
40 :
41 : /** Position of the loc field. */
42 1 : #define GECKO_LOC_POS 0U
43 : /** Mask for the pin field. */
44 1 : #define GECKO_LOC_MSK 0xFFU
45 :
46 : /** @} */
47 :
48 : /**
49 : * @name GECKO_pinctrl pin functions.
50 : * @{
51 : */
52 :
53 : /** UART TX */
54 1 : #define GECKO_FUN_UART_TX 0U
55 : /** UART RX */
56 1 : #define GECKO_FUN_UART_RX 1U
57 : /** UART RTS */
58 1 : #define GECKO_FUN_UART_RTS 2U
59 : /** UART CTS */
60 1 : #define GECKO_FUN_UART_CTS 3U
61 : /** UART LOCATION */
62 1 : #define GECKO_FUN_UART_LOC 4U
63 :
64 0 : #define GECKO_FUN_SPI_MISO 5U
65 0 : #define GECKO_FUN_SPI_MOSI 6U
66 0 : #define GECKO_FUN_SPI_CSN 7U
67 0 : #define GECKO_FUN_SPI_SCK 8U
68 :
69 0 : #define GECKO_FUN_I2C_SDA 9U
70 0 : #define GECKO_FUN_I2C_SCL 10U
71 0 : #define GECKO_FUN_I2C_SDA_LOC 11U
72 0 : #define GECKO_FUN_I2C_SCL_LOC 12U
73 :
74 : /** @} */
75 :
76 : /**
77 : * @brief Utility macro to build GECKO psels property entry.
78 : *
79 : * @param fun Pin function configuration (see GECKO_FUNC_{name} macros).
80 : * @param port Port (0 or 1).
81 : * @param pin Pin (0..31).
82 : */
83 1 : #define GECKO_PSEL(fun, port, pin) \
84 : (((GECKO_PORT_##port & GECKO_PORT_MSK) << GECKO_PORT_POS) | \
85 : ((GECKO_PIN(##pin##) & GECKO_PIN_MSK) << GECKO_PIN_POS) | \
86 : ((GECKO_FUN_##fun & GECKO_FUN_MSK) << GECKO_FUN_POS))
87 :
88 : /**
89 : * @brief Utility macro to build GECKO_psels property entry.
90 : *
91 : * @param fun Pin function configuration (see GECKO_FUNC_{name} macros).
92 : * @param loc Location.
93 : */
94 1 : #define GECKO_LOC(fun, loc) \
95 : (((GECKO_LOCATION(##loc##) & GECKO_LOC_MSK) << GECKO_LOC_POS) | \
96 : ((GECKO_FUN_##fun##_LOC & GECKO_FUN_MSK) << GECKO_FUN_POS))
97 :
98 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ */
|