xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 1 | #include <linux/module.h> |
| 2 | #include <linux/errno.h> |
| 3 | #include <linux/proc_fs.h> |
| 4 | #include <linux/uaccess.h> |
| 5 | #include <linux/cdev.h> |
| 6 | #include <linux/cpnv.h> |
| 7 | #include <linux/vmalloc.h> |
| 8 | #include <linux/string.h> |
| 9 | #include <linux/cp_types.h> |
| 10 | #include <linux/init.h> |
| 11 | #include <linux/sched.h> |
| 12 | #include <linux/kthread.h> |
| 13 | #include <linux/device.h> |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 14 | |
| 15 | MODULE_AUTHOR("ZTE"); |
| 16 | MODULE_LICENSE("Proprietary"); |
| 17 | |
| 18 | extern unsigned int zOss_ResetNVFactory(void); |
| 19 | extern unsigned int zOss_NvramFlush(void); |
| 20 | extern unsigned int zOss_NvItemWrite(unsigned int,unsigned char *,unsigned int); |
| 21 | extern int zDrvNand_Program(unsigned int,unsigned int,unsigned char *); |
| 22 | extern void zOss_NvItemWriteFactory(unsigned int,unsigned char *,unsigned int); |
| 23 | extern int zDrvNand_ChangeNvrAttr(unsigned int); |
| 24 | extern unsigned int zOss_NvItemRead(unsigned int,unsigned char *,unsigned int); |
| 25 | extern ssize_t zCatAgt_App_Write(const char *, size_t); |
| 26 | extern ssize_t zCatAgt_Kernel_Write(const char *, size_t); |
| 27 | extern void linux_oss_tick_timer_function(void); |
| 28 | extern unsigned int zOss_GetExceptResetFlag(void); |
| 29 | extern int zSys_ExceptReboot(unsigned int); |
| 30 | extern int zDrvRpMsg_Write(const void *); |
| 31 | extern int zDrvRpMsg_CreateChannel(unsigned int, unsigned int, unsigned int size); |
| 32 | extern int zDrvRpMsg_RegCallBack(unsigned int, unsigned int, void *); |
| 33 | extern int zAti_CidIsUsed(unsigned char); |
| 34 | //extern unsigned char *zGetpsbufferHead(unsigned char *); |
| 35 | extern int zAti2_Send(unsigned char , unsigned char *, unsigned short , unsigned int ); |
| 36 | extern unsigned char zAti_GetDualCardStat(unsigned char *pbSim1Stat, unsigned char *pbSim2Stat, unsigned char *pbIsCardSwitching); |
| 37 | extern unsigned char *zPutSkb2Psbuf(unsigned char *, unsigned short, unsigned char *, unsigned char *); |
| 38 | extern unsigned short zGetUpLinkSduSize(void); |
| 39 | extern int zAti2_Open(unsigned char); |
| 40 | extern unsigned int zAt_AutoTestInit(void); |
| 41 | extern int zAti2_IsExCid(unsigned char,unsigned char *); |
| 42 | extern void zUsat_RegisterSendMsgFun(void *); |
| 43 | extern int zAti2_RegRecvCb(void *); |
| 44 | extern void zUsat_SendAtCmd(unsigned int, const unsigned char *, unsigned short, unsigned int); |
| 45 | extern void AmtAgent_ComposeAndProcess(unsigned char *, unsigned int); |
| 46 | extern void RegSendDataToAmtAppFunction(void *); |
| 47 | extern void zDrvLpm_IrqDisable(unsigned int); |
| 48 | extern void zDrvLpm_IrqEnable(unsigned int); |
| 49 | extern void zDrvInt_MaskIrq(unsigned int); |
| 50 | extern void zDrvInt_UnmaskIrq(unsigned int); |
| 51 | extern int zPs_IsTdMasterMode(void); |
| 52 | extern int zPs_IsLteMasterMode(void); |
| 53 | extern int zPs_IsFddMasterMode(void); |
| 54 | extern void psm_ModemDevSleep(void); |
| 55 | extern bool psm_ModemSleepCheck(void); |
| 56 | extern unsigned int psm_ModemSleepTimeGet(void); |
| 57 | extern void psm_GetModemSleepFlagStatus(void); |
| 58 | extern void psm_TimeCompensate(unsigned int); |
| 59 | extern void zFreeDlBuf(unsigned char *); |
| 60 | extern int zte_modem_start(void); |
| 61 | extern unsigned long Comm_Read_CP_TO_AP_Data(const char *, unsigned long); |
| 62 | extern unsigned long Comm_Write_AP_TO_CP_Data(const char *, unsigned long); |
| 63 | extern int zDrvVoice_Close(void); |
| 64 | extern int zDrvVoice_ReadStart(void); |
| 65 | extern int zDrvVoice_ReadStop(void); |
| 66 | extern int zDrvVoice_WriteStart(void); |
| 67 | extern int zDrvVoice_WriteStop(void); |
| 68 | extern int zDrvVoice_Open(void *); |
| 69 | extern int zDrvVoice_WriteOneFrame(unsigned char *); |
| 70 | extern int zDrvVoice_ReadOneFrame(unsigned char *); |
| 71 | extern int halVoice_SetPathIn(void *); |
| 72 | extern int halVoice_SetPathOut(void *); |
| 73 | extern int halVoice_SetVolOut(void *); |
| 74 | extern int halVoice_Enable(void); |
| 75 | extern int halVoice_Open(void); |
| 76 | extern int halVoice_Disable(void); |
| 77 | extern int halVoice_Close(void); |
| 78 | extern int halVoice_Open3G(void); |
| 79 | extern int halVoice_Close3G(void); |
| 80 | extern int zDrv_Audio_Printf(void *, ...); |
| 81 | extern void zDrvVp_SetDtmfMute_Wrap(void); |
| 82 | extern int zDrvVp_SetTone_Wrap(int); |
| 83 | extern int zDrvVp_SetMute_Wrap(int); |
| 84 | extern int zDrvVp_GetMute_Wrap(void); |
| 85 | extern int zDrvVp_SetRxMute_Wrap(int ); |
| 86 | extern int zDrvVp_GetRxMute_Wrap(void); |
| 87 | extern int zDrvVp_SetVol_Wrap(int); |
| 88 | extern int zDrvVp_GetVol_Wrap(void); |
| 89 | extern int zDrvVp_GetTxVol_Wrap(void); |
| 90 | extern int zDrvVp_SetTxVol_Wrap(int); |
| 91 | extern int zDrvVp_SetVol_Gain_Wrap(int); |
| 92 | extern int zDrvVp_GetVol_Gain_Wrap(void); |
| 93 | extern int zDrvVp_SetTxVol_Gain_Wrap(int); |
| 94 | extern int zDrvVp_GetTxVol_Gain_Wrap(void); |
| 95 | extern int zDrvVp_GetPath_Wrap(void); |
| 96 | extern int zDrvVp_Loop(int); |
| 97 | extern int zDrvVp_Soft_Dtmf_Loop(int); |
| 98 | extern void zDrvDtmf_Detect_RegCallbacks(T_DrvDtmf_Detect_Opt); |
| 99 | extern int zDrvVp_SetPath_Wrap(int); |
| 100 | extern int zDrvVp_GetPath_Wrap(void); |
| 101 | extern int zDrvVp_GetSlicFlag(void); |
| 102 | extern int zDrvVp_SetEchoDelay_Wrap(int val); |
| 103 | extern int zDrvVp_GetEchoDelay_Wrap(void); |
| 104 | extern int zDrvVp_SetTxNsMode_Wrap(int val); |
| 105 | extern int zDrvVp_GetTxNsMode_Wrap(void); |
| 106 | extern int zDrvVp_SetRxNsMode_Wrap(int val); |
| 107 | extern int zDrvVp_GetRxNsMode_Wrap(void); |
| 108 | extern int zDrvVp_SetModuleState_Wrap(int *,int); |
| 109 | extern int zDrvVp_GetModuleState_Wrap(int *,int); |
| 110 | extern VOID* mmp_AmrDecOpen (T_zMmp_CodecType codecType); |
| 111 | extern VOID* mmp_AmrEncOpen (T_zMmp_CodecType codecType, BOOL isDtxEnable); |
| 112 | extern UINT16 mmp_AmrDecode (VOID *pCodecContext, const UINT8 *pAmr, UINT16 *pPcm); |
| 113 | extern UINT16 mmp_AmrEncode (VOID *pCodecContext, T_zMmp_AmrEncMode mode, const UINT16 *pPcm, UINT8 *pAmr); |
| 114 | extern VOID mmp_AmrDecClose (VOID *pCodecContext); |
| 115 | extern VOID mmp_AmrEncClose (VOID *pCodecContext); |
| 116 | extern UINT8 zDrvEdcp_IsBusy(int EdcpNum); |
| 117 | extern SINT32 zDrvVp_AudioDataWrite(const VOID *pBuf, UINT32 uiLen); |
| 118 | extern SINT32 zDrvVp_AudioDataOpen(UINT32 audioType, UINT32 sampleRate); |
| 119 | extern SINT32 zDrvVp_AudioDataClose(void); |
| 120 | extern SINT32 zDrvVp_GetVpLoop_Wrap(VOID); |
| 121 | extern VOID zDrvVp_Status(UINT32 *sample_rate, UINT32 *voice_status); |
| 122 | extern VOID zDrvVp_UpdateVoiceNv(UINT8 *voice_nv_update); |
| 123 | extern int zDrvVp_SetVoiceProc_Wrap(int val); |
| 124 | extern int zDrvVp_GetVoiceProc_Wrap(void); |
| 125 | extern int zDrvVp_SetVoiceBuffer_Wrap(int en,int type); |
| 126 | extern void zDrvVp_GetVoiceBuffer_Wrap(int *en,int *type); |
| 127 | |
| 128 | |
| 129 | |
| 130 | |
| 131 | typedef struct cpko_section { |
| 132 | unsigned int cpko_text_start; |
| 133 | unsigned int cpko_rodata_start; |
| 134 | unsigned int __utran_modem_text_start; |
| 135 | unsigned int __lte_modem_text_start; |
| 136 | unsigned int __comm_modem_text_start; |
| 137 | unsigned int modem_text_end; |
| 138 | unsigned int cpko_data_start; |
| 139 | unsigned int cpko_bss_start; |
| 140 | unsigned int cpko_text_offset; |
| 141 | } cpko_section_layout; |
| 142 | cpko_section_layout cpko_ps_section; |
| 143 | |
| 144 | |
| 145 | int raise(int signo) |
| 146 | { |
| 147 | return 0x00; |
| 148 | } |
| 149 | |
| 150 | //__initdata DECLARE_COMPLETION(sysentry_done); |
| 151 | |
| 152 | extern unsigned int SysEntry(void); |
| 153 | static int ko_Main_Thread(void * data) |
| 154 | { |
| 155 | struct sched_param param = { .sched_priority = MAX_USER_RT_PRIO/2 - 3 }; |
| 156 | int ret = 0; |
| 157 | |
| 158 | sched_setscheduler(current, SCHED_FIFO, ¶m); |
| 159 | |
| 160 | ret = SysEntry(); |
| 161 | if(ret != 0) |
| 162 | panic("Main_Thread\n"); |
| 163 | |
| 164 | param.sched_priority = MAX_USER_RT_PRIO - 46; |
| 165 | sched_setscheduler(kthreadd_task, SCHED_FIFO, ¶m); |
| 166 | |
| 167 | return 0; |
| 168 | } |
| 169 | |
| 170 | int zte_modem_ko_start(void) |
| 171 | { |
| 172 | |
| 173 | kthread_run(ko_Main_Thread, NULL, "ZTEMainThread"); |
| 174 | //wait_for_completion(&sysentry_done); |
| 175 | |
| 176 | return 0; |
| 177 | } |
| 178 | static void cpko_sectioninfo_set(void) |
| 179 | { |
| 180 | int ret; |
| 181 | struct file *fp; |
| 182 | mm_segment_t old_fs; |
| 183 | loff_t cpko_pos = 0; |
| 184 | struct cpps_globalModem globalVar; |
| 185 | |
| 186 | fp = filp_open("/lib/cpko/cpko_secinfo.bin", 0, 0); |
| 187 | if(IS_ERR(fp) || fp == NULL) |
| 188 | panic("open file error\n"); |
| 189 | |
| 190 | old_fs = get_fs(); |
| 191 | set_fs(KERNEL_DS); |
| 192 | ret = vfs_read(fp, (char*)&cpko_ps_section, sizeof(cpko_section_layout), &cpko_pos); |
| 193 | if (ret <= 0) |
| 194 | panic("read file error\n"); |
| 195 | filp_close(fp, NULL); |
| 196 | |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 197 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 198 | fp = filp_open("/lib/cpko/cpko.ko",0, 0); |
| 199 | if(IS_ERR(fp) || fp == NULL) |
| 200 | panic("open file error\n"); |
| 201 | fp->f_ra.ra_pages = 0; |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 202 | #endif |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 203 | |
| 204 | if (cpko_ps_section.cpko_text_start){ |
| 205 | globalVar.cpko_text_start = (unsigned long)cpko_ps_section.cpko_text_start; |
| 206 | globalVar.cpko_rodata_start = (unsigned long)cpko_ps_section.cpko_rodata_start; |
| 207 | globalVar.cpko_data_start = (unsigned long)cpko_ps_section.cpko_data_start; |
| 208 | globalVar.cpko_bss_start = (unsigned long)cpko_ps_section.cpko_bss_start; |
| 209 | |
| 210 | |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 211 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 212 | globalVar.fp_code = fp; |
| 213 | globalVar.__utran_modem_text_start = (unsigned long)cpko_ps_section.__utran_modem_text_start; |
| 214 | globalVar.__lte_modem_text_start = (unsigned long)cpko_ps_section.__lte_modem_text_start; |
| 215 | globalVar.__comm_modem_text_start = (unsigned long)cpko_ps_section.__comm_modem_text_start; |
| 216 | globalVar.modem_text_end = (unsigned long)cpko_ps_section.modem_text_end; |
| 217 | globalVar.modem_offset = cpko_ps_section.cpko_text_offset; |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 218 | #endif |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 219 | cpps_globalVar_register(&globalVar); |
| 220 | |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 221 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 222 | vfree_modem_section(globalVar.cpko_text_start, globalVar.modem_text_end); |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 223 | #endif |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 224 | } |
| 225 | else |
| 226 | panic("file error\n"); |
| 227 | } |
| 228 | static int cpko_start(void) |
| 229 | { |
| 230 | struct cpps_callbacks callback = {0}; |
| 231 | |
| 232 | //memset(&callback, 0 , sizeof(callback)); |
| 233 | |
| 234 | callback.zOss_ResetNVFactory = zOss_ResetNVFactory; |
| 235 | callback.zOss_NvramFlush = zOss_NvramFlush; |
| 236 | callback.zOss_NvItemWrite = zOss_NvItemWrite; |
| 237 | callback.zOss_NvItemWriteFactory = zOss_NvItemWriteFactory; |
| 238 | callback.zOss_NvItemRead = zOss_NvItemRead; |
| 239 | callback.zCatAgt_App_Write = zCatAgt_App_Write; |
| 240 | callback.zCatAgt_Kernel_Write = zCatAgt_Kernel_Write; |
| 241 | callback.linux_oss_tick_timer_function = linux_oss_tick_timer_function; |
| 242 | callback.zOss_GetExceptResetFlag = zOss_GetExceptResetFlag; |
| 243 | callback.zSys_ExceptReboot = zSys_ExceptReboot; |
| 244 | callback.zDrvRpMsg_Write = zDrvRpMsg_Write; |
| 245 | callback.zDrvRpMsg_CreateChannel = zDrvRpMsg_CreateChannel; |
| 246 | callback.zDrvRpMsg_RegCallBack = zDrvRpMsg_RegCallBack; |
| 247 | callback.zDrvLpm_IrqDisable = zDrvLpm_IrqDisable; |
| 248 | callback.zDrvInt_MaskIrq = zDrvInt_MaskIrq; |
| 249 | callback.zDrvLpm_IrqEnable = zDrvLpm_IrqEnable; |
| 250 | callback.zDrvInt_UnmaskIrq = zDrvInt_UnmaskIrq; |
| 251 | callback.Comm_Read_CP_TO_AP_Data = Comm_Read_CP_TO_AP_Data; |
| 252 | callback.Comm_Write_AP_TO_CP_Data = Comm_Write_AP_TO_CP_Data; |
| 253 | callback.zDrvEdcp_IsBusy = zDrvEdcp_IsBusy; |
| 254 | |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 255 | #ifndef _USE_TestHarness |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 256 | callback.zAti2_Open = zAti2_Open; |
| 257 | callback.zAt_AutoTestInit = zAt_AutoTestInit; |
| 258 | callback.zAti2_IsExCid = zAti2_IsExCid; |
| 259 | callback.zPutSkb2Psbuf = zPutSkb2Psbuf; |
| 260 | //callback.zGetpsbufferHead = zGetpsbufferHead; |
| 261 | callback.zAti_CidIsUsed = zAti_CidIsUsed; |
| 262 | callback.zAti2_Send = zAti2_Send; |
| 263 | callback.zAti_GetDualCardStat = zAti_GetDualCardStat; |
| 264 | callback.zGetUpLinkSduSize = zGetUpLinkSduSize; |
| 265 | callback.zUsat_RegisterSendMsgFun = zUsat_RegisterSendMsgFun; |
| 266 | callback.zAti2_RegRecvCb = zAti2_RegRecvCb; |
| 267 | callback.zUsat_SendAtCmd = zUsat_SendAtCmd; |
| 268 | callback.RegSendDataToAmtAppFunction = RegSendDataToAmtAppFunction; |
| 269 | callback.zFreeDlBuf = zFreeDlBuf; |
| 270 | callback.AmtAgent_ComposeAndProcess = AmtAgent_ComposeAndProcess; |
| 271 | callback.zPs_IsTdMasterMode = zPs_IsTdMasterMode; |
| 272 | callback.zPs_IsLteMasterMode = zPs_IsLteMasterMode; |
| 273 | callback.zPs_IsFddMasterMode = zPs_IsFddMasterMode; |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 274 | #ifdef USE_VOICE_SUPPORT |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 275 | callback.zDrvVoice_Close = zDrvVoice_Close; |
| 276 | callback.zDrvVoice_ReadStart = zDrvVoice_ReadStart; |
| 277 | callback.zDrvVoice_ReadStop = zDrvVoice_ReadStop; |
| 278 | callback.zDrvVoice_WriteStart = zDrvVoice_WriteStart; |
| 279 | callback.zDrvVoice_WriteStop = zDrvVoice_WriteStop; |
| 280 | callback.zDrvVoice_Open = zDrvVoice_Open; |
| 281 | callback.zDrvVoice_WriteOneFrame = zDrvVoice_WriteOneFrame; |
| 282 | callback.zDrvVoice_ReadOneFrame = zDrvVoice_ReadOneFrame; |
| 283 | callback.halVoice_SetPathIn = halVoice_SetPathIn; |
| 284 | callback.halVoice_SetPathOut = halVoice_SetPathOut; |
| 285 | callback.halVoice_SetVolOut = halVoice_SetVolOut; |
| 286 | callback.halVoice_Enable = halVoice_Enable; |
| 287 | callback.halVoice_Open = halVoice_Open; |
| 288 | callback.halVoice_Disable = halVoice_Disable; |
| 289 | callback.halVoice_Close = halVoice_Close; |
| 290 | callback.zDrv_Audio_Printf = zDrv_Audio_Printf; |
| 291 | callback.zDrvVp_SetTone_Wrap = zDrvVp_SetTone_Wrap; |
| 292 | callback.zDrvVp_SetMute_Wrap = zDrvVp_SetMute_Wrap; |
| 293 | callback.zDrvVp_GetMute_Wrap = zDrvVp_GetMute_Wrap; |
| 294 | callback.zDrvVp_SetRxMute_Wrap = zDrvVp_SetRxMute_Wrap; |
| 295 | callback.zDrvVp_GetRxMute_Wrap = zDrvVp_GetRxMute_Wrap; |
| 296 | callback.zDrvVp_SetVol_Wrap = zDrvVp_SetVol_Wrap; |
| 297 | callback.zDrvVp_GetVol_Wrap = zDrvVp_GetVol_Wrap; |
| 298 | callback.zDrvVp_SetDtmfMute_Wrap = zDrvVp_SetDtmfMute_Wrap; |
| 299 | callback.zDrvVp_SetTxVol_Wrap = zDrvVp_SetTxVol_Wrap; |
| 300 | callback.zDrvVp_GetTxVol_Wrap = zDrvVp_GetTxVol_Wrap; |
| 301 | callback.zDrvVp_SetVol_Gain_Wrap = zDrvVp_SetVol_Gain_Wrap; |
| 302 | callback.zDrvVp_GetVol_Gain_Wrap = zDrvVp_GetVol_Gain_Wrap; |
| 303 | callback.zDrvVp_SetTxVol_Gain_Wrap = zDrvVp_SetTxVol_Gain_Wrap; |
| 304 | callback.zDrvVp_GetTxVol_Gain_Wrap = zDrvVp_GetTxVol_Gain_Wrap; |
| 305 | callback.zDrvVp_GetPath_Wrap = zDrvVp_GetPath_Wrap; |
| 306 | callback.zDrvVp_Loop = zDrvVp_Loop; |
| 307 | callback.zDrvVp_GetVpLoop_Wrap = zDrvVp_GetVpLoop_Wrap; |
| 308 | callback.zDrvVp_Soft_Dtmf_Loop = zDrvVp_Soft_Dtmf_Loop; |
| 309 | callback.zDrvDtmf_Detect_RegCallbacks = zDrvDtmf_Detect_RegCallbacks; |
| 310 | callback.zDrvVp_SetPath_Wrap = zDrvVp_SetPath_Wrap; |
| 311 | callback.zDrvVp_GetPath_Wrap = zDrvVp_GetPath_Wrap; |
| 312 | callback.halVoice_Open3G = halVoice_Open3G; |
| 313 | callback.halVoice_Close3G = halVoice_Close3G; |
| 314 | callback.zDrvVp_GetSlicFlag = zDrvVp_GetSlicFlag; |
| 315 | callback.zDrvVp_SetVoiceProc_Wrap = zDrvVp_SetVoiceProc_Wrap; |
| 316 | callback.zDrvVp_GetVoiceProc_Wrap = zDrvVp_GetVoiceProc_Wrap; |
| 317 | callback.zDrvVp_SetVoiceBuffer_Wrap = zDrvVp_SetVoiceBuffer_Wrap; |
| 318 | callback.zDrvVp_GetVoiceBuffer_Wrap = zDrvVp_GetVoiceBuffer_Wrap; |
| 319 | callback.zDrvVp_SetEchoDelay_Wrap = zDrvVp_SetEchoDelay_Wrap; |
| 320 | callback.zDrvVp_GetEchoDelay_Wrap = zDrvVp_GetEchoDelay_Wrap; |
| 321 | callback.zDrvVp_SetTxNsMode_Wrap = zDrvVp_SetTxNsMode_Wrap; |
| 322 | callback.zDrvVp_GetTxNsMode_Wrap = zDrvVp_GetTxNsMode_Wrap; |
| 323 | callback.zDrvVp_SetRxNsMode_Wrap = zDrvVp_SetRxNsMode_Wrap; |
| 324 | callback.zDrvVp_GetRxNsMode_Wrap = zDrvVp_GetRxNsMode_Wrap; |
| 325 | callback.zDrvVp_SetModuleState_Wrap = zDrvVp_SetModuleState_Wrap; |
| 326 | callback.zDrvVp_GetModuleState_Wrap = zDrvVp_GetModuleState_Wrap; |
| 327 | callback.mmp_AmrDecOpen = mmp_AmrDecOpen; |
| 328 | callback.mmp_AmrEncOpen = mmp_AmrEncOpen; |
| 329 | callback.mmp_AmrDecode = mmp_AmrDecode; |
| 330 | callback.mmp_AmrEncode = mmp_AmrEncode; |
| 331 | callback.mmp_AmrDecClose = mmp_AmrDecClose; |
| 332 | callback.mmp_AmrEncClose = mmp_AmrEncClose; |
| 333 | callback.zDrvVp_AudioDataOpen = zDrvVp_AudioDataOpen; |
| 334 | callback.zDrvVp_AudioDataWrite = zDrvVp_AudioDataWrite; |
| 335 | callback.zDrvVp_AudioDataClose = zDrvVp_AudioDataClose; |
| 336 | callback.zDrvVp_Status = zDrvVp_Status; |
| 337 | callback.zDrvVp_UpdateVoiceNv = zDrvVp_UpdateVoiceNv; |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 338 | #endif |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 339 | callback.psm_ModemDevSleep = psm_ModemDevSleep; |
| 340 | callback.psm_ModemSleepCheck = psm_ModemSleepCheck; |
| 341 | callback.psm_ModemSleepTimeGet = psm_ModemSleepTimeGet; |
| 342 | callback.psm_TimeCompensate = psm_TimeCompensate; |
| 343 | callback.psm_GetModemSleepFlagStatus = psm_GetModemSleepFlagStatus; |
| 344 | |
xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame] | 345 | #endif |
xf.li | 771eb06 | 2025-02-09 23:05:11 -0800 | [diff] [blame^] | 346 | |
| 347 | |
| 348 | cpps_callbacks_register(&callback); |
| 349 | cpko_sectioninfo_set(); |
| 350 | zte_modem_ko_start(); |
| 351 | |
| 352 | return 0; |
| 353 | } |
| 354 | |
| 355 | static int cpko_stop(void) |
| 356 | { |
| 357 | return 0; |
| 358 | } |
| 359 | |
| 360 | module_init(cpko_start); |
| 361 | module_exit(cpko_stop); |