Line data Source code
1 0 : /*
2 : * Copyright (c) 2021 Microchip Technology Inc.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MCHP_XEC_PINCTRL_H_
8 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MCHP_XEC_PINCTRL_H_
9 :
10 : #include <zephyr/dt-bindings/dt-util.h>
11 :
12 0 : #define MCHP_GPIO 0x0
13 0 : #define MCHP_AF0 0x0
14 0 : #define MCHP_AF1 0x1
15 0 : #define MCHP_AF2 0x2
16 0 : #define MCHP_AF3 0x3
17 0 : #define MCHP_AF4 0x4
18 0 : #define MCHP_AF5 0x5
19 0 : #define MCHP_AF6 0x6
20 0 : #define MCHP_AF7 0x7
21 0 : #define MCHP_AFMAX 0x8
22 :
23 0 : #define MCHP_XEC_NO_PUD_POS 12
24 0 : #define MCHP_XEC_PD_POS 13
25 0 : #define MCHP_XEC_PU_POS 14
26 0 : #define MCHP_XEC_PUSH_PULL_POS 15
27 0 : #define MCHP_XEC_OPEN_DRAIN_POS 16
28 0 : #define MCHP_XEC_OUT_DIS_POS 17
29 0 : #define MCHP_XEC_OUT_EN_POS 18
30 0 : #define MCHP_XEC_OUT_HI_POS 19
31 0 : #define MCHP_XEC_OUT_LO_POS 20
32 : /* bit[21] unused */
33 0 : #define MCHP_XEC_SLEW_RATE_POS 22
34 0 : #define MCHP_XEC_SLEW_RATE_MSK0 0x3
35 0 : #define MCHP_XEC_SLEW_RATE_SLOW0 0x1
36 0 : #define MCHP_XEC_SLEW_RATE_FAST0 0x2
37 0 : #define MCHP_XEC_DRV_STR_POS 24
38 0 : #define MCHP_XEC_DRV_STR_MSK0 0x7
39 0 : #define MCHP_XEC_DRV_STR0_1X 0x1 /* 2 or 4(PIO-24) mA */
40 0 : #define MCHP_XEC_DRV_STR0_2X 0x2 /* 4 or 8(PIO-24) mA */
41 0 : #define MCHP_XEC_DRV_STR0_4X 0x3 /* 8 or 16(PIO-24) mA */
42 0 : #define MCHP_XEC_DRV_STR0_6X 0x4 /* 12 or 24(PIO-24) mA */
43 0 : #define MCHP_XEC_PIN_LOW_POWER_POS 27
44 0 : #define MCHP_XEC_FUNC_INV_POS 29
45 :
46 0 : #define MCHP_XEC_PINMUX_PORT_POS 0
47 0 : #define MCHP_XEC_PINMUX_PORT_MSK 0xf
48 0 : #define MCHP_XEC_PINMUX_PIN_POS 4
49 0 : #define MCHP_XEC_PINMUX_PIN_MSK 0x1f
50 0 : #define MCHP_XEC_PINMUX_FUNC_POS 9
51 0 : #define MCHP_XEC_PINMUX_FUNC_MSK 0x7
52 :
53 : /* n is octal pin number or equivalent in another base.
54 : * MCHP XEC documentation specifies pin numbers in octal.
55 : * f is function number
56 : * b[3:0] = pin bank
57 : * b[8:4] = pin position in bank
58 : * b[11:9] = function
59 : */
60 0 : #define MCHP_XEC_PINMUX(n, f) \
61 : (((((n) >> 5) & MCHP_XEC_PINMUX_PORT_MSK) << MCHP_XEC_PINMUX_PORT_POS) | \
62 : (((n) & MCHP_XEC_PINMUX_PIN_MSK) << MCHP_XEC_PINMUX_PIN_POS) | \
63 : (((f) & MCHP_XEC_PINMUX_FUNC_MSK) << MCHP_XEC_PINMUX_FUNC_POS))
64 :
65 :
66 0 : #define MCHP_XEC_PINMUX_PORT(p) \
67 : (((p) >> MCHP_XEC_PINMUX_PORT_POS) & MCHP_XEC_PINMUX_PORT_MSK)
68 :
69 0 : #define MCHP_XEC_PINMUX_PIN(p) \
70 : (((p) >> MCHP_XEC_PINMUX_PIN_POS) & MCHP_XEC_PINMUX_PIN_MSK)
71 :
72 0 : #define MCHP_XEC_PINMUX_FUNC(p) \
73 : (((p) >> MCHP_XEC_PINMUX_FUNC_POS) & MCHP_XEC_PINMUX_FUNC_MSK)
74 :
75 0 : #define MEC_XEC_PINMUX_PORT_PIN(p) \
76 : ((p) & ((MCHP_XEC_PINMUX_PORT_MSK << MCHP_XEC_PINMUX_PORT_POS) | \
77 : (MCHP_XEC_PINMUX_PIN_MSK << MCHP_XEC_PINMUX_PIN_POS)))
78 :
79 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MCHP_XEC_PINCTRL_H_ */
|