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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
/******************************************************************************
* LEGAL NOTICE *
* *
* USE OF THIS SOFTWARE (including any copy or compiled version thereof) AND *
* DOCUMENTATION IS SUBJECT TO THE SOFTWARE LICENSE AND RESTRICTIONS AND THE *
* WARRANTY DISLCAIMER SET FORTH IN LEGAL_NOTICE.TXT FILE. IF YOU DO NOT *
* FULLY ACCEPT THE TERMS, YOU MAY NOT INSTALL OR OTHERWISE USE THE SOFTWARE *
* OR DOCUMENTATION. *
* NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS NOTICE, INSTALLING OR *
* OTHERISE USING THE SOFTWARE OR DOCUMENTATION INDICATES YOUR ACCEPTANCE OF *
* THE LICENSE TERMS AS STATED. *
* *
******************************************************************************/
/* Version: 1.8.9\3686 */
/* Build : 13 */
/* Date : 12/08/2012 */
/**
\file
\brief SPRD_FPGA GPIO support
Functions to access GPIO unit in SPRD_FPGA CPU, allowing GPSenseEngine to control GPIO lines.
\attention This file is not completed, and must be updated for SPRD_FPGA (Please verify all 'TODO' comments are handled)
*/
#ifdef __cplusplus
extern "C" {
#endif
//#include <linux/gpio.h>
#include <soc/sprd/gpio.h>
//#include <asm/mach-types.h>
#include <asm/io.h>
#include <soc/sprd/board.h>
#include <soc/sprd/hardware.h>
#include <soc/sprd/irqs.h>
// ===========================================================================
//Kernel Ioctl
#include "CgTypes.h" /**< CellGuide Types */
#include "CgCpu.h"
/** OK status */
#define ECgOk (0)
// ===========================================================================
// ===========================================================================
/**
Internal function, set/reset a GPIO.
This function is used by API functions CgCpuGpioSet & CgCpuGpioReset
*/
#if 0
static TCgReturnCode GpioSet(U32 aPin, U32 aValue)
{
//DBG_FUNC_NAME("GpioSet");
TCgReturnCode rc = ECgOk;
// unsigned long gpio_addr = 0;
return rc;
}
#endif
TCgReturnCode CgCpuGpioSet(U32 aPin)
{
U32 gpio_num;
gpio_num = aPin;
__gpio_set_value(gpio_num,1);
return ECgOk;
}
TCgReturnCode CgCpuGpioReset(U32 aPin)
{
U32 gpio_num;
gpio_num = aPin;
__gpio_set_value(gpio_num,0);
return ECgOk ;
}
TCgReturnCode CgCpuGpioGet(U32 aPin, int *aValue)
{
U32 rc = 0;
//DBG_FUNC_NAME("CgCpuGpioGet");
*aValue = __gpio_get_value(aPin);
*aValue = 0;
return rc;
}
TCgReturnCode CgCpuGpioModeSet(U32 aPin, TCgCpuGpioMode aMode)
{
//U32 extint = 0;
TCgReturnCode rc = ECgOk;
// unsigned long gpio_dir = 0;
//bxd add
if(aMode == ECG_CPU_GPIO_INPUT)
gpio_direction_input (aPin);
else if(aMode == ECG_CPU_GPIO_OUTPUT)
gpio_direction_output(aPin,1);
//DBG_FUNC_NAME("CgCpuGpioModeSet")
return rc;
}
TCgReturnCode CgCpuGpioPull(U32 aPinCode, TCgCpuGpioPull aPull)
{
// U32 group = (aPinCode / CG_CPU_GPIO_GROUP_SIZE) - 1;
// U32 pin = aPinCode % CG_CPU_GPIO_GROUP_SIZE;
return ECgOk;
}
TCgReturnCode CgCpuGpioStrength(U32 aPinCode, U32 aStrength)
{
//U32 group = (aPinCode / CG_CPU_GPIO_GROUP_SIZE) - 1;
//U32 pin = aPinCode % CG_CPU_GPIO_GROUP_SIZE;
return ECgOk;
}
TCgReturnCode CgCpuGpioCreate(void)
{
TCgReturnCode rc = ECgOk;
#if 0
gpio_request(GPIO_GPS_IRQ, "gps_irq");
gpio_direction_input(GPIO_GPS_IRQ);
gps_irq = gpio_to_irq(GPIO_RESET_IRQ);
gpio_request(GPIO_GPS_RESET , "gps_rst");
printk("%s oob_irq:%d\n", __func__, oob_irq);
#endif
return rc;
}
TCgReturnCode CgCpuGpioDestroy(void)
{
u32 rc = 0;
#if 0
gpio_free(GPIO_GPS_IRQ);
gpio_free(GPIO_GPS_RESET);
#endif
return rc;
}
int SPRD_FPGA_gpio_set_regvalue(unsigned long addr, unsigned int bit, unsigned int data)
{
return 0;
}
int SPRD_FPGA_gpio_get_regvalue(unsigned long addr, unsigned int bit)
{
unsigned int value = 0;
return value;
}
#ifdef __cplusplus
}
#endif
|