xf.li | bfc6e71 | 2025-02-07 01:54:34 -0800 | [diff] [blame^] | 1 | |
| 2 | #include <linux/module.h> |
| 3 | #include <linux/errno.h> |
| 4 | #include <linux/proc_fs.h> |
| 5 | #include <linux/uaccess.h> |
| 6 | #include <linux/cdev.h> |
| 7 | #include <linux/cpnv.h> |
| 8 | #include <linux/vmalloc.h> |
| 9 | #include <linux/string.h> |
| 10 | #include <linux/cp_types.h> |
| 11 | #include <linux/init.h> |
| 12 | #include <linux/sched.h> |
| 13 | #include <linux/kthread.h> |
| 14 | #include <linux/device.h> |
| 15 | MODULE_AUTHOR("\x5a\x54\x45");MODULE_LICENSE( |
| 16 | "\x50\x72\x6f\x70\x72\x69\x65\x74\x61\x72\x79");extern unsigned int |
| 17 | zOss_ResetNVFactory(void);extern unsigned int zOss_NvramFlush(void);extern |
| 18 | unsigned int zOss_NvItemWrite(unsigned int,unsigned char*,unsigned int);extern |
| 19 | int zDrvNand_Program(unsigned int,unsigned int,unsigned char*);extern void |
| 20 | zOss_NvItemWriteFactory(unsigned int,unsigned char*,unsigned int);extern int |
| 21 | zDrvNand_ChangeNvrAttr(unsigned int);extern unsigned int zOss_NvItemRead( |
| 22 | unsigned int,unsigned char*,unsigned int);extern ssize_t zCatAgt_App_Write(const |
| 23 | char*,size_t);extern ssize_t zCatAgt_Kernel_Write(const char*,size_t);extern |
| 24 | void linux_oss_tick_timer_function(void);extern unsigned int |
| 25 | zOss_GetExceptResetFlag(void);extern int zSys_ExceptReboot(unsigned int);extern |
| 26 | int zDrvRpMsg_Write(const void*);extern int zDrvRpMsg_CreateChannel(unsigned int |
| 27 | ,unsigned int,unsigned int size);extern int zDrvRpMsg_RegCallBack(unsigned int, |
| 28 | unsigned int,void*);extern int zAti_CidIsUsed(unsigned char);extern int |
| 29 | zAti2_Send(unsigned char,unsigned char*,unsigned short,unsigned int);extern |
| 30 | unsigned char zAti_GetDualCardStat(unsigned char*pbSim1Stat,unsigned char* |
| 31 | pbSim2Stat,unsigned char*pbIsCardSwitching);extern unsigned char*zPutSkb2Psbuf( |
| 32 | unsigned char*,unsigned short,unsigned char*,unsigned char*);extern unsigned |
| 33 | short zGetUpLinkSduSize(void);extern int zAti2_Open(unsigned char);extern |
| 34 | unsigned int zAt_AutoTestInit(void);extern int zAti2_IsExCid(unsigned char, |
| 35 | unsigned char*);extern void zUsat_RegisterSendMsgFun(void*);extern int |
| 36 | zAti2_RegRecvCb(void*);extern void zUsat_SendAtCmd(unsigned int,const unsigned |
| 37 | char*,unsigned short,unsigned int);extern void AmtAgent_ComposeAndProcess( |
| 38 | unsigned char*,unsigned int);extern void RegSendDataToAmtAppFunction(void*); |
| 39 | extern void zDrvLpm_IrqDisable(unsigned int);extern void zDrvLpm_IrqEnable( |
| 40 | unsigned int);extern void zDrvInt_MaskIrq(unsigned int);extern void |
| 41 | zDrvInt_UnmaskIrq(unsigned int);extern int zPs_IsTdMasterMode(void);extern int |
| 42 | zPs_IsLteMasterMode(void);extern int zPs_IsFddMasterMode(void);extern void |
| 43 | psm_ModemDevSleep(void);extern bool psm_ModemSleepCheck(void);extern unsigned |
| 44 | int psm_ModemSleepTimeGet(void);extern void psm_GetModemSleepFlagStatus(void); |
| 45 | extern void psm_TimeCompensate(unsigned int);extern void zFreeDlBuf(unsigned |
| 46 | char*);extern int zte_modem_start(void);extern unsigned long |
| 47 | Comm_Read_CP_TO_AP_Data(const char*,unsigned long);extern unsigned long |
| 48 | Comm_Write_AP_TO_CP_Data(const char*,unsigned long);extern int zDrvVoice_Close( |
| 49 | void);extern int zDrvVoice_ReadStart(void);extern int zDrvVoice_ReadStop(void); |
| 50 | extern int zDrvVoice_WriteStart(void);extern int zDrvVoice_WriteStop(void); |
| 51 | extern int zDrvVoice_Open(void*);extern int zDrvVoice_WriteOneFrame(unsigned |
| 52 | char*);extern int zDrvVoice_ReadOneFrame(unsigned char*);extern int |
| 53 | halVoice_SetPathIn(void*);extern int halVoice_SetPathOut(void*);extern int |
| 54 | halVoice_SetVolOut(void*);extern int halVoice_Enable(void);extern int |
| 55 | halVoice_Open(void);extern int halVoice_Disable(void);extern int halVoice_Close( |
| 56 | void);extern int halVoice_Open3G(void);extern int halVoice_Close3G(void);extern |
| 57 | int zDrv_Audio_Printf(void*,...);extern void zDrvVp_SetDtmfMute_Wrap(void); |
| 58 | extern int zDrvVp_SetTone_Wrap(int);extern int zDrvVp_SetMute_Wrap(int);extern |
| 59 | int zDrvVp_GetMute_Wrap(void);extern int zDrvVp_SetRxMute_Wrap(int);extern int |
| 60 | zDrvVp_GetRxMute_Wrap(void);extern int zDrvVp_SetVol_Wrap(int);extern int |
| 61 | zDrvVp_GetVol_Wrap(void);extern int zDrvVp_GetTxVol_Wrap(void);extern int |
| 62 | zDrvVp_SetTxVol_Wrap(int);extern int zDrvVp_SetVol_Gain_Wrap(int);extern int |
| 63 | zDrvVp_GetVol_Gain_Wrap(void);extern int zDrvVp_SetTxVol_Gain_Wrap(int);extern |
| 64 | int zDrvVp_GetTxVol_Gain_Wrap(void);extern int zDrvVp_GetPath_Wrap(void);extern |
| 65 | int zDrvVp_Loop(int);extern int zDrvVp_Soft_Dtmf_Loop(int);extern void |
| 66 | zDrvDtmf_Detect_RegCallbacks(T_DrvDtmf_Detect_Opt);extern int |
| 67 | zDrvVp_SetPath_Wrap(int);extern int zDrvVp_GetPath_Wrap(void);extern int |
| 68 | zDrvVp_GetSlicFlag(void);extern int zDrvVp_SetEchoDelay_Wrap(int val);extern int |
| 69 | zDrvVp_GetEchoDelay_Wrap(void);extern int zDrvVp_SetTxNsMode_Wrap(int val); |
| 70 | extern int zDrvVp_GetTxNsMode_Wrap(void);extern int zDrvVp_SetRxNsMode_Wrap(int |
| 71 | val);extern int zDrvVp_GetRxNsMode_Wrap(void);extern int |
| 72 | zDrvVp_SetModuleState_Wrap(int*,int);extern int zDrvVp_GetModuleState_Wrap(int*, |
| 73 | int);extern VOID*mmp_AmrDecOpen(T_zMmp_CodecType codecType);extern VOID* |
| 74 | mmp_AmrEncOpen(T_zMmp_CodecType codecType,BOOL isDtxEnable);extern UINT16 |
| 75 | mmp_AmrDecode(VOID*pCodecContext,const UINT8*pAmr,UINT16*pPcm);extern UINT16 |
| 76 | mmp_AmrEncode(VOID*pCodecContext,T_zMmp_AmrEncMode mode,const UINT16*pPcm,UINT8* |
| 77 | pAmr);extern VOID mmp_AmrDecClose(VOID*pCodecContext);extern VOID |
| 78 | mmp_AmrEncClose(VOID*pCodecContext);extern UINT8 zDrvEdcp_IsBusy(int EdcpNum); |
| 79 | extern SINT32 zDrvVp_AudioDataWrite(const VOID*pBuf,UINT32 uiLen);extern SINT32 |
| 80 | zDrvVp_AudioDataOpen(UINT32 audioType,UINT32 sampleRate);extern SINT32 |
| 81 | zDrvVp_AudioDataClose(void);extern SINT32 zDrvVp_GetVpLoop_Wrap(VOID);extern |
| 82 | VOID zDrvVp_Status(UINT32*sample_rate,UINT32*voice_status);extern VOID |
| 83 | zDrvVp_UpdateVoiceNv(UINT8*voice_nv_update);extern int zDrvVp_SetVoiceProc_Wrap( |
| 84 | int val);extern int zDrvVp_GetVoiceProc_Wrap(void);extern int |
| 85 | zDrvVp_SetVoiceBuffer_Wrap(int en,int type);extern void |
| 86 | zDrvVp_GetVoiceBuffer_Wrap(int*en,int*type);typedef struct cpko_section{unsigned |
| 87 | int cpko_text_start;unsigned int cpko_rodata_start;unsigned int |
| 88 | __utran_modem_text_start;unsigned int __lte_modem_text_start;unsigned int |
| 89 | __comm_modem_text_start;unsigned int modem_text_end;unsigned int cpko_data_start |
| 90 | ;unsigned int cpko_bss_start;unsigned int cpko_text_offset;}cpko_section_layout; |
| 91 | cpko_section_layout cpko_ps_section;int raise(int signo){return |
| 92 | (0xbe2+1493-0x11b7);}extern unsigned int SysEntry(void);static int |
| 93 | ko_Main_Thread(void*data){struct sched_param param={.sched_priority= |
| 94 | MAX_USER_RT_PRIO/(0x4f+8692-0x2241)-(0xc10+5749-0x2282)};int ret= |
| 95 | (0x6ec+936-0xa94);sched_setscheduler(current,SCHED_FIFO,¶m);ret=SysEntry(); |
| 96 | if(ret!=(0x1116+3896-0x204e))panic("Main_Thread\n");param.sched_priority= |
| 97 | MAX_USER_RT_PRIO-(0xd7f+3763-0x1c04);sched_setscheduler(kthreadd_task,SCHED_FIFO |
| 98 | ,¶m);return(0x50b+1822-0xc29);}int zte_modem_ko_start(void){kthread_run( |
| 99 | ko_Main_Thread,NULL,"\x5a\x54\x45\x4d\x61\x69\x6e\x54\x68\x72\x65\x61\x64"); |
| 100 | return(0xe73+5178-0x22ad);}static void cpko_sectioninfo_set(void){int ret;struct |
| 101 | file*fp;mm_segment_t old_fs;loff_t cpko_pos=(0x157a+1546-0x1b84);struct |
| 102 | cpps_globalModem globalVar;fp=filp_open( |
| 103 | "\x2f\x6c\x69\x62\x2f\x63\x70\x6b\x6f\x2f\x63\x70\x6b\x6f\x5f\x73\x65\x63\x69\x6e\x66\x6f\x2e\x62\x69\x6e" |
| 104 | ,(0xb9+3122-0xceb),(0xd77+2874-0x18b1));if(IS_ERR(fp)||fp==NULL)panic( |
| 105 | "\x6f\x70\x65\x6e\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");old_fs= |
| 106 | get_fs();set_fs(KERNEL_DS);ret=vfs_read(fp,(char*)&cpko_ps_section,sizeof( |
| 107 | cpko_section_layout),&cpko_pos);if(ret<=(0xa3c+5561-0x1ff5))panic( |
| 108 | "\x72\x65\x61\x64\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");filp_close( |
| 109 | fp,NULL); |
| 110 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
| 111 | fp=filp_open( |
| 112 | "\x2f\x6c\x69\x62\x2f\x63\x70\x6b\x6f\x2f\x63\x70\x6b\x6f\x2e\x6b\x6f", |
| 113 | (0x12d8+3575-0x20cf),(0x11ad+2890-0x1cf7));if(IS_ERR(fp)||fp==NULL)panic( |
| 114 | "\x6f\x70\x65\x6e\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");fp->f_ra. |
| 115 | ra_pages=(0xec5+3427-0x1c28); |
| 116 | #endif |
| 117 | if(cpko_ps_section.cpko_text_start){globalVar.cpko_text_start=(unsigned long) |
| 118 | cpko_ps_section.cpko_text_start;globalVar.cpko_rodata_start=(unsigned long) |
| 119 | cpko_ps_section.cpko_rodata_start;globalVar.cpko_data_start=(unsigned long) |
| 120 | cpko_ps_section.cpko_data_start;globalVar.cpko_bss_start=(unsigned long) |
| 121 | cpko_ps_section.cpko_bss_start; |
| 122 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
| 123 | globalVar.fp_code=fp;globalVar.__utran_modem_text_start=(unsigned long) |
| 124 | cpko_ps_section.__utran_modem_text_start;globalVar.__lte_modem_text_start=( |
| 125 | unsigned long)cpko_ps_section.__lte_modem_text_start;globalVar. |
| 126 | __comm_modem_text_start=(unsigned long)cpko_ps_section.__comm_modem_text_start; |
| 127 | globalVar.modem_text_end=(unsigned long)cpko_ps_section.modem_text_end;globalVar |
| 128 | .modem_offset=cpko_ps_section.cpko_text_offset; |
| 129 | #endif |
| 130 | cpps_globalVar_register(&globalVar); |
| 131 | #ifdef CONFIG_MODEM_CODE_IS_MAPPING |
| 132 | vfree_modem_section(globalVar.cpko_text_start,globalVar.modem_text_end); |
| 133 | #endif |
| 134 | }else panic("\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");}static int |
| 135 | cpko_start(void){struct cpps_callbacks callback={(0x4ea+531-0x6fd)};callback. |
| 136 | zOss_ResetNVFactory=zOss_ResetNVFactory;callback.zOss_NvramFlush=zOss_NvramFlush |
| 137 | ;callback.zOss_NvItemWrite=zOss_NvItemWrite;callback.zOss_NvItemWriteFactory= |
| 138 | zOss_NvItemWriteFactory;callback.zOss_NvItemRead=zOss_NvItemRead;callback. |
| 139 | zCatAgt_App_Write=zCatAgt_App_Write;callback.zCatAgt_Kernel_Write= |
| 140 | zCatAgt_Kernel_Write;callback.linux_oss_tick_timer_function= |
| 141 | linux_oss_tick_timer_function;callback.zOss_GetExceptResetFlag= |
| 142 | zOss_GetExceptResetFlag;callback.zSys_ExceptReboot=zSys_ExceptReboot;callback. |
| 143 | zDrvRpMsg_Write=zDrvRpMsg_Write;callback.zDrvRpMsg_CreateChannel= |
| 144 | zDrvRpMsg_CreateChannel;callback.zDrvRpMsg_RegCallBack=zDrvRpMsg_RegCallBack; |
| 145 | callback.zDrvLpm_IrqDisable=zDrvLpm_IrqDisable;callback.zDrvInt_MaskIrq= |
| 146 | zDrvInt_MaskIrq;callback.zDrvLpm_IrqEnable=zDrvLpm_IrqEnable;callback. |
| 147 | zDrvInt_UnmaskIrq=zDrvInt_UnmaskIrq;callback.Comm_Read_CP_TO_AP_Data= |
| 148 | Comm_Read_CP_TO_AP_Data;callback.Comm_Write_AP_TO_CP_Data= |
| 149 | Comm_Write_AP_TO_CP_Data;callback.zDrvEdcp_IsBusy=zDrvEdcp_IsBusy; |
| 150 | #ifndef _USE_TestHarness |
| 151 | callback.zAti2_Open=zAti2_Open;callback.zAt_AutoTestInit=zAt_AutoTestInit; |
| 152 | callback.zAti2_IsExCid=zAti2_IsExCid;callback.zPutSkb2Psbuf=zPutSkb2Psbuf; |
| 153 | callback.zAti_CidIsUsed=zAti_CidIsUsed;callback.zAti2_Send=zAti2_Send;callback. |
| 154 | zAti_GetDualCardStat=zAti_GetDualCardStat;callback.zGetUpLinkSduSize= |
| 155 | zGetUpLinkSduSize;callback.zUsat_RegisterSendMsgFun=zUsat_RegisterSendMsgFun; |
| 156 | callback.zAti2_RegRecvCb=zAti2_RegRecvCb;callback.zUsat_SendAtCmd= |
| 157 | zUsat_SendAtCmd;callback.RegSendDataToAmtAppFunction=RegSendDataToAmtAppFunction |
| 158 | ;callback.zFreeDlBuf=zFreeDlBuf;callback.AmtAgent_ComposeAndProcess= |
| 159 | AmtAgent_ComposeAndProcess;callback.zPs_IsTdMasterMode=zPs_IsTdMasterMode; |
| 160 | callback.zPs_IsLteMasterMode=zPs_IsLteMasterMode;callback.zPs_IsFddMasterMode= |
| 161 | zPs_IsFddMasterMode; |
| 162 | #ifdef USE_VOICE_SUPPORT |
| 163 | callback.zDrvVoice_Close=zDrvVoice_Close;callback.zDrvVoice_ReadStart= |
| 164 | zDrvVoice_ReadStart;callback.zDrvVoice_ReadStop=zDrvVoice_ReadStop;callback. |
| 165 | zDrvVoice_WriteStart=zDrvVoice_WriteStart;callback.zDrvVoice_WriteStop= |
| 166 | zDrvVoice_WriteStop;callback.zDrvVoice_Open=zDrvVoice_Open;callback. |
| 167 | zDrvVoice_WriteOneFrame=zDrvVoice_WriteOneFrame;callback.zDrvVoice_ReadOneFrame= |
| 168 | zDrvVoice_ReadOneFrame;callback.halVoice_SetPathIn=halVoice_SetPathIn;callback. |
| 169 | halVoice_SetPathOut=halVoice_SetPathOut;callback.halVoice_SetVolOut= |
| 170 | halVoice_SetVolOut;callback.halVoice_Enable=halVoice_Enable;callback. |
| 171 | halVoice_Open=halVoice_Open;callback.halVoice_Disable=halVoice_Disable;callback. |
| 172 | halVoice_Close=halVoice_Close;callback.zDrv_Audio_Printf=zDrv_Audio_Printf; |
| 173 | callback.zDrvVp_SetTone_Wrap=zDrvVp_SetTone_Wrap;callback.zDrvVp_SetMute_Wrap= |
| 174 | zDrvVp_SetMute_Wrap;callback.zDrvVp_GetMute_Wrap=zDrvVp_GetMute_Wrap;callback. |
| 175 | zDrvVp_SetRxMute_Wrap=zDrvVp_SetRxMute_Wrap;callback.zDrvVp_GetRxMute_Wrap= |
| 176 | zDrvVp_GetRxMute_Wrap;callback.zDrvVp_SetVol_Wrap=zDrvVp_SetVol_Wrap;callback. |
| 177 | zDrvVp_GetVol_Wrap=zDrvVp_GetVol_Wrap;callback.zDrvVp_SetDtmfMute_Wrap= |
| 178 | zDrvVp_SetDtmfMute_Wrap;callback.zDrvVp_SetTxVol_Wrap=zDrvVp_SetTxVol_Wrap; |
| 179 | callback.zDrvVp_GetTxVol_Wrap=zDrvVp_GetTxVol_Wrap;callback. |
| 180 | zDrvVp_SetVol_Gain_Wrap=zDrvVp_SetVol_Gain_Wrap;callback.zDrvVp_GetVol_Gain_Wrap |
| 181 | =zDrvVp_GetVol_Gain_Wrap;callback.zDrvVp_SetTxVol_Gain_Wrap= |
| 182 | zDrvVp_SetTxVol_Gain_Wrap;callback.zDrvVp_GetTxVol_Gain_Wrap= |
| 183 | zDrvVp_GetTxVol_Gain_Wrap;callback.zDrvVp_GetPath_Wrap=zDrvVp_GetPath_Wrap; |
| 184 | callback.zDrvVp_Loop=zDrvVp_Loop;callback.zDrvVp_GetVpLoop_Wrap= |
| 185 | zDrvVp_GetVpLoop_Wrap;callback.zDrvVp_Soft_Dtmf_Loop=zDrvVp_Soft_Dtmf_Loop; |
| 186 | callback.zDrvDtmf_Detect_RegCallbacks=zDrvDtmf_Detect_RegCallbacks;callback. |
| 187 | zDrvVp_SetPath_Wrap=zDrvVp_SetPath_Wrap;callback.zDrvVp_GetPath_Wrap= |
| 188 | zDrvVp_GetPath_Wrap;callback.halVoice_Open3G=halVoice_Open3G;callback. |
| 189 | halVoice_Close3G=halVoice_Close3G;callback.zDrvVp_GetSlicFlag=zDrvVp_GetSlicFlag |
| 190 | ;callback.zDrvVp_SetVoiceProc_Wrap=zDrvVp_SetVoiceProc_Wrap;callback. |
| 191 | zDrvVp_GetVoiceProc_Wrap=zDrvVp_GetVoiceProc_Wrap;callback. |
| 192 | zDrvVp_SetVoiceBuffer_Wrap=zDrvVp_SetVoiceBuffer_Wrap;callback. |
| 193 | zDrvVp_GetVoiceBuffer_Wrap=zDrvVp_GetVoiceBuffer_Wrap;callback. |
| 194 | zDrvVp_SetEchoDelay_Wrap=zDrvVp_SetEchoDelay_Wrap;callback. |
| 195 | zDrvVp_GetEchoDelay_Wrap=zDrvVp_GetEchoDelay_Wrap;callback. |
| 196 | zDrvVp_SetTxNsMode_Wrap=zDrvVp_SetTxNsMode_Wrap;callback.zDrvVp_GetTxNsMode_Wrap |
| 197 | =zDrvVp_GetTxNsMode_Wrap;callback.zDrvVp_SetRxNsMode_Wrap= |
| 198 | zDrvVp_SetRxNsMode_Wrap;callback.zDrvVp_GetRxNsMode_Wrap=zDrvVp_GetRxNsMode_Wrap |
| 199 | ;callback.zDrvVp_SetModuleState_Wrap=zDrvVp_SetModuleState_Wrap;callback. |
| 200 | zDrvVp_GetModuleState_Wrap=zDrvVp_GetModuleState_Wrap;callback.mmp_AmrDecOpen= |
| 201 | mmp_AmrDecOpen;callback.mmp_AmrEncOpen=mmp_AmrEncOpen;callback.mmp_AmrDecode= |
| 202 | mmp_AmrDecode;callback.mmp_AmrEncode=mmp_AmrEncode;callback.mmp_AmrDecClose= |
| 203 | mmp_AmrDecClose;callback.mmp_AmrEncClose=mmp_AmrEncClose;callback. |
| 204 | zDrvVp_AudioDataOpen=zDrvVp_AudioDataOpen;callback.zDrvVp_AudioDataWrite= |
| 205 | zDrvVp_AudioDataWrite;callback.zDrvVp_AudioDataClose=zDrvVp_AudioDataClose; |
| 206 | callback.zDrvVp_Status=zDrvVp_Status;callback.zDrvVp_UpdateVoiceNv= |
| 207 | zDrvVp_UpdateVoiceNv; |
| 208 | #endif |
| 209 | callback.psm_ModemDevSleep=psm_ModemDevSleep;callback.psm_ModemSleepCheck= |
| 210 | psm_ModemSleepCheck;callback.psm_ModemSleepTimeGet=psm_ModemSleepTimeGet; |
| 211 | callback.psm_TimeCompensate=psm_TimeCompensate;callback. |
| 212 | psm_GetModemSleepFlagStatus=psm_GetModemSleepFlagStatus; |
| 213 | #endif |
| 214 | cpps_callbacks_register(&callback);cpko_sectioninfo_set();zte_modem_ko_start(); |
| 215 | return(0x78b+3070-0x1389);}static int cpko_stop(void){return(0xe11+1744-0x14e1); |
| 216 | }module_init(cpko_start);module_exit(cpko_stop); |