1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
| /* SPDX-License-Identifier: GPL-2.0 */
| /*
| * Copyright (C) 2023 Rockchip Electronics Co. Ltd.
| *
| * Author: Steven Liu <steven.liu@rock-chips.com>
| */
|
| #ifndef _PINCTRL_CORE_H_
| #define _PINCTRL_CORE_H_
|
| #include <dt-bindings/mfd/rockchip-serdes.h>
|
| #include "hal_def.h"
| #include "hal_os_def.h"
|
| typedef enum {
| PIN_UNDEF,
| PIN_RKX110,
| PIN_RKX120,
| PIN_ALL,
| PIN_MAX,
| } HAL_PinType;
|
| struct hwpin;
|
| struct xferpin {
| HAL_PinType type;
| char *name; /* slave addr is expected */
| void *client;
| uint32_t bank;
| uint32_t mpins;
| uint32_t param;
| HAL_RegRead_t *read;
| HAL_RegWrite_t *write;
| };
|
| struct hwpin {
| char name[32];
| HAL_PinType type;
| uint32_t grf_base;
| uint32_t bank;
| uint32_t mpins;
| uint32_t param;
| struct xferpin xfer;
| };
|
| typedef enum {
| GPIO0_A0 = 0,
| GPIO0_A1,
| GPIO0_A2,
| GPIO0_A3,
| GPIO0_A4,
| GPIO0_A5,
| GPIO0_A6,
| GPIO0_A7,
| GPIO0_B0 = 8,
| GPIO0_B1,
| GPIO0_B2,
| GPIO0_B3,
| GPIO0_B4,
| GPIO0_B5,
| GPIO0_B6,
| GPIO0_B7,
| GPIO0_C0 = 16,
| GPIO0_C1,
| GPIO0_C2,
| GPIO0_C3,
| GPIO0_C4,
| GPIO0_C5,
| GPIO0_C6,
| GPIO0_C7,
| GPIO0_D0 = 24,
| GPIO0_D1,
| GPIO0_D2,
| GPIO0_D3,
| GPIO0_D4,
| GPIO0_D5,
| GPIO0_D6,
| GPIO0_D7,
| GPIO1_A0 = 32,
| GPIO1_A1,
| GPIO1_A2,
| GPIO1_A3,
| GPIO1_A4,
| GPIO1_A5,
| GPIO1_A6,
| GPIO1_A7,
| GPIO1_B0 = 40,
| GPIO1_B1,
| GPIO1_B2,
| GPIO1_B3,
| GPIO1_B4,
| GPIO1_B5,
| GPIO1_B6,
| GPIO1_B7,
| GPIO1_C0 = 48,
| GPIO1_C1,
| GPIO1_C2,
| GPIO1_C3,
| GPIO1_C4,
| GPIO1_C5,
| GPIO1_C6,
| GPIO1_C7,
| GPIO1_D0 = 56,
| GPIO1_D1,
| GPIO1_D2,
| GPIO1_D3,
| GPIO1_D4,
| GPIO1_D5,
| GPIO1_D6,
| GPIO1_D7,
| GPIO_NUM_MAX
| } ePINCTRL_PIN;
|
| typedef enum {
| PINCTRL_IOMUX_FUNC0,
| PINCTRL_IOMUX_FUNC1,
| PINCTRL_IOMUX_FUNC2,
| PINCTRL_IOMUX_FUNC3,
| PINCTRL_IOMUX_FUNC4,
| PINCTRL_IOMUX_FUNC5,
| PINCTRL_IOMUX_FUNC6,
| PINCTRL_IOMUX_FUNC7,
| } ePINCTRL_iomuxFunc;
|
| typedef enum {
| PINCTRL_PULL_NORMAL,
| PINCTRL_PULL_UP,
| PINCTRL_PULL_DOWN,
| PINCTRL_PULL_KEEP
| } ePINCTRL_pullMode;
|
| /*
| * Special pull configuration.
| * Only enable and disable.
| * The specific pull-up or pull-down can not be configured.
| */
| typedef enum {
| PINCTRL_PULL_DIS,
| PINCTRL_PULL_EN
| } ePINCTRL_pullEnable;
|
| typedef enum {
| PINCTRL_DRIVE_LEVEL0,
| PINCTRL_DRIVE_LEVEL1,
| PINCTRL_DRIVE_LEVEL2,
| PINCTRL_DRIVE_LEVEL3,
| PINCTRL_DRIVE_LEVEL4,
| PINCTRL_DRIVE_LEVEL5,
| PINCTRL_DRIVE_LEVEL6,
| PINCTRL_DRIVE_LEVEL7
| } ePINCTRL_driveLevel;
|
| typedef enum {
| PINCTRL_SCHMITT_DIS,
| PINCTRL_SCHMITT_EN
| } ePINCTRL_schmitt;
|
| uint32_t HAL_PINCTRL_Read(struct hwpin *hw, uint32_t reg);
| uint32_t HAL_PINCTRL_Write(struct hwpin *hw, uint32_t reg, uint32_t val);
|
| HAL_Status HAL_PINCTRL_Init(void);
| HAL_Status HAL_PINCTRL_SetParam(struct hwpin *hw, uint32_t mPins, uint32_t param);
| HAL_Status HAL_PINCTRL_SetIOMUX(struct hwpin *hw, uint32_t mPins, uint32_t param);
|
| #endif /* _PINCTRL_CORE_H_ */
|
|