rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 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*/ |
| 173 | extern void L1_MULTI_AFC_UPDATE_MODE(kal_uint8 sim_num, kal_uint8 rat /*0:2G,1:3G,2:LTE*/, kal_uint8 new_mode); |
| 174 | extern 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 |
| 178 | extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int32 *return_Dac ); |
| 179 | extern 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 |
| 181 | extern void L1_MULTI_AFC_QUERY_PREVIOUS_ACTIVE_RAT(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 *return_rat, kal_int16 *return_Dac ); |
| 182 | extern 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 |
| 185 | extern 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 |
| 187 | extern 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 |
| 189 | extern kal_uint8 L1_MULTI_AFC_QUERY_MODE(kal_uint8 src_sim, kal_uint8 src_ask); |
| 190 | extern kal_bool L1_MULTI_AFC_QUERY_OTHER_RAT_DEDICATE(kal_uint8 src_sim, kal_uint8 src_rat); |
| 191 | extern kal_uint8 L1_MULTI_AFC_QUERY_LATEST_AFC_MODE_OWNER(kal_uint8 src_sim, kal_uint8 src_rat); |
| 192 | extern 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 |
| 196 | extern 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 |
| 198 | extern 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 */ |
| 200 | extern 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 ); |
| 201 | extern 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 |
| 205 | kal_int32 L1_MULTI_AFC_QUERY_DAC(kal_uint8 src_sim, kal_uint8 src_rat, kal_uint8 dest_sim, kal_uint8 dest_rat); |
| 206 | #else |
| 207 | kal_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 |
| 211 | void L1_MULTI_AFC_UPDATE_AFC_IN_SHM(kal_uint8 src_sim, kal_uint8 src_rat, kal_int32 afc_dac, kal_uint16 temper); |
| 212 | #else |
| 213 | void 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 |
| 219 | extern kal_int32 L1D_AFC_Query_DacValue(kal_uint8 query_sim); |
| 220 | extern kal_int32 UL1D_AFC_Query_DacValue(kal_uint8 sim_idx); |
| 221 | extern kal_int32 TL1D_AFC_Query_DacValue(void); |
| 222 | extern kal_int32 EL1D_AFC_Query_DacValue(kal_uint8 sim_index); |
| 223 | #else |
| 224 | extern kal_int16 L1D_AFC_Query_DacValue(kal_uint8 query_sim); |
| 225 | extern kal_int16 UL1D_AFC_Query_DacValue(kal_uint8 sim_idx); |
| 226 | extern kal_int16 TL1D_AFC_Query_DacValue(void); |
| 227 | extern kal_int16 EL1D_AFC_Query_DacValue(kal_uint8 sim_index); |
| 228 | #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */ |
| 229 | |
| 230 | extern void L1D_AFC_Set_ControlMode(void); |
| 231 | extern 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 */ |
| 233 | extern kal_uint32 EL1D_RxAfc_Multi_Tms_Read_Auxadc_Latest_Temperature(void); |
| 234 | |
| 235 | /* API function when Fix AFC enabled */ |
| 236 | typedef 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 |
| 243 | extern kal_int32 L1_MULTI_AFC_CONVERT_AFC_DATA(kal_int32 afc_data_ori, kal_uint8 convert_type); |
| 244 | #else |
| 245 | extern kal_int16 L1_MULTI_AFC_CONVERT_AFC_DATA(kal_int16 afc_data_ori, kal_uint8 convert_type); |
| 246 | #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */ |
| 247 | extern kal_int32 L1_MULTI_AFC_QUERY_FREQ_TO_DAC_STEP(void); |
| 248 | extern kal_int32 EL1D_RxAfc_Multi_Tms_Interp_Calc(kal_uint32 tfc_u); |
| 249 | #if defined ( MT6293 ) || defined ( __MD93__ ) || defined ( __MD97__ ) |
| 250 | extern 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 |
| 252 | extern 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 | |