blob: 5924338accb0dd26ce8526419f3224f1fadb37e0 [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 * l1_afc.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * Multi-mode AFC control interface
49 *
50 * Author:
51 * -------
52 *
53 * $Log$
54 *
55 * 05 21 2021 shrikant.nandagawali
56 * [MOLY00665438] [Colgin][MT2735][New feature][MD] Wide temperature.[EWSP0000255811]
57 *
58 * 06 08 2018 dinesh.kumar
59 * [MOLY00315229][6295][cotms]UL1D FPU removing
60 *
61 * 05 14 2018 tim.tsai
62 * [MOLY00324757] [MMRFD] remove legacy option
63 * .
64 *
65 * 03 28 2018 dinesh.kumar
66 * [MOLY00315229][6295][cotms]UL1D FPU removing
67 *
68 * 06 06 2017 sj.cheng
69 * [MOLY00254832] [MMRF]xl1sim single mode trigger MMRF task
70 *
71 * 03 29 2017 aman.singh
72 * [MOLY00237873] [6293][EL1] Gemini L+L
73 *
74 * 10 04 2016 aman.singh
75 * [MOLY00186076] [L1D][Modify] Changes for warning removal
76 *
77 * .
78 *
79 * 09 12 2016 yi-ying.lin
80 * [MOLY00202968] [MMRF] move multi-afc share memory definition to mml1_rf_afc.h
81 * .
82 *
83 * 08 25 2016 yi-ying.lin
84 * [MOLY00199309] [MMRF] remove mmafc cross-core structure definition
85 * .
86 *
87 * 10 06 2015 ola.lee
88 * [MOLY00144115] [L1D] Update RF Conflict Dispatch API for SRLTE
89 * .
90 *
91 * 09 07 2015 glen.hua
92 * [MOLY00140544] [Jade][L+W]AFC change for L+W project
93 * .
94 *
95 * 09 07 2015 glen.hua
96 * [MOLY00140544] [Jade][L+W]AFC change for L+W project
97 * .
98 *
99 * 07 21 2015 yi-ying.lin
100 * [MOLY00130526] [L1D][Modify] Move MMAFC MD1/MD3 afc database structure definition to cross-core folder
101 * .
102 *
103 * 07 06 2015 my.tu
104 * [MOLY00109555] [TK6291][EL1D] Update the latest code (AFC)
105 * [EL1D RX] sync afc code from EL1S (UMOLY).
106 *
107 * 07 06 2015 yi-ying.lin
108 * [MOLY00123233] [L1D][Modify] Fix the MD3 query API
109 * .
110 *
111 * 07 04 2015 my.tu
112 * [MOLY00109555] [TK6291][EL1D] Update the latest code (AFC)
113 * [EL1D RX] cotsx development. Merging from //UMOLY/DEV/TK6291_DEV/mcu/l1core/modem/...1403997
114 *
115 * 06 18 2015 yi-ying.lin
116 * [MOLY00122572] [L1D][Modify] fix build error for multi-afc api to accesss the SHM
117 * .
118 *
119 * 06 18 2015 yi-ying.lin
120 * [MOLY00122410] [L1D][Modify] fix multi-afc api
121 * .
122 *
123 * 06 16 2015 yi-ying.lin
124 * [MOLY00121452] [L1D][Modify] Add multi-afc update and query share-memory API
125 * .
126 *
127 * 10 06 2014 ola.lee
128 * [MOLY00080299] [L1D] Check in 2G Fix AFC for MT6169
129 * .
130 *
131 * 04 11 2013 yi-ying.lin
132 * [MOLY00013948] [MT6290 PO admit] Check in AST3002 & protocol code for 6290 MULTI_MODE_TDS project
133 * .
134 *
135 * 03 19 2013 ola.lee
136 * [MOLY00012185] [Fix-AFC] Check-in Fix-AFC related modification(L1D/UL1D/SM) into WR8 & MOLY
137 * .
138 *
139 * 03 11 2013 ij.chang
140 * [MOLY00011276] [UL1D][Modify] Merge Code From WR8.W1248.MD.WG.MP to MOLY for MT6290 SB
141 * .
142 *
143 * 09 28 2012 ziv.tsai
144 * [MOLY00004274] [L1D][Modify] Multi_Mode AFC control TDD part
145 * .
146 *
147 * 08 30 2012 ziv.tsai
148 * [MOLY00002838] [Need Patch][Build Error] WR8 build error for MT6583_MD2_TDD128HSPA(DEFAULT)
149 * .Add TDD support for multi-mode afc
150 *
151 * 06 28 2012 ziv.tsai
152 * [MOLY00000052] [MT6280] Some coding improvement for multi-mode afc and cell search
153 * .
154 *
155 * 05 25 2012 ziv.tsai
156 * removed!
157 * .
158 *
159 ****************************************************************************/
160
161#ifndef _L1_AFC_H_
162#define _L1_AFC_H_
163
164
165#include "l1_core_private.h"
166
167#include "l1_types.h"
168#include "kal_general_types.h"
169
170#include "mml1_rf_afc.h"
171
172/* Status update function*/
173extern void L1_MULTI_AFC_UPDATE_MODE(kal_uint8 sim_num, kal_uint8 rat /*0:2G,1:3G,2:LTE*/, kal_uint8 new_mode);
174extern void L1_MULTI_AFC_SWITCH_CONTROL_MODE(kal_uint8 sim_num, kal_uint8 rat, kal_uint8 mode );
175
176/* Interface Query function*/
177#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
178extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int32 *return_Dac );
179extern void L1_MULTI_AFC_QUERY_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int32 *return_Dac );
180#else
181extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int16 *return_Dac );
182extern void L1_MULTI_AFC_QUERY_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int16 *return_Dac );
183#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
184#if IS_MULTI_MODE_AFC_IN_32BITS
185extern void L1_MULTI_AFC_QUERY_LATEST_UPDATE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int32 *return_dac, kal_uint16 *return_temp, kal_int32 *return_time_diff);
186#else
187extern void L1_MULTI_AFC_QUERY_LATEST_UPDATE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int16 *return_dac, kal_uint16 *return_temp, kal_int32 *return_time_diff);
188#endif
189extern kal_uint8 L1_MULTI_AFC_QUERY_MODE(kal_uint8 src_sim, kal_uint8 src_ask);
190extern kal_bool L1_MULTI_AFC_QUERY_OTHER_RAT_DEDICATE(kal_uint8 src_sim, kal_uint8 src_rat);
191extern kal_uint8 L1_MULTI_AFC_QUERY_LATEST_AFC_MODE_OWNER(kal_uint8 src_sim, kal_uint8 src_rat);
192extern kal_uint8 L1_MULTI_AFC_QUERY_MD_LATEST_ACTIVE_RAT(kal_uint8 src_md, kal_uint8 src_sim, kal_uint8 src_rat);
193
194/*---> Interface Query function with GEMINI Integraded*/
195#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
196extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT_GEMINI(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 *return_rat, kal_int32 *return_Dac );
197#else
198extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT_GEMINI(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 *return_rat, kal_int16 *return_Dac );
199#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
200extern void L1_MULTI_AFC_QUERY_ACTIVE_RAT_GEMINI(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 *return_rat, kal_int16 *return_Dac );
201extern kal_bool L1_MULTI_AFC_QUERY_OTHER_RAT_DEDICATE_GEMINI(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim);
202
203/* Internal Query function*/
204#if IS_MULTI_MODE_AFC_IN_32BITS
205kal_int32 L1_MULTI_AFC_QUERY_DAC(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 dest_rat);
206#else
207kal_int16 L1_MULTI_AFC_QUERY_DAC(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 dest_rat);
208#endif
209/* SHM update function*/
210#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
211void L1_MULTI_AFC_UPDATE_AFC_IN_SHM(kal_uint8 src_sim, kal_uint8 src_rat, kal_int32 afc_dac, kal_uint16 temper);
212#else
213void L1_MULTI_AFC_UPDATE_AFC_IN_SHM(kal_uint8 src_sim, kal_uint8 src_rat, kal_int16 afc_dac, kal_uint16 temper);
214#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
215/*---------------------------------------*/
216/* API function which shall provided by each rat*/
217
218#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
219extern kal_int32 L1D_AFC_Query_DacValue(kal_uint8 query_sim);
220extern kal_int32 UL1D_AFC_Query_DacValue(kal_uint8 sim_idx);
221extern kal_int32 TL1D_AFC_Query_DacValue(void);
222extern kal_int32 EL1D_AFC_Query_DacValue(kal_uint8 sim_index);
223#else
224extern kal_int16 L1D_AFC_Query_DacValue(kal_uint8 query_sim);
225extern kal_int16 UL1D_AFC_Query_DacValue(kal_uint8 sim_idx);
226extern kal_int16 TL1D_AFC_Query_DacValue(void);
227extern kal_int16 EL1D_AFC_Query_DacValue(kal_uint8 sim_index);
228#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
229
230extern void L1D_AFC_Set_ControlMode(void);
231extern void UL1D_AFC_Set_ControlMode(kal_uint8 mode);
232//extern void TL1D_AFC_Set_ControlMode(); /* 3G_TD use L1D_AFC_Control_Switch_DM(false) to set control mode */
233extern kal_uint32 EL1D_RxAfc_Multi_Tms_Read_Auxadc_Latest_Temperature(void);
234
235/* API function when Fix AFC enabled */
236typedef enum
237{
238 dac_2_ppb = 0 , /* 0 */
239 ppb_2_dac , /* 1 */
240} afc_convert_type;
241
242#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
243extern kal_int32 L1_MULTI_AFC_CONVERT_AFC_DATA(kal_int32 afc_data_ori, kal_uint8 convert_type);
244#else
245extern kal_int16 L1_MULTI_AFC_CONVERT_AFC_DATA(kal_int16 afc_data_ori, kal_uint8 convert_type);
246#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
247extern kal_int32 L1_MULTI_AFC_QUERY_FREQ_TO_DAC_STEP(void);
248extern kal_int32 EL1D_RxAfc_Multi_Tms_Interp_Calc(kal_uint32 tfc_u);
249#if defined ( MT6293 ) || defined ( __MD93__ ) || defined ( __MD97__ )
250extern 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);
251#else
252extern void EL1D_RxAfc_Multi_Tms_Fac_Scurve_Generation_Proc(kal_int32 fac_c0, kal_int32 fac_c1, kal_int32 fac_c2, kal_int32 fac_c3);
253#endif
254
255
256#endif
257