Skip to content

Commit 89754d8

Browse files
mchp-asifnandojve
authored andcommitted
hal: microchip: pic32c: add PIC32CX SG pin definitions
Added dt-binding header files for the following device families. - PIC32CX_SG41 - PIC32CX_SG60 - PIC32CX_SG61 Signed-off-by: Muhammed Asif <[email protected]>
1 parent ac9c123 commit 89754d8

File tree

9 files changed

+16197
-0
lines changed

9 files changed

+16197
-0
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
/*
2+
* Copyright (c) 2025 Microchip Technology Inc.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#ifndef INCLUDE_DT_BINDINGS_PIC32CX_SG_COMMON_MCHP_PINCTRL_PINMUX_PIC32C_H_
8+
#define INCLUDE_DT_BINDINGS_PIC32CX_SG_COMMON_MCHP_PINCTRL_PINMUX_PIC32C_H_
9+
10+
/** PORT */
11+
#define MCHP_PINMUX_PORT_a 0U
12+
#define MCHP_PINMUX_PORT_b 1U
13+
#define MCHP_PINMUX_PORT_c 2U
14+
15+
/** GPIO */
16+
#define MCHP_PINMUX_PERIPH_gpio 0U
17+
18+
/** Peripherals */
19+
#define MCHP_PINMUX_PERIPH_a 0U
20+
#define MCHP_PINMUX_PERIPH_b 1U
21+
#define MCHP_PINMUX_PERIPH_c 2U
22+
#define MCHP_PINMUX_PERIPH_d 3U
23+
#define MCHP_PINMUX_PERIPH_e 4U
24+
#define MCHP_PINMUX_PERIPH_f 5U
25+
#define MCHP_PINMUX_PERIPH_g 6U
26+
#define MCHP_PINMUX_PERIPH_h 7U
27+
#define MCHP_PINMUX_PERIPH_i 8U
28+
#define MCHP_PINMUX_PERIPH_j 9U
29+
#define MCHP_PINMUX_PERIPH_k 10U
30+
31+
/** Extra */
32+
#define MCHP_PINMUX_PERIPH_x 0U
33+
34+
/** System */
35+
#define MCHP_PINMUX_PERIPH_s 0U
36+
37+
/** LPM */
38+
#define MCHP_PINMUX_PERIPH_lpm 0U
39+
40+
/** Wake-up pin sources */
41+
#define MCHP_PINMUX_PERIPH_wkup0 0U
42+
#define MCHP_PINMUX_PERIPH_wkup1 1U
43+
#define MCHP_PINMUX_PERIPH_wkup2 2U
44+
#define MCHP_PINMUX_PERIPH_wkup3 3U
45+
#define MCHP_PINMUX_PERIPH_wkup4 4U
46+
#define MCHP_PINMUX_PERIPH_wkup5 5U
47+
#define MCHP_PINMUX_PERIPH_wkup6 6U
48+
#define MCHP_PINMUX_PERIPH_wkup7 7U
49+
#define MCHP_PINMUX_PERIPH_wkup8 8U
50+
#define MCHP_PINMUX_PERIPH_wkup9 9U
51+
#define MCHP_PINMUX_PERIPH_wkup10 10U
52+
#define MCHP_PINMUX_PERIPH_wkup11 11U
53+
#define MCHP_PINMUX_PERIPH_wkup12 12U
54+
#define MCHP_PINMUX_PERIPH_wkup13 13U
55+
#define MCHP_PINMUX_PERIPH_wkup14 14U
56+
#define MCHP_PINMUX_PERIPH_wkup15 15U
57+
58+
/** Selects pin to be used as GPIO */
59+
#define MCHP_PINMUX_FUNC_gpio 0U
60+
/** Selects pin to be used as by some peripheral */
61+
#define MCHP_PINMUX_FUNC_periph 1U
62+
/** Selects pin to be used as extra function */
63+
#define MCHP_PINMUX_FUNC_extra 2U
64+
/** Selects pin to be used as system function */
65+
#define MCHP_PINMUX_FUNC_system 3U
66+
/** Selects and configure pin to be used in Low Power Mode */
67+
#define MCHP_PINMUX_FUNC_lpm 4U
68+
/** Selects and configure wake-up pin sources Low Power Mode */
69+
#define MCHP_PINMUX_FUNC_wakeup 5U
70+
71+
/** Pinmux bit field position. */
72+
#define MCHP_PINCTRL_PINMUX_POS (16U)
73+
/** Pinmux bit field mask. */
74+
#define MCHP_PINCTRL_PINMUX_MASK (0xFFFF)
75+
76+
/** Port field mask. */
77+
#define MCHP_PINMUX_PORT_MSK (0xFU)
78+
/** Port field position. */
79+
#define MCHP_PINMUX_PORT_POS (0U)
80+
/** Pin field mask. */
81+
#define MCHP_PINMUX_PIN_MSK (0x1FU)
82+
/** Pin field position. */
83+
#define MCHP_PINMUX_PIN_POS (MCHP_PINMUX_PORT_POS + 4U)
84+
/** Function field mask. */
85+
#define MCHP_PINMUX_FUNC_MSK (0x7U)
86+
/** Function field position. */
87+
#define MCHP_PINMUX_FUNC_POS (MCHP_PINMUX_PIN_POS + 5U)
88+
/** Peripheral field mask. */
89+
#define MCHP_PINMUX_PERIPH_MSK (0xFU)
90+
/** Peripheral field position. */
91+
#define MCHP_PINMUX_PERIPH_POS (MCHP_PINMUX_FUNC_POS + 3U)
92+
93+
/*
94+
* MCHP pinmux bit field.
95+
*
96+
* Fields:
97+
*
98+
* - 0..3: port
99+
* - 4..8: pin_num
100+
* - 9..11: func
101+
* - 12..15: pin_mux
102+
*
103+
* port Port ('A'..'K')
104+
* pin Pin (0..31)
105+
* func Function (GPIO, Peripheral, System, Extra, LPM - 0..4)
106+
* pin_mux Peripheral based on the Function selected (0..15)
107+
*/
108+
#define MCHP_PINMUX(port, pin_num, pin_mux, func) \
109+
((((MCHP_PINMUX_PORT_##port) & MCHP_PINMUX_PORT_MSK) \
110+
<< MCHP_PINMUX_PORT_POS) | \
111+
(((pin_num) & MCHP_PINMUX_PIN_MSK) << MCHP_PINMUX_PIN_POS) | \
112+
(((MCHP_PINMUX_FUNC_##func) & MCHP_PINMUX_FUNC_MSK) \
113+
<< MCHP_PINMUX_FUNC_POS) | \
114+
(((MCHP_PINMUX_PERIPH_##pin_mux) & MCHP_PINMUX_PERIPH_MSK) \
115+
<< MCHP_PINMUX_PERIPH_POS))
116+
117+
/*
118+
* Obtain Pinmux value from pinctrl_soc_pin_t configuration.
119+
*
120+
* pincfg pinctrl_soc_pin_t bit field value.
121+
*/
122+
#define MCHP_PINMUX_PIN_GET(pincfg) \
123+
((pincfg >> MCHP_PINMUX_PIN_POS) & MCHP_PINMUX_PIN_MSK)
124+
#define MCHP_PINMUX_PORT_GET(pincfg) \
125+
((pincfg >> MCHP_PINMUX_PORT_POS) & MCHP_PINMUX_PORT_MSK)
126+
#define MCHP_PINMUX_FUNC_GET(pincfg) \
127+
((pincfg >> MCHP_PINMUX_FUNC_POS) & MCHP_PINMUX_FUNC_MSK)
128+
#define MCHP_PINMUX_PERIPH_GET(pincfg) \
129+
((pincfg >> MCHP_PINMUX_PERIPH_POS) & MCHP_PINMUX_PERIPH_MSK)
130+
131+
#endif /* INCLUDE_DT_BINDINGS_PIC32CX_SG_COMMON_MCHP_PINCTRL_PINMUX_PIC32C_H_ */

0 commit comments

Comments
 (0)