blob: d630055ceaaff6db8b6996031f857dfb0e140b1e [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001
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*zPutSkb2Psbuf(unsigned char*,unsigned short,unsigned char*,
31unsigned char*);extern unsigned short zGetUpLinkSduSize(void);extern int
32zAti2_Open(unsigned char);extern int zAti2_IsExCid(unsigned char,unsigned char*)
33;extern void zUsat_RegisterSendMsgFun(void*);extern int zAti2_RegRecvCb(void*);
34extern void zUsat_SendAtCmd(unsigned int,const unsigned char*,unsigned short,
35unsigned int);extern void AmtAgent_ComposeAndProcess(unsigned char*,unsigned int
36);extern void RegSendDataToAmtAppFunction(void*);extern void zDrvLpm_IrqDisable(
37unsigned int);extern void zDrvLpm_IrqEnable(unsigned int);extern void
38zDrvInt_MaskIrq(unsigned int);extern void zDrvInt_UnmaskIrq(unsigned int);extern
39 int zPs_IsTdMasterMode(void);extern int zPs_IsLteMasterMode(void);extern int
40zPs_IsFddMasterMode(void);extern void psm_ModemDevSleep(void);extern bool
41psm_ModemSleepCheck(void);extern unsigned int psm_ModemSleepTimeGet(void);extern
42 void psm_GetModemSleepFlagStatus(void);extern void psm_TimeCompensate(unsigned
43int);extern void zFreeDlBuf(unsigned char*);extern int zte_modem_start(void);
44extern unsigned long Comm_Read_CP_TO_AP_Data(const char*,unsigned long);extern
45unsigned long Comm_Write_AP_TO_CP_Data(const char*,unsigned long);extern int
46zDrvVoice_Close(void);extern int zDrvVoice_ReadStart(void);extern int
47zDrvVoice_ReadStop(void);extern int zDrvVoice_WriteStart(void);extern int
48zDrvVoice_WriteStop(void);extern int zDrvVoice_Open(void*);extern int
49zDrvVoice_WriteOneFrame(unsigned char*);extern int zDrvVoice_ReadOneFrame(
50unsigned char*);extern int halVoice_SetPathIn(void*);extern int
51halVoice_SetPathOut(void*);extern int halVoice_SetVolOut(void*);extern int
52halVoice_Enable(void);extern int halVoice_Open(void);extern int halVoice_Disable
53(void);extern int halVoice_Close(void);extern int halVoice_Open3G(void);extern
54int halVoice_Close3G(void);extern int zDrv_Audio_Printf(void*,...);extern void
55zDrvVp_SetDtmfMute_Wrap(void);extern int zDrvVp_SetTone_Wrap(int);extern int
56zDrvVp_SetMute_Wrap(int);extern int zDrvVp_GetMute_Wrap(void);extern int
57zDrvVp_SetVol_Wrap(int);extern int zDrvVp_GetVol_Wrap(void);extern int
58zDrvVp_GetTxVol_Wrap(void);extern int zDrvVp_SetTxVol_Wrap(int);extern int
59zDrvVp_GetPath_Wrap(void);extern int zDrvVp_Loop(int);extern int
60zDrvVp_Soft_Dtmf_Loop(int);extern void zDrvDtmf_Detect_RegCallbacks(
61T_DrvDtmf_Detect_Opt);extern int zDrvVp_SetPath_Wrap(int);extern int
62zDrvVp_GetSlicFlag(void);extern int zDrvVp_SetEchoDelay_Wrap(int val);extern int
63 zDrvVp_GetEchoDelay_Wrap(void);extern int zDrvVp_SetTxNsMode_Wrap(int val);
64extern int zDrvVp_GetTxNsMode_Wrap(void);extern int zDrvVp_SetRxNsMode_Wrap(int
65val);extern int zDrvVp_GetRxNsMode_Wrap(void);extern int
66zDrvVp_SetModuleState_Wrap(int*,int);extern int zDrvVp_GetModuleState_Wrap(int*,
67int);extern VOID*mmp_AmrDecOpen(T_zMmp_CodecType codecType);extern VOID*
68mmp_AmrEncOpen(T_zMmp_CodecType codecType,BOOL isDtxEnable);extern UINT16
69mmp_AmrDecode(VOID*pCodecContext,const UINT8*pAmr,UINT16*pPcm);extern UINT16
70mmp_AmrEncode(VOID*pCodecContext,T_zMmp_AmrEncMode mode,const UINT16*pPcm,UINT8*
71pAmr);extern VOID mmp_AmrDecClose(VOID*pCodecContext);extern VOID
72mmp_AmrEncClose(VOID*pCodecContext);extern UINT8 zDrvEdcp_IsBusy(int EdcpNum);
73extern SINT32 zDrvVp_AudioDataWrite(const VOID*pBuf,UINT32 uiLen);extern SINT32
74zDrvVp_AudioDataOpen(UINT32 audioType,UINT32 sampleRate);extern SINT32
75zDrvVp_AudioDataClose(void);extern VOID zDrvVp_Status(UINT32*sample_rate,UINT32*
76voice_status);typedef struct cpko_section{unsigned int cpko_text_start;unsigned
77int cpko_rodata_start;unsigned int __utran_modem_text_start;unsigned int
78__lte_modem_text_start;unsigned int __comm_modem_text_start;unsigned int
79modem_text_end;unsigned int cpko_data_start;unsigned int cpko_bss_start;unsigned
80 int cpko_text_offset;}cpko_section_layout;cpko_section_layout cpko_ps_section;
81int raise(int signo){return(0x848+2144-0x10a8);}extern unsigned int SysEntry(
82void);static int ko_Main_Thread(void*data){struct sched_param param={.
83sched_priority=MAX_USER_RT_PRIO/(0x1ef+1384-0x755)-(0x981+590-0xbcc)};int ret=
84(0x1693+2243-0x1f56);sched_setscheduler(current,SCHED_FIFO,&param);ret=SysEntry(
85);if(ret!=(0x1b74+1355-0x20bf))panic("Main_Thread\n");param.sched_priority=
86MAX_USER_RT_PRIO-(0xe97+942-0x1217);sched_setscheduler(kthreadd_task,SCHED_FIFO,
87&param);return(0x11db+120-0x1253);}int zte_modem_ko_start(void){kthread_run(
88ko_Main_Thread,NULL,"\x5a\x54\x45\x4d\x61\x69\x6e\x54\x68\x72\x65\x61\x64");
89return(0x1098+726-0x136e);}static void cpko_sectioninfo_set(void){int ret;struct
90 file*fp;mm_segment_t old_fs;loff_t cpko_pos=(0x15c+3388-0xe98);struct
91cpps_globalModem globalVar;fp=filp_open(
92"\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"
93,(0x1136+1358-0x1684),(0x184d+2520-0x2225));if(IS_ERR(fp)||fp==NULL)panic(
94"\x6f\x70\x65\x6e\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");old_fs=
95get_fs();set_fs(KERNEL_DS);ret=vfs_read(fp,(char*)&cpko_ps_section,sizeof(
96cpko_section_layout),&cpko_pos);if(ret<=(0x1019+1635-0x167c))panic(
97"\x72\x65\x61\x64\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");filp_close(
98fp,NULL);
99#ifdef CONFIG_MODEM_CODE_IS_MAPPING
100fp=filp_open(
101"\x2f\x6c\x69\x62\x2f\x63\x70\x6b\x6f\x2f\x63\x70\x6b\x6f\x2e\x6b\x6f",
102(0xfc+899-0x47f),(0xcd9+341-0xe2e));if(IS_ERR(fp)||fp==NULL)panic(
103"\x6f\x70\x65\x6e\x20\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");fp->f_ra.
104ra_pages=(0xca8+4493-0x1e35);
105#endif
106if(cpko_ps_section.cpko_text_start){globalVar.cpko_text_start=(unsigned long)
107cpko_ps_section.cpko_text_start;globalVar.cpko_rodata_start=(unsigned long)
108cpko_ps_section.cpko_rodata_start;globalVar.cpko_data_start=(unsigned long)
109cpko_ps_section.cpko_data_start;globalVar.cpko_bss_start=(unsigned long)
110cpko_ps_section.cpko_bss_start;
111#ifdef CONFIG_MODEM_CODE_IS_MAPPING
112globalVar.fp_code=fp;globalVar.__utran_modem_text_start=(unsigned long)
113cpko_ps_section.__utran_modem_text_start;globalVar.__lte_modem_text_start=(
114unsigned long)cpko_ps_section.__lte_modem_text_start;globalVar.
115__comm_modem_text_start=(unsigned long)cpko_ps_section.__comm_modem_text_start;
116globalVar.modem_text_end=(unsigned long)cpko_ps_section.modem_text_end;globalVar
117.modem_offset=cpko_ps_section.cpko_text_offset;
118#endif
119cpps_globalVar_register(&globalVar);
120#ifdef CONFIG_MODEM_CODE_IS_MAPPING
121vfree_modem_section(globalVar.cpko_text_start,globalVar.modem_text_end);
122#endif
123}else panic("\x66\x69\x6c\x65\x20\x65\x72\x72\x6f\x72" "\n");}static int
124cpko_start(void){struct cpps_callbacks callback={(0xad+5116-0x14a9)};callback.
125zOss_ResetNVFactory=zOss_ResetNVFactory;callback.zOss_NvramFlush=zOss_NvramFlush
126;callback.zOss_NvItemWrite=zOss_NvItemWrite;callback.zOss_NvItemWriteFactory=
127zOss_NvItemWriteFactory;callback.zOss_NvItemRead=zOss_NvItemRead;callback.
128zCatAgt_App_Write=zCatAgt_App_Write;callback.zCatAgt_Kernel_Write=
129zCatAgt_Kernel_Write;callback.linux_oss_tick_timer_function=
130linux_oss_tick_timer_function;callback.zOss_GetExceptResetFlag=
131zOss_GetExceptResetFlag;callback.zSys_ExceptReboot=zSys_ExceptReboot;callback.
132zDrvRpMsg_Write=zDrvRpMsg_Write;callback.zDrvRpMsg_CreateChannel=
133zDrvRpMsg_CreateChannel;callback.zDrvRpMsg_RegCallBack=zDrvRpMsg_RegCallBack;
134callback.zDrvLpm_IrqDisable=zDrvLpm_IrqDisable;callback.zDrvInt_MaskIrq=
135zDrvInt_MaskIrq;callback.zDrvLpm_IrqEnable=zDrvLpm_IrqEnable;callback.
136zDrvInt_UnmaskIrq=zDrvInt_UnmaskIrq;callback.Comm_Read_CP_TO_AP_Data=
137Comm_Read_CP_TO_AP_Data;callback.Comm_Write_AP_TO_CP_Data=
138Comm_Write_AP_TO_CP_Data;callback.zDrvEdcp_IsBusy=zDrvEdcp_IsBusy;
139#ifndef _USE_TestHarness
140callback.zAti2_Open=zAti2_Open;callback.zAti2_IsExCid=zAti2_IsExCid;callback.
141zPutSkb2Psbuf=zPutSkb2Psbuf;callback.zAti_CidIsUsed=zAti_CidIsUsed;callback.
142zAti2_Send=zAti2_Send;callback.zGetUpLinkSduSize=zGetUpLinkSduSize;callback.
143zUsat_RegisterSendMsgFun=zUsat_RegisterSendMsgFun;callback.zAti2_RegRecvCb=
144zAti2_RegRecvCb;callback.zUsat_SendAtCmd=zUsat_SendAtCmd;callback.
145RegSendDataToAmtAppFunction=RegSendDataToAmtAppFunction;callback.zFreeDlBuf=
146zFreeDlBuf;callback.AmtAgent_ComposeAndProcess=AmtAgent_ComposeAndProcess;
147callback.zPs_IsTdMasterMode=zPs_IsTdMasterMode;callback.zPs_IsLteMasterMode=
148zPs_IsLteMasterMode;callback.zPs_IsFddMasterMode=zPs_IsFddMasterMode;
149#ifdef USE_VOICE_SUPPORT
150callback.zDrvVoice_Close=zDrvVoice_Close;callback.zDrvVoice_ReadStart=
151zDrvVoice_ReadStart;callback.zDrvVoice_ReadStop=zDrvVoice_ReadStop;callback.
152zDrvVoice_WriteStart=zDrvVoice_WriteStart;callback.zDrvVoice_WriteStop=
153zDrvVoice_WriteStop;callback.zDrvVoice_Open=zDrvVoice_Open;callback.
154zDrvVoice_WriteOneFrame=zDrvVoice_WriteOneFrame;callback.zDrvVoice_ReadOneFrame=
155zDrvVoice_ReadOneFrame;callback.halVoice_SetPathIn=halVoice_SetPathIn;callback.
156halVoice_SetPathOut=halVoice_SetPathOut;callback.halVoice_SetVolOut=
157halVoice_SetVolOut;callback.halVoice_Enable=halVoice_Enable;callback.
158halVoice_Open=halVoice_Open;callback.halVoice_Disable=halVoice_Disable;callback.
159halVoice_Close=halVoice_Close;callback.zDrv_Audio_Printf=zDrv_Audio_Printf;
160callback.zDrvVp_SetTone_Wrap=zDrvVp_SetTone_Wrap;callback.zDrvVp_SetMute_Wrap=
161zDrvVp_SetMute_Wrap;callback.zDrvVp_GetMute_Wrap=zDrvVp_GetMute_Wrap;callback.
162zDrvVp_SetVol_Wrap=zDrvVp_SetVol_Wrap;callback.zDrvVp_GetVol_Wrap=
163zDrvVp_GetVol_Wrap;callback.zDrvVp_SetDtmfMute_Wrap=zDrvVp_SetDtmfMute_Wrap;
164callback.zDrvVp_SetTxVol_Wrap=zDrvVp_SetTxVol_Wrap;callback.zDrvVp_GetTxVol_Wrap
165=zDrvVp_GetTxVol_Wrap;callback.zDrvVp_GetPath_Wrap=zDrvVp_GetPath_Wrap;callback.
166zDrvVp_Loop=zDrvVp_Loop;callback.zDrvVp_Soft_Dtmf_Loop=zDrvVp_Soft_Dtmf_Loop;
167callback.zDrvDtmf_Detect_RegCallbacks=zDrvDtmf_Detect_RegCallbacks;callback.
168zDrvVp_SetPath_Wrap=zDrvVp_SetPath_Wrap;callback.halVoice_Open3G=halVoice_Open3G
169;callback.halVoice_Close3G=halVoice_Close3G;callback.zDrvVp_GetSlicFlag=
170zDrvVp_GetSlicFlag;callback.zDrvVp_SetEchoDelay_Wrap=zDrvVp_SetEchoDelay_Wrap;
171callback.zDrvVp_GetEchoDelay_Wrap=zDrvVp_GetEchoDelay_Wrap;callback.
172zDrvVp_SetTxNsMode_Wrap=zDrvVp_SetTxNsMode_Wrap;callback.zDrvVp_GetTxNsMode_Wrap
173=zDrvVp_GetTxNsMode_Wrap;callback.zDrvVp_SetRxNsMode_Wrap=
174zDrvVp_SetRxNsMode_Wrap;callback.zDrvVp_GetRxNsMode_Wrap=zDrvVp_GetRxNsMode_Wrap
175;callback.zDrvVp_SetModuleState_Wrap=zDrvVp_SetModuleState_Wrap;callback.
176zDrvVp_GetModuleState_Wrap=zDrvVp_GetModuleState_Wrap;callback.mmp_AmrDecOpen=
177mmp_AmrDecOpen;callback.mmp_AmrEncOpen=mmp_AmrEncOpen;callback.mmp_AmrDecode=
178mmp_AmrDecode;callback.mmp_AmrEncode=mmp_AmrEncode;callback.mmp_AmrDecClose=
179mmp_AmrDecClose;callback.mmp_AmrEncClose=mmp_AmrEncClose;callback.
180zDrvVp_AudioDataOpen=zDrvVp_AudioDataOpen;callback.zDrvVp_AudioDataWrite=
181zDrvVp_AudioDataWrite;callback.zDrvVp_AudioDataClose=zDrvVp_AudioDataClose;
182callback.zDrvVp_Status=zDrvVp_Status;
183#endif
184callback.psm_ModemDevSleep=psm_ModemDevSleep;callback.psm_ModemSleepCheck=
185psm_ModemSleepCheck;callback.psm_ModemSleepTimeGet=psm_ModemSleepTimeGet;
186callback.psm_TimeCompensate=psm_TimeCompensate;callback.
187psm_GetModemSleepFlagStatus=psm_GetModemSleepFlagStatus;
188#endif
189cpps_callbacks_register(&callback);cpko_sectioninfo_set();zte_modem_ko_start();
190return(0x6fb+1037-0xb08);}static int cpko_stop(void){return(0x1916+3127-0x254d);
191}module_init(cpko_start);module_exit(cpko_stop);