tizen 2.4 release
[profile/mobile/platform/kernel/linux-3.10-sc7730.git] / drivers / misc / gpsip / cgdriver / CgxDriverCore.h
1 /******************************************************************************\r
2  *                                LEGAL NOTICE                                *\r
3  *                                                                            *\r
4  *  USE OF THIS SOFTWARE (including any copy or compiled version thereof) AND *\r
5  *  DOCUMENTATION IS SUBJECT TO THE SOFTWARE LICENSE AND RESTRICTIONS AND THE *\r
6  *  WARRANTY DISLCAIMER SET FORTH IN LEGAL_NOTICE.TXT FILE. IF YOU DO NOT     *\r
7  *  FULLY ACCEPT THE TERMS, YOU MAY NOT INSTALL OR OTHERWISE USE THE SOFTWARE *\r
8  *  OR DOCUMENTATION.                                                         *\r
9  *  NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS NOTICE, INSTALLING OR    *\r
10  *  OTHERISE USING THE SOFTWARE OR DOCUMENTATION INDICATES YOUR ACCEPTANCE OF *\r
11  *  THE LICENSE TERMS AS STATED.                                              *\r
12  *                                                                            *\r
13  ******************************************************************************/\r
14 /* Version: 1.8.9\3686 */\r
15 /* Build  : 13 */\r
16 /* Date   : 12/08/2012 */\r
17 \r
18 /**\r
19         \file\r
20         \brief CellGuide CGX5900 driver core prototypes (non-OS depended)\r
21         \attention This file should not be modified.\r
22                 If you think something is wrong here, please contact CellGuide\r
23 \r
24 */\r
25 \r
26 #ifndef CGX_DRIVR_CORE_H\r
27 #define CGX_DRIVR_CORE_H\r
28 \r
29 \r
30 #include "CgReturnCodes.h"\r
31 #include "CgxDriverApi.h"\r
32 \r
33 #define CG_CG_CORE_REG_BASE_ADDRESS     (0)\r
34 \r
35 /**\r
36         Stop driver.\r
37         The function is called as a result of GPSenseEngine CGX_IOCTL_STOP request.\r
38         Stop the driver current operations, destroy all memory structures and release system resources.\r
39         this function is the counterpart of CgxDriverConstruct.\r
40 \r
41         \note Generic function : Not required to be ported\r
42 \r
43     \param[in]  pDriver                 Global driver structure pointer\r
44         \return System wide return code  (see CgReturnCodes.h)\r
45         \retval ECgOk if data ready is 0 (low active)\r
46 */\r
47 TCgReturnCode CgxDriverDestroy(\r
48         void *pDriver);\r
49 \r
50 \r
51 \r
52 /**\r
53         Setup driver structure\r
54 \r
55     \param[in]  pDriver                 Global driver structure pointer\r
56     \param[in]  pState                  Driver state structure pointer\r
57 \r
58         \return System wide return code  (see CgReturnCodes.h)\r
59         \retval ECgOk if data ready is 0 (low active)\r
60 \r
61 */\r
62 TCgReturnCode CgxDriverConstruct(\r
63         void *pDriver,\r
64         TCgxDriverState *pState);\r
65 \r
66 \r
67 \r
68 \r
69 \r
70 \r
71 /**\r
72         Execute request\r
73 \r
74     \param[in]  pDriver                 Global driver structure pointer\r
75     \param[in]  pState                  Driver state structure pointer\r
76     \param[in]  aRequest\r
77     \param[in]  pControl\r
78     \param[in]  pResults\r
79 \r
80         \return System wide return code  (see CgReturnCodes.h)\r
81         \retval ECgOk if data ready is 0 (low active)\r
82 \r
83 */\r
84 TCgReturnCode CgxDriverExecute(\r
85         void *pDriver,\r
86         TCgxDriverState *pState,\r
87         U32 aRequest,\r
88         TCgDriverControl *pControl,\r
89         TCgDriverStatus *pResults);\r
90 \r
91 /**\r
92         Execute request, specific to IP/Core\r
93 \r
94         \param[in]  pDriver                     Global driver structure pointer\r
95         \param[in]  pState                      Driver state structure pointer\r
96         \param[in]  aRequest\r
97         \param[in]  pControl\r
98         \param[in]  pResults\r
99 \r
100         \return System wide return code  (see CgReturnCodes.h)\r
101         \retval ECgOk if data ready is 0 (low active)\r
102 \r
103 */\r
104 TCgReturnCode CgxDriverExecuteSpecific(\r
105                                                            void *pDriver,\r
106                                                            TCgxDriverState *pState,\r
107                                                            U32 aRequest,\r
108                                                            TCgDriverControl *pControl,\r
109                                                            TCgDriverStatus *pResults);\r
110 \r
111 \r
112 /**\r
113         Check if request canceled\r
114 \r
115     \param[in]  pState                  Driver state structure pointer\r
116 \r
117         \return System wide return code  (see CgReturnCodes.h)\r
118         \retval ECgOk if data ready is 0 (low active)\r
119 \r
120 */\r
121 TCgReturnCode CgxDriverIsReadCanceled(TCgxDriverState *pState);\r
122 \r
123 \r
124 \r
125 /**\r
126         Handle GPS interrupt\r
127 \r
128     \param[in]  pDriver                 Global driver structure pointer\r
129     \param[in]  pState                  Driver state structure pointer\r
130 \r
131         \return System wide return code  (see CgReturnCodes.h)\r
132         \retval ECgOk if data ready is 0 (low active)\r
133 \r
134 */\r
135 TCgReturnCode CgxDriverGpsInterruptHandler(\r
136         void *pDriver,\r
137         TCgxDriverState *pState);\r
138 \r
139 \r
140 \r
141 /**\r
142         Handle DMA interrupt\r
143 \r
144     \param[in]  pDriver                 Global driver structure pointer\r
145     \param[in]  pState                  Driver state structure pointer\r
146 \r
147         \return System wide return code  (see CgReturnCodes.h)\r
148         \retval ECgOk if data ready is 0 (low active)\r
149 \r
150 */\r
151 TCgReturnCode CgxDriverDataReadyInterruptHandler(\r
152         void *pDriver,\r
153         TCgxDriverState *pState);\r
154 \r
155 TCgReturnCode CgxDriverHardwareReset(unsigned long aResetLevel);\r
156 \r
157 /**\r
158         Move chip to power down mode\r
159 \r
160         \return System wide return code  (see CgReturnCodes.h)\r
161         \retval ECgOk if chip finished power-down\r
162 \r
163 */\r
164 TCgReturnCode CgxDriverPowerDown(void);\r
165 \r
166 /**\r
167         Move chip to power up mode\r
168 \r
169         \return System wide return code  (see CgReturnCodes.h)\r
170         \retval ECgOk if chip finished power-down\r
171 \r
172 */\r
173 TCgReturnCode CgxDriverPowerUp(void);\r
174 \r
175 /**\r
176 Cut power from the CellGuide device\r
177 \r
178 \return System wide return code  (see CgReturnCodes.h)\r
179 \retval ECgOk if chip finished power-down\r
180 \r
181 */\r
182 TCgReturnCode CgxDriverPowerOn(void);\r
183 \r
184 /**\r
185 Connect power to the CellGuide device\r
186 \r
187 \return System wide return code  (see CgReturnCodes.h)\r
188 \retval ECgOk if chip finished power-down\r
189 \r
190 */\r
191 TCgReturnCode CgxDriverPowerOff(void);\r
192 \r
193 /**\r
194 Move RF chip to power down mode\r
195 \r
196 \return System wide return code  (see CgReturnCodes.h)\r
197 \retval ECgOk if RF chip finished power-down\r
198 \r
199 */\r
200 TCgReturnCode CgxDriverRFPowerDown(void);\r
201 \r
202 /**\r
203 Move RF chip to power down mode\r
204 \r
205 \return System wide return code  (see CgReturnCodes.h)\r
206 \retval ECgOk if RF chip finished power-up\r
207 \r
208 */\r
209 TCgReturnCode CgxDriverRFPowerUp(void);\r
210 \r
211 /**\r
212         Set output of CGsnap's GPO aGpioPin, to aVal\r
213 \r
214         \return System wide return code  (see CgReturnCodes.h)\r
215 */\r
216 TCgReturnCode CgCGCoreGpioSet(U32 aGpioPin, U32 aVal);\r
217 \r
218 \r
219 #if 0\r
220 //gaole add\r
221 void CgCoreReleaseRes(void);\r
222 void CgGpsReset(void);\r
223 #endif\r
224 \r
225 \r
226 \r
227 #ifndef MIN\r
228         #define MIN(__a__, __b__)                                       ((__a__) < (__b__) ? (__a__) : (__b__))\r
229 #endif\r
230 \r
231 //#define CGCORE_ACCESS_VIA_SPI\r
232 extern bool flag_power_up;\r
233 extern void gps_gpio_request(void);\r
234 \r
235 #ifdef CGCORE_ACCESS_VIA_SPI\r
236 extern int gps_spi_sysreg_write_bytes (u32 len, u32 addr, u32 data);\r
237 extern int gps_spi_sysreg_read_bytes (u32 len, u32 addr, u32 * data);\r
238 \r
239 extern  int gps_spi_write_bytes( unsigned int  len, unsigned int  addr,unsigned int data);\r
240     #define CGCORE_WRITE_REG(addr,val)        \\r
241             gps_spi_write_bytes(1,(U32)addr,val)\r
242 \r
243 \r
244 extern int gps_spi_read_bytes( unsigned int len,unsigned int addr,unsigned int *data);\r
245     #define CGCORE_READ_REG(addr,val)        \\r
246         gps_spi_read_bytes(1,(U32)addr,(unsigned int *)val)\r
247 \r
248 #else\r
249      #define CGCORE_WRITE_REG(addr,val)          CgxCpuWriteMemory((U32)CG_DRIVER_CGCORE_BASE_VA, (U32)addr, val);\r
250      #define CGCORE_READ_REG(addr,val)          CgxCpuReadMemory((U32)CG_DRIVER_CGCORE_BASE_VA, (U32)addr, val);\r
251 #endif\r
252 \r
253 \r
254 \r
255 #endif\r