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