blob: 7f2a994ed0d7975ee18a0ea494215f9852c40467 [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) 2005
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 CONSTRUED 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
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * mml1_rf_afc.h
41 *
42 * Project:
43 * --------
44 * MT6293
45 *
46 * Description:
47 * ------------
48 * Multi-Mode Multi-RAT Layer1 Multi-mode AFC interface to each RAT
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *----------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 *
77 * removed!
78 * removed!
79 *
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 *
86 * removed!
87 * removed!
88 * removed!
89 *
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 *----------------------------------------------------------------------------
103 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
104 *============================================================================
105 ****************************************************************************/
106
107#ifndef _MML1_RF_AFC_H_
108#define _MML1_RF_AFC_H_
109
110/*===============================================================================*/
111
112#define MD1_Multi_RAT_NUM 5 /*MD1 Note: If you modify this number, be sure to change
113 (1) trace msg in "L1_Trc_Multi_AFC_Current_Mode"
114 (2) trace in L1_MULTI_AFC_UPDATE_MODE() */
115
116#if defined(__GEMINI__)
117 #ifdef GEMINI_PLUS_GSM
118#define MMRF_NUM_OF_SIM GEMINI_PLUS_GSM
119 #else
120#define MMRF_NUM_OF_SIM 2
121 #endif
122#else
123#define MMRF_NUM_OF_SIM 1
124#endif
125
126#define MMRF_AFC_INV_SLOPE (1024) //Fix AFC Slope for Dual Loop AFC
127
128typedef struct
129{
130 kal_uint32 md1_afc_dac;
131 kal_uint32 md1_temperature;
132 kal_uint32 md1_time_tag;
133 kal_uint32 md1_rat_mode[MD1_Multi_RAT_NUM];
134 kal_uint32 md1_afc_update_rat;
135 kal_uint32 md3_afc_dac;
136 kal_uint32 md3_temperature;
137 kal_uint32 md3_time_tag;
138 kal_uint32 md3_rat_mode;
139 kal_uint32 tag_source;
140 kal_uint32 pre_usc;
141} Multi_AFC_INFO_SHM;
142
143typedef struct
144{
145 Multi_AFC_INFO_SHM multi_afc_info_shm[MMRF_NUM_OF_SIM];
146} Multi_SIM_AFC_INFO_SHM;
147
148typedef enum /*Note: If you modify this enum, be sure to change trace msg in "L1_Multi_Afc_rat" too*/
149{
150 /* in MD1 */
151 rat_2G = 0 , /* 0 */
152 rat_3G_fd , /* 1 */
153 rat_3G_td , /* 2 */
154 rat_4G , /* 3 */
155 rat_5G , /* 4 */
156 /* in MD3 */
157 rat_C2K , /* 5 */
158 rat_non , /* 6 */
159} afc_rat;
160
161typedef enum /*Note: If you modify this enum, be sure to change trace msg in "L1_Multi_Afc_mode" too*/
162{
163 flight_mode = 0 , /* 0 */
164 standby_mode , /* 1 */
165 active_idle , /* 2 */
166 active_dedicate , /* 3 */
167} afc_rat_mode;
168
169typedef enum
170{
171 afc_md1 = 0 , /* 0 */
172 afc_md2 , /* 1 */
173 afc_md3 , /* 2 */
174} afc_md;
175
176typedef struct
177{
178 kal_uint8 rat_mode; /*0: flight mode, 1: standby mode, 2: active idle, 3: dedicate standby*/
179 kal_bool is_gap_Start;
180} afc_rat_state;
181
182typedef struct
183{
184 afc_rat_state rat_state[MD1_Multi_RAT_NUM];
185 kal_uint8 previous_active_rat;
186 kal_uint8 latest_active_rat;
187 kal_uint8 latest_afc_owner_rat;
188} Multi_AFC_INFO;
189
190#define SHM_AFC_WRITE(ptr,data) (*((APBADDR32)ptr) = (data))
191#define SHM_AFC_READ(ptr) (*((APBADDR32)ptr))
192
193extern Multi_SIM_AFC_INFO_SHM multi_sim_afc_info_dummy_shm;
194/* Read temperature from AUXADC API, return temperature u (U0.15), bit16:1 for valid, 0 for invalid */
195extern kal_uint32 EL1D_RxAfc_Multi_Tms_Read_Auxadc_Latest_Temperature( void );
196
197kal_uint32* L1_Get_MD1_MD3_Shared_Memory(void);
198kal_int32 MML1_MULTI_AFC_QUERY_FREQ_TO_DAC_STEP();
199
200//For C2K to implement new scurve on MT2731
201extern kal_int32 EL1D_RxAfc_Multi_Tms_Interp_Calc(kal_uint32 tfc_u);
202extern void EL1D_RxAfc_Multi_Tms_Fac_Scurve_Generation_Proc(kal_uint32 fac_c0, kal_uint32 fac_c1, kal_uint32 fac_c2, kal_uint32 fac_c3);
203
204/*===============================================================================*/
205
206#endif /* End of #ifndef _MML1_RF_AFC_H_ */
207