blob: fad2ec072c70584b612632c1bbcec3cd87e45a94 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2016
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSKTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35#ifndef _HSCDEFS_H_
36#define _HSCDEFS_H_
37/*****************************************************************************
38*
39* FILE NAME : hscdefs.h
40*
41* DESCRIPTION : This file contains general constants and definitions used by
42* the L1D unit
43*
44* HISTORY :
45* See Log at end of file
46*
47*****************************************************************************/
48
49/*----------------------------------------------------------------------------
50 Include Files
51----------------------------------------------------------------------------*/
52#include "do_mpaapi.h"
53#include "hscapi.h"
54#include "hscapiex.h"
55#include "systyp.h"
56
57/*----------------------------------------------------------------------------
58 Hardware Macros
59----------------------------------------------------------------------------*/
60/*----------------------------------------------------------------------------
61 MPA definitions
62----------------------------------------------------------------------------*/
63typedef struct
64{
65 MpaAntennaInfoT MpaRfAntenna[MPA_RF_NUM_PATHS]; /*HWD_RF_MPA_MAX_PATH_NUM */
66 kal_uint8 AllStatus;
67 kal_uint8 Status[MPA_RF_NUM_APPS];
68 kal_uint8 RfPriv[MPA_RF_NUM_APPS];
69} HscMpaT;
70
71typedef enum
72{
73 HSC_OP_MODE_LEGACY_HYBRID_BN = 0,
74 HSC_OP_MODE_SHDR_WITH_DIV_BN,
75 HSC_OP_MODE_SHDR_2_MAINS_BN,
76 HSC_OP_MODE_SVDO_2_RX_BN,
77 HSC_OP_MODE_SVDO_3_RX_BN
78}HscMpaOpModeT;
79
80#define HSC_OP_MODE_LEGACY_HYBRID (1<<HSC_OP_MODE_LEGACY_HYBRID_BN)
81#define HSC_OP_MODE_SHDR_WITH_DIV (1<<HSC_OP_MODE_SHDR_WITH_DIV_BN)
82#define HSC_OP_MODE_SHDR_2_MAINS (1<<HSC_OP_MODE_SHDR_2_MAINS_BN)
83#define HSC_OP_MODE_SVDO_2_RX (1<<HSC_OP_MODE_SVDO_2_RX_BN)
84#define HSC_OP_MODE_SVDO_3_RX (1<<HSC_OP_MODE_SVDO_3_RX_BN)
85#define HSC_OP_MODE_SHDR (HSC_OP_MODE_SHDR_WITH_DIV | HSC_OP_MODE_SHDR_2_MAINS)
86#define HSC_OP_MODE_SVDO (HSC_OP_MODE_SVDO_2_RX | HSC_OP_MODE_SVDO_3_RX)
87#define HSC_OP_MODE_SHDR_OR_SVDO (HSC_OP_MODE_SHDR | HSC_OP_MODE_SVDO)
88
89extern kal_uint8 hscMpaOpMode;
90extern kal_uint8 hscMpaOpModeHwdConfig;
91
92/*----------------------------------------------------------------------------
93 Clk Calibration definitions
94----------------------------------------------------------------------------*/
95#define SP_CNT_32K_UPPER_8_MASK 0x00FF /* Upper mask 8bits:[23-16] of 32kHz counter [23:0] */
96#define SP_CNT_9MHZ_UPPER_4_MASK 0x000F /* Upper mask 4bits:[19-16] of 9MHz counter [19:0] */
97#define SP_CNT_9MHZ_UPPER_2_MASK 0x0003 /* bits [17-16] of 9MHz counter [19:0] */
98#define HSC_CLK_CAL_DO_PILOT_HIGH_CONFID 16462 /* -6dB in Q16 */
99#define HSC_CLK_CAL_DO_PILOT_MED_CONFID 8231 /* -9dB in Q16 */
100#define HSC_CLK_CAL_DO_PILOT_MIN_CONFID 4135 /* -12dB in Q16 */
101#define HSC_CLK_CAL_SETTLE_TIME_16X 16 /* settle time in units of slot cycle length */
102#define HSC_CLK_CAL_SETTLE_TIME_8X 8 /* settle time in units of slot cycle length */
103#define HSC_CLK_CAL_SETTLE_TIME_4X 4 /* settle time in units of slot cycle length */
104#define HSC_CLK_CAL_SETTLE_TIME_2X 2 /* settle time in units of slot cycle length */
105#define HSC_CLK_CAL_SETTLE_TIME_1X 1 /* settle time in units of slot cycle length */
106#define HSC_CLK_CAL_FAST_SETTLE_PERIOD 120 /* fast settle period in units of seconds */
107#define HSC_MINI_ACQ_ERR_TC8_THRESH (45*8) /* Threshold set at 45 chips */
108
109
110
111/*------------------------------------------------------------------------------
112 Spage Backoff Time Definitions (CBP7.0 Slotted Operation Section 2.4, Jing Su)
113-------------------------------------------------------------------------------*/
114#define HSC_SP_SLOTTED_WAKE_SCHE_SLOT_CNT 1
115#define HSC_SP_RX_AGC_SETTLE_SHORT_SLOT_CNT 2
116#define HSC_SP_RX_AGC_SETTLE_LONG_SLOT_CNT 4
117#define HSC_SP_MINI_ACQ_DATA_CAP_SLOT_CNT 3
118#define HSC_SP_MINI_ACQ_POST_PROC_SLOT_CNT 2
119#define HSC_SP_FING_ALLOC_SLOT_CNT 7
120
121/*----------------------------------------------------------------------------
122 DO TxFreeze Backoff Time Definitions
123----------------------------------------------------------------------------*/
124#define HSC_STOPDO_GUARD_FRMS 10 /* 10 guard frames whether in 1X or DO */
125
126/*----------------------------------------------------------------------------
127 HscSsm Definitions
128----------------------------------------------------------------------------*/
129#define HSC_32K_STEP_FRAC_SHIFT (18)
130
131#define HSC_9M_CNTS_PER_2048_80MS 0x60000000UL /* 9MHz count in max duration of Slotted cycle (9.8304MHz * 2048 * 80 ms) */
132#define HSC_26MS_FRM_CNTS_PER_2048_80MS 0x1800 /* 26ms Frame cnt in max duration of Slotted cycle (2048 * 3) */
133#define HSC_26MS_FRM_CNTS_MOD_MAX_SLOTPERIOD HSC_26MS_FRM_CNTS_PER_2048_80MS
134#define HSC_26MS_FRM_CNTS_MOD_MAX_32BITS 0xFFFFF000UL /* 0xFFFFF000 = 0x100000000/0x1800 */
135
136#define HSC_SSM_RESYNC_CAL_BACKOFF_SP_CLK_CNT (FRC_FREQ * 80 / 1000) /* Clk Cal Collision buffer 80ms */
137#define HSC_SSM_RESYNC_COLLISION_US (FRC_FREQ * 150 / 1000) /* Resync Collision buffer 150ms */
138#define HSC_SSM_DUAL_RESYNC_COLLISION_US (FRC_FREQ * 40 / 1000) /* Resync Collision buffer 40ms */
139#define HSC_SSM_RESYNC_SHDR_HYBRID_TIMER (150000) /* 150ms ahead, Resync decision to wake up in SHDR or hybrid */
140#define HSC_SSM_RESYNC_1X_SCAN_BACKOFF_US (2*FRC_FREQ) /* Resync Collision buffer 2s */
141#define HSC_SSM_RESYNC_DO_SCAN_BACKOFF_US (0*FRC_FREQ) /* Resync Collision buffer 0s */
142#define HSC_SSM_REF_TIME_SV_PERIOD (40) /* DO ref time supervision period: 40s */
143#define HSC_DO_SLT_BLOCK_LENGTH (106667) /* 64 slots */
144#define HSC_DO_WAKE_BLOCK_LENGTH (53333) /* 32 slots */
145
146#define HSC_SSM_STATUS_DO_BN 0
147#define HSC_SSM_STATUS_RESYNC_CMPLT_BN 1 /* completed hw Resync */
148#define HSC_SSM_STATUS_RESYNC_DENIED_BN 2 /* Slotted wakeup was denied */
149#define HSC_SSM_STATUS_SUSPENDED_BN 3 /* preempted and suspended */
150#define HSC_SSM_STATUS_WAKE_PENDING_BN 4 /* Wake Cmd was received */
151#define HSC_SSM_STATUS_WAKE_SCHEDULED_BN 5 /* Resync has been scheduled for the wake command */
152#define HSC_SSM_STATUS_MPA_NORM_REQ_PENDING_BN 6 /* waiting for RF Norm Req results */
153#define HSC_SSM_STATUS_MPA_NORM_REQ_IMMED_BN 7 /* Immediate RF request (1^MpaReqMsg.QueueRequest) */
154#define HSC_SSM_STATUS_TX_AVAILABLE_BN 10 /* Tx available Ind */
155#define HSC_SSM_STATUS_MPA_MEAS_REQ_BN 11 /* Antenna request is for Meas */
156#define HSC_SSM_STATUS_WAKE_PROCESSED_BN 12 /* Wake cmd is processed */
157#define HSC_SSM_STATUS_SLOTTED_BN 13 /* Slotted mode */
158
159#define HSC_SSM_STATUS_DO (1<<HSC_SSM_STATUS_DO_BN) /*0x0001*/
160#define HSC_SSM_STATUS_RESYNC_CMPLT (1<<HSC_SSM_STATUS_RESYNC_CMPLT_BN) /*0x0002*/
161#define HSC_SSM_STATUS_RESYNC_DENIED (1<<HSC_SSM_STATUS_RESYNC_DENIED_BN) /*0x0004*/
162#define HSC_SSM_STATUS_SUSPENDED (1<<HSC_SSM_STATUS_SUSPENDED_BN) /*0x0008*/
163#define HSC_SSM_STATUS_WAKE_PENDING (1<<HSC_SSM_STATUS_WAKE_PENDING_BN) /*0x0010*/
164#define HSC_SSM_STATUS_WAKE_SCHEDULED (1<<HSC_SSM_STATUS_WAKE_SCHEDULED_BN) /*0x0020*/
165#define HSC_SSM_STATUS_MPA_NORM_REQ_PENDING (1<<HSC_SSM_STATUS_MPA_NORM_REQ_PENDING_BN) /*0x0040*/
166#define HSC_SSM_STATUS_MPA_NORM_REQ_IMMED (1<<HSC_SSM_STATUS_MPA_NORM_REQ_IMMED_BN) /*0x0080*/
167#define HSC_SSM_STATUS_TX_AVAIL_IND_PEND (1<<HSC_SSM_STATUS_TX_AVAILABLE_BN) /*0x0400*/
168#define HSC_SSM_STATUS_MPA_MEAS_REQ (1<<HSC_SSM_STATUS_MPA_MEAS_REQ_BN) /*0x0800*/
169#define HSC_SSM_STATUS_WAKE_PROCESSED (1<<HSC_SSM_STATUS_WAKE_PROCESSED_BN) /*0x1000*/
170#define HSC_SSM_STATUS_SLOTTED (1<<HSC_SSM_STATUS_SLOTTED_BN)
171
172#define HSC_SSM_STATUS_RESYNC_RESET ( HSC_SSM_STATUS_RESYNC_CMPLT | \
173 HSC_SSM_STATUS_RESYNC_DENIED | \
174 HSC_SSM_STATUS_SUSPENDED )
175
176typedef enum
177{
178 HSC_SSM_ACTIVE_1xRTT,
179 HSC_SSM_ACTIVE_EVDO,
180 HSC_SSM_RESYNC,
181 HSC_SSM_WAIT_1,
182 HSC_SSM_WAIT_2,
183 HSC_SSM_SUSPENDED,
184 HSC_SSM_NUM_WAKE
185} WakeTypeT;
186
187typedef enum
188{
189 HSC_FM_NONE,
190 HSC_FM_ONGOING,
191 HSC_FM_DONE
192} HscFmStatusT;
193
194typedef struct
195{
196 HscFmStatusT FmStatus;
197 HscFmResultT FmResult;
198 kal_int32 MiniAcqCorrectionTc8;
199 kal_int32 OnlineAdj;
200 kal_int32 CalValue;
201 kal_uint16 MiniAcqPwrEst;
202 kal_int32 MiniAcqCalValue;
203 kal_uint8 CalScale[HSC_NUM_APPS]; /* CalScale = ResyncDenyCnt+1 */
204 kal_uint8 ResyncDenyCnt[HSC_NUM_APPS];
205 kal_uint32 SleepTimes;
206} HscClkCalT; /* This is the clk cal structure for DO, see SPageCal in l1d for 1X */
207
208
209typedef struct
210{
211 kal_uint32 RxPllSettle; /* Slotted Paging RF Rx Pll settle in symbols.*/
212 kal_uint32 RxAgcSettle; /* This is updated in frame handler */
213 kal_uint32 RxAgcSettleShort; /* Short Slotted Paging RxAgc settle in symbols.*/
214 kal_uint32 RxAgcSettleLong; /* Long Slotted Paging RxAgc settle in symbols.*/
215 kal_uint32 MiniAcq; /* Buffer Capture, search, and finger allocation delay in ms */
216 kal_uint32 MiscAdj; /* Time between Resync Lisr to Resync Hisr */
217} HscSpBackoffT;
218
219typedef struct
220{
221 FrameRecT WakeFrame;
222 kal_uint32 FRC_Resync;
223} HscDoStopTxT;
224
225typedef struct
226{ /* WARNING! THis structure is reset to 0 before every Resync Time calc */
227 kal_bool Valid;
228 FrameRecT PchWakeSystemTimeFrame;
229 kal_uint32 Total9MHzDuration;
230 kal_int32 TotalCalValue;
231 kal_int32 Backoff9MHz;
232 SysSFrameTimeT Sframe_PrevResync;
233 SysSFrameTimeT Sframe_Resync;
234 kal_uint32 FRC_Resync;
235 kal_uint32 FRC_Rtb; /* in FRC, for resync polling in frame tick */
236} HscResyncT;
237
238
239typedef struct
240{
241 HscSysAirInterfaceT Owner;
242 kal_uint16 Status;
243 kal_uint8 RfReq;
244 HscResyncT Resync;
245 kal_bool (*InTraffic)(void);
246 kal_uint8 ActiveQnum;
247 kal_bool WakeSchedulePend;
248 kal_uint8 WakeScheLen; /* In frame */
249 kal_bool ModemWakePend;
250 kal_bool HscShdrWakeup;
251 kal_bool TimeCopyProhibit;
252} HscAppT;
253
254typedef struct
255{
256 HscAppT *Ptr;
257 void (*DeQueueP) (kal_uint8);
258} HscQueueT;
259
260typedef struct
261{
262 kal_bool Special1xPreemption;
263 kal_uint8 Priority;
264 HscSysAirInterfaceT ResyncOwner;
265 HscQueueT WakeQueue[HSC_SSM_NUM_WAKE];
266 HscAppT App[HSC_NUM_APPS];
267 HscSpBackoffT Backoff;
268 kal_uint32 ScanBackoff[HSC_NUM_APPS];
269 HscDoStopTxT DoStopTx;
270 kal_uint32 ResyncCollisionBuffer; /* In FRC unit */
271 kal_bool ShdrModeCheckingFlag;
272 kal_uint32 ShdrModeCheckingTime;
273} HscSsmStatusT;
274
275/* Deep Sleep Request in HSC */
276typedef struct
277{
278 kal_uint32 VetoFlag[HSC_NUM_APPS];
279} HscSsmDeepSleepT;
280
281
282/* Deep Sleep Request in HSC */
283typedef struct
284{
285 FrameRecT PchWakeSystemTimeFrame; /* in frame */
286 kal_uint32 Backoff9MHz; /* in echip */
287 kal_uint32 AgcSettle; /* in echip */
288 SysSFrameTimeT SframeResync; /* in supframe+echip */
289 kal_uint32 FrcResync; /* in FRC */
290 kal_uint32 FrcRtb; /* in FRC, for resync polling in frame tick */
291} HscSsmDoSleepCmdT;
292
293typedef struct
294{
295 FrameRecT PchWakeSystemTimeFrame; /* in frame */
296 kal_uint32 Backoff9MHz; /* in echip */
297 SysSFrameTimeT SframeResync; /* in supframe+echip */
298 kal_uint32 FrcResync; /* in FRC */
299 kal_uint32 FrcRtb; /* in FRC, for resync polling in frame tick */
300} HscSsm1xSleepCmdT;
301
302
303/*----------------------------------------------------------------------------
304 SPage definitions
305----------------------------------------------------------------------------*/
306#define SP_STATUS_SP_ENABLED_BN 0
307#define SP_STATUS_CAL_DONE_BN 1
308#define SP_STATUS_SRCH_DONE_BN 2
309#define SP_STATUS_SLEEP_CMD_RECVD_BN 3
310#define SP_STATUS_SLEEP_CMD_PEND_BN 4
311#define SP_STATUS_STOP_ACK_RECVD_BN 5
312#define SP_STATUS_RESYNC_CMPLT_BN 6 /* send RESYNC_IND, WAKE_IND, or THAW_IND if not set */
313#define SP_STATUS_MINI_ACQ_CMPLT_BN 7 /* rf is current, a RxActivate request was sent */
314#define SP_STATUS_MINI_ACQ_REQ_BN 8 /* Mini Acq is required upon resuming from preemption */
315#define SP_STATUS_SP_DISABLE_PEND_BN 9 /* Pending Slotted Disable */
316#define SP_STATUS_SUSPENDED_BN 10
317#define SP_STATUS_SLEEP_CMD_DISCARD_BN 11
318#define SP_STATUS_RESYNC_DENIED_BN 12
319
320#define SP_STATUS_SP_ENABLED (1<<SP_STATUS_SP_ENABLED_BN) /*0x0001*/
321#define SP_STATUS_CAL_DONE (1<<SP_STATUS_CAL_DONE_BN) /*0x0002*/
322#define SP_STATUS_SRCH_DONE (1<<SP_STATUS_SRCH_DONE_BN) /*0x0004*/
323#define SP_STATUS_SLEEP_CMD_RECVD (1<<SP_STATUS_SLEEP_CMD_RECVD_BN) /*0x0008*/
324#define SP_STATUS_SLEEP_CMD_PEND (1<<SP_STATUS_SLEEP_CMD_PEND_BN) /*0x0010*/
325#define SP_STATUS_STOP_ACK_RECVD (1<<SP_STATUS_STOP_ACK_RECVD_BN) /*0x0020*/
326#define SP_STATUS_RESYNC_CMPLT (1<<SP_STATUS_RESYNC_CMPLT_BN) /*0x0040*/
327#define SP_STATUS_MINI_ACQ_CMPLT (1<<SP_STATUS_MINI_ACQ_CMPLT_BN) /*0x0080*/
328#define SP_STATUS_MINI_ACQ_REQ (1<<SP_STATUS_MINI_ACQ_REQ_BN) /*0x0100*/
329#define SP_STATUS_SP_DISABLE_PEND (1<<SP_STATUS_SP_DISABLE_PEND_BN) /*0x0200*/
330#define SP_STATUS_SUSPENDED (1<<SP_STATUS_SUSPENDED_BN) /*0x0400*/
331#define SP_STATUS_SLEEP_CMD_DISCARD (1<<SP_STATUS_SLEEP_CMD_DISCARD_BN) /*0x0800*/
332#define SP_STATUS_RESYNC_DENIED (1<<SP_STATUS_RESYNC_DENIED_BN) /*0x1000*/
333
334#define SP_ENABLING_TRIGGERS (SP_STATUS_SP_ENABLED | SP_STATUS_CAL_DONE) /*0x0003*/
335
336#define SP_EVENT_TRIGGERS (SP_STATUS_SRCH_DONE | \
337 SP_STATUS_SLEEP_CMD_RECVD | \
338 SP_STATUS_SLEEP_CMD_PEND | \
339 SP_STATUS_STOP_ACK_RECVD | \
340 SP_STATUS_RESYNC_CMPLT )
341#define SP_SLEEP_RESET (SP_STATUS_SRCH_DONE | \
342 SP_STATUS_SLEEP_CMD_RECVD | \
343 SP_STATUS_SLEEP_CMD_PEND | \
344 SP_STATUS_STOP_ACK_RECVD | \
345 SP_STATUS_MINI_ACQ_CMPLT | \
346 SP_STATUS_MINI_ACQ_REQ | \
347 SP_STATUS_RESYNC_CMPLT )
348#define SP_SUSPEND_RESET (SP_STATUS_SRCH_DONE | \
349 SP_STATUS_SLEEP_CMD_RECVD | \
350 SP_STATUS_SLEEP_CMD_PEND | \
351 SP_STATUS_STOP_ACK_RECVD | \
352 SP_STATUS_MINI_ACQ_CMPLT )
353#define SP_ACTIVATE_RESET (SP_STATUS_SRCH_DONE | \
354 SP_STATUS_SLEEP_CMD_RECVD | \
355 SP_STATUS_STOP_ACK_RECVD | \
356 SP_STATUS_MINI_ACQ_REQ )
357
358
359typedef struct
360{
361 kal_uint8 Enabled;
362 kal_uint8 State;
363 kal_uint32 History;
364 kal_uint8 SlotCycleIdx[2];
365 kal_uint8 CalSettleTime;
366 kal_uint8 ImmediateMode;
367} HscSpStatusT;
368
369typedef struct
370{
371 kal_uint16 History;
372 kal_uint8 ImmediateMode;
373} L1dSPageStatusT;
374
375typedef enum
376{
377 SP_STATE_NONSLOTTED = 0, /* slotted page mode is disabled */
378 SP_STATE_PCH_MONITOR,
379 SP_STATE_WAIT_FOR_STOP_ACK,
380 SP_STATE_SPAGE_SLEEP,
381 SP_STATE_MAX
382} SpStateT;
383
384typedef struct
385{
386 kal_uint8 RepeatOk;
387 void (*FuncP)(void);
388 kal_uint16 Triggers;
389 kal_uint8 Next;
390} SpDoStateTblEntryT;
391
392typedef struct
393{
394 SpDoStateTblEntryT State[SP_STATE_MAX];
395} HscSpDoStateTblT;
396
397
398typedef struct
399{
400 HscSysAirInterfaceT ResyncOwner;
401 HscResyncT Resync[HSC_NUM_APPS];
402} HscSpResyncRecordT;
403
404
405/*----------------------------------------------------------------------------
406 HSC OOSA definitions
407----------------------------------------------------------------------------*/
408typedef enum
409{
410 OOSA_STATE_INIT = 0, /* slotted page mode is disabled */
411 OOSA_STATE_IN_SLEEP,
412 OOSA_STATE_ENTERING_SLEEP,
413 OOSA_STATE_WAKE_BEFORE_SLEEP /* OOSA wake cmd assert before OOSA sleep flow finished */
414} OosaStateT;
415
416#define HSC_OOSA_TYPE_NORMAL (1<<0)
417#define HSC_OOSA_TYPE_RAVAS_SUSPEND (1<<1)
418#define HSC_OOSA_TYPE_INFINITE_SLEEP (1<<2)
419#define HSC_OOSA_TYPE_FLIGHT_MODE (1<<3)
420#define MAX_OOSA_SLEEP_DURATION_1XRTT (1800) /*unit:0.1s, 180 s for 1xRTT */
421#define MAX_OOSA_SLEEP_DURATION_EVDO (6000) /*unit:0.1s, 600 s for 1xRTT */
422
423/* Convert the OOSA sleep duration(unit 0.1 second) to FRC( Unit 1 us),
424the MAX SLEEP DURATION: 600s for EVDO, 180 s for 1xRTT */
425#define M_0P1SEC_TO_FRC(a) ((kal_uint64)a*100000L)
426
427typedef struct
428{
429 kal_uint8 OosaSleepType;
430 OosaStateT OosaState;
431 kal_uint32 StartTime; /* In FRC */
432 kal_uint32 WakeTime; /* In FRC */
433 kal_uint32 SleepDuration; /* In 0.1s */
434 kal_bool WakeupFlag;
435 kal_uint8 OosaWakeupType;
436} HscOosaT;
437
438
439typedef struct
440{
441 HscSysAirInterfaceT Owner;
442} HscOosaSleepEvtT;
443
444
445
446
447#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
448/*----------------------------------------------------------------------------
449 HSC GAP servive definitions
450----------------------------------------------------------------------------*/
451typedef struct
452{
453 kal_bool SltWakePend; /* DO slotted wake pending for GAP stopping */
454 kal_bool OosaWakePend; /* OOSA wake pending for GAP stopping */
455 kal_bool ContOosaPend; /* CONT OOSA sleep pending */
456 kal_uint32 GapEndFrame; /* Frame number of GAP end when DO slotted sleep */
457 kal_uint32 ContSleepDuration; /* in 100ms */
458 kal_bool GapGate; /* KAL_TRUE: means can't offer gap to MD1 */
459} HscGapT;
460#endif
461
462
463/*----------------------------------------------------------------------------
464 HSC General definitions
465----------------------------------------------------------------------------*/
466typedef enum
467{
468 HSC_OOSA_TIMER_1X_ID,
469 HSC_OOSA_TIMER_DO_ID,
470 HSC_CLK_CAL_FAST_SETTLE_TIMER_ID,
471 HSC_SHDR_MODE_TIMER_ID,
472 HSC_NUM_TIMERS
473} HscTimerIds;
474
475typedef enum
476{
477 HSC_T_MPA_ANT_AVAILABLE,
478 HSC_T_MPA_ANT_ASSIGNED
479}HscAntStatusT;
480
481
482#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
483/* GAP servive */
484extern HscGapT HscGap;
485#endif
486
487
488
489/*****************************************************************************
490* $Log: hscdefs.h $
491*****************************************************************************/
492
493/*****************************************************************************
494* End of File
495*****************************************************************************/
496#endif
497/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:14:24 GMT ylxiao
498** HREF#22033, merge 4.6.0**/
499/**Log information: \main\Trophy\1 2013-03-19 05:18:41 GMT hzhang
500** HREF#22033 to merge 0.4.6 code from SD.**/
501/**Log information: \main\Trophy\Trophy_jluo_href22084\1 2013-04-03 04:11:28 GMT jluo
502** HREF#22084:HANDROID#1723**/
503/**Log information: \main\Trophy\2 2013-04-03 06:24:59 GMT czhang
504** HREF#22084**/
505