📄 xllp_pcf506.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL F:\wm520\PLATFORM\intel_dbpxa27x\Public\CSP\ARM\INTEL\PXA27X\XLLP\SOURCE\.\xllp_pcf506.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.bss|, NOINIT
|g_IsPCF506Configured| % 0x4
00000 AREA |.data|, DATA
|?LastY@?1??Pcf506TchGetXY@@9@9| DCW 0x400 ; `Pcf506TchGetXY'::`2'::LastY
% 2
|?LastX@?1??Pcf506TchGetXY@@9@9| DCW 0x400 ; `Pcf506TchGetXY'::`2'::LastX
EXPORT |PCF506UnConfigure|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_pcf506.c
00000 AREA |.text| { |PCF506UnConfigure| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$PCF506UnConfigure|, PDATA, SELECTION=5, ASSOC=|.text| { |PCF506UnConfigure| } ; comdat associative
|$T35557| DCD |$L35556|
DCD 0x40000800
; Function compile flags: /Ogsy
00000 AREA |.text| { |PCF506UnConfigure| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |PCF506UnConfigure| PROC
; 83 : {
00000 |$L35556|
00000 |$M35554|
; 84 : if (!g_IsPCF506Configured)
00000 e59f2014 ldr r2, [pc, #0x14]
; 85 : {
; 86 : return 1;
00004 e3a00001 mov r0, #1
00008 e5923000 ldr r3, [r2]
0000c e3530000 cmp r3, #0
; 87 : }
; 88 :
; 89 : //here do something by zgb
; 90 : //if (hPCF506ControlMutex)
; 91 : //{
; 92 : // CloseHandle(hPCF506ControlMutex);
; 93 : //}
; 94 :
; 95 : g_IsPCF506Configured = 0;
00010 13a03000 movne r3, #0
00014 15823000 strne r3, [r2]
; 96 :
; 97 : return 1;
; 98 : }
00018 e12fff1e bx lr
0001c |$L35559|
0001c 00000000 DCD |g_IsPCF506Configured|
00020 |$M35555|
ENDP ; |PCF506UnConfigure|
EXPORT |Pcf506TchSetup|
IMPORT |XllpPI2CWrite|
00000 AREA |.text| { |Pcf506TchSetup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Pcf506TchSetup|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf506TchSetup| } ; comdat associative
|$T35566| DCD |$L35565|
DCD 0x40001202
; Function compile flags: /Ogsy
00000 AREA |.text| { |Pcf506TchSetup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Pcf506TchSetup| PROC
; 161 : {
00000 |$L35565|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M35563|
; 162 : unsigned char data[2];
; 163 : //BOOL IsMutex=FALSE;
; 164 :
; 165 : //IsMutex=WaitPcf506Mutex();
; 166 : //改变ADCC1
; 167 : data[0]=0x2e;
; 168 : data[1]=0x23; //interupt mode with WAKE-UP function
; 169 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);
00008 e5901004 ldr r1, [r0, #4]
0000c e5900010 ldr r0, [r0, #0x10]
00010 e3a0e02e mov lr, #0x2E
00014 e3a04023 mov r4, #0x23
00018 e3a05001 mov r5, #1
0001c e3a06002 mov r6, #2
00020 e28d3008 add r3, sp, #8
00024 e3a02008 mov r2, #8
00028 e5cde008 strb lr, [sp, #8]
0002c e5cd4009 strb r4, [sp, #9]
00030 e58d5004 str r5, [sp, #4]
00034 e58d6000 str r6, [sp]
00038 eb000000 bl XllpPI2CWrite
; 170 : //if(IsMutex)
; 171 : // ReleasePcf506Mutex();
; 172 : return;
; 173 : }
0003c e28dd00c add sp, sp, #0xC
00040 e8bd4070 ldmia sp!, {r4 - r6, lr}
00044 e12fff1e bx lr
00048 |$M35564|
ENDP ; |Pcf506TchSetup|
EXPORT |Pcf506ResetADCC|
00000 AREA |.text| { |Pcf506ResetADCC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Pcf506ResetADCC|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf506ResetADCC| } ; comdat associative
|$T35574| DCD |$L35573|
DCD 0x40001202
; Function compile flags: /Ogsy
00000 AREA |.text| { |Pcf506ResetADCC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Pcf506ResetADCC| PROC
; 177 : {
00000 |$L35573|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M35571|
; 178 : unsigned char data[2];
; 179 : //BOOL IsMutex=FALSE;
; 180 :
; 181 : //IsMutex=WaitPcf506Mutex();
; 182 : //此前要确保PMU工作在正常模式
; 183 : //其他寄存器使用默认值
; 184 : //改变ADCC1
; 185 : data[0]=0x2e;
; 186 : data[1]=0x00;
; 187 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);
00008 e5901004 ldr r1, [r0, #4]
0000c e5900010 ldr r0, [r0, #0x10]
00010 e3a0e02e mov lr, #0x2E
00014 e3a04000 mov r4, #0
00018 e3a05001 mov r5, #1
0001c e3a06002 mov r6, #2
00020 e28d3008 add r3, sp, #8
00024 e3a02008 mov r2, #8
00028 e5cde008 strb lr, [sp, #8]
0002c e5cd4009 strb r4, [sp, #9]
00030 e58d5004 str r5, [sp, #4]
00034 e58d6000 str r6, [sp]
00038 eb000000 bl XllpPI2CWrite
; 188 : //if(IsMutex)
; 189 : // ReleasePcf506Mutex();
; 190 :
; 191 : return;
; 192 : }
0003c e28dd00c add sp, sp, #0xC
00040 e8bd4070 ldmia sp!, {r4 - r6, lr}
00044 e12fff1e bx lr
00048 |$M35572|
ENDP ; |Pcf506ResetADCC|
EXPORT |Pcf506SetADCC|
IMPORT |XllpPI2CRead|
00000 AREA |.text| { |Pcf506SetADCC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Pcf506SetADCC|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf506SetADCC| } ; comdat associative
|$T35584| DCD |$L35583|
DCD 0x40002402
; Function compile flags: /Ogsy
00000 AREA |.text| { |Pcf506SetADCC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Pcf506SetADCC| PROC
; 195 : {
00000 |$L35583|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M35581|
00008 e1a05001 mov r5, r1
0000c e1a04000 mov r4, r0
; 196 : unsigned char data[2];
; 197 : //BOOL IsMutex=FALSE;
; 198 : //IsMutex=WaitPcf506Mutex();
; 199 : //改变ADCC1
; 200 : data[0]=0x2e;
; 201 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 1, 0); //write reg address
00010 e5941004 ldr r1, [r4, #4]
00014 e5940010 ldr r0, [r4, #0x10]
00018 e3a0e02e mov lr, #0x2E
0001c e3a06000 mov r6, #0
00020 e3a07001 mov r7, #1
00024 e28d3008 add r3, sp, #8
00028 e3a02008 mov r2, #8
0002c e5cde008 strb lr, [sp, #8]
00030 e58d6004 str r6, [sp, #4]
00034 e58d7000 str r7, [sp]
00038 eb000000 bl XllpPI2CWrite
; 202 : XllpPI2CRead(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data+1, 1, 1); //read data from the reg address
0003c e5941004 ldr r1, [r4, #4]
00040 e5940010 ldr r0, [r4, #0x10]
00044 e28d3009 add r3, sp, #9
00048 e3a02008 mov r2, #8
0004c e58d7004 str r7, [sp, #4]
00050 e58d7000 str r7, [sp]
00054 eb000000 bl XllpPI2CRead
; 203 : data[1] &= ~byte;
00058 e5dd3009 ldrb r3, [sp, #9]
; 204 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);
0005c e5941004 ldr r1, [r4, #4]
00060 e5940010 ldr r0, [r4, #0x10]
00064 e1c33005 bic r3, r3, r5
00068 e5cd3009 strb r3, [sp, #9]
0006c e3a0e002 mov lr, #2
00070 e28d3008 add r3, sp, #8
00074 e3a02008 mov r2, #8
00078 e58d7004 str r7, [sp, #4]
0007c e58de000 str lr, [sp]
00080 eb000000 bl XllpPI2CWrite
; 205 : //if(IsMutex)
; 206 : // ReleasePcf506Mutex();
; 207 : return;
; 208 : }
00084 e28dd00c add sp, sp, #0xC
00088 e8bd40f0 ldmia sp!, {r4 - r7, lr}
0008c e12fff1e bx lr
00090 |$M35582|
ENDP ; |Pcf506SetADCC|
EXPORT |Pcf506StartADCByInput|
00000 AREA |.text| { |Pcf506StartADCByInput| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Pcf506StartADCByInput|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf506StartADCByInput| } ; comdat associative
|$T35592| DCD |$L35591|
DCD 0x40001202
; Function compile flags: /Ogsy
00000 AREA |.text| { |Pcf506StartADCByInput| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Pcf506StartADCByInput| PROC
; 212 : {
00000 |$L35591|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M35589|
; 213 : unsigned char data[2];
; 214 : //BOOL IsMutex=FALSE;
; 215 : //IsMutex=WaitPcf506Mutex();
; 216 : //RETAILMSG(1,(TEXT("Pcf506StartADCByInput()!\r\n")));
; 217 : data[0]=0x2f;
; 218 : data[1]=0x1d; //start
; 219 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 2, 1);
00008 e5901004 ldr r1, [r0, #4]
0000c e5900010 ldr r0, [r0, #0x10]
00010 e3a0e02f mov lr, #0x2F
00014 e3a0401d mov r4, #0x1D
00018 e3a05001 mov r5, #1
0001c e3a06002 mov r6, #2
00020 e28d3008 add r3, sp, #8
00024 e3a02008 mov r2, #8
00028 e5cde008 strb lr, [sp, #8]
0002c e5cd4009 strb r4, [sp, #9]
00030 e58d5004 str r5, [sp, #4]
00034 e58d6000 str r6, [sp]
00038 eb000000 bl XllpPI2CWrite
; 220 : //if(IsMutex)
; 221 : // ReleasePcf506Mutex();
; 222 : }
0003c e28dd00c add sp, sp, #0xC
00040 e8bd4070 ldmia sp!, {r4 - r6, lr}
00044 e12fff1e bx lr
00048 |$M35590|
ENDP ; |Pcf506StartADCByInput|
EXPORT |Pcf506TchGetXY|
EXPORT |??_C@_1EC@GLICLDLF@?$AAg?$AAe?$AAt?$AAx?$AAy?$AA?$CB?$AA?$CB?$AA?$CB?$AA?$CB?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AA?5?$AAi?$AAn?$AAt?$AA?5@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
00000 AREA |.text| { |Pcf506TchGetXY| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Pcf506TchGetXY|, PDATA, SELECTION=5, ASSOC=|.text| { |Pcf506TchGetXY| } ; comdat associative
|$T35602| DCD |$L35601|
DCD 0x40003802
00000 AREA |.rdata| { |??_C@_1EC@GLICLDLF@?$AAg?$AAe?$AAt?$AAx?$AAy?$AA?$CB?$AA?$CB?$AA?$CB?$AA?$CB?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AA?5?$AAi?$AAn?$AAt?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EC@GLICLDLF@?$AAg?$AAe?$AAt?$AAx?$AAy?$AA?$CB?$AA?$CB?$AA?$CB?$AA?$CB?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AA?5?$AAi?$AAn?$AAt?$AA?5@| DCB "g"
DCB 0x0, "e", 0x0, "t", 0x0, "x", 0x0, "y", 0x0, "!", 0x0, "!"
DCB 0x0, "!", 0x0, "!", 0x0, "r", 0x0, "e", 0x0, "t", 0x0, "u"
DCB 0x0, "r", 0x0, "n", 0x0, " ", 0x0, "i", 0x0, "n", 0x0, "t"
DCB 0x0, " ", 0x0, "%", 0x0, "x", 0x0, " ", 0x0, " ", 0x0, "%"
DCB 0x0, "x", 0x0, " ", 0x0, " ", 0x0, "%", 0x0, "x", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |Pcf506TchGetXY| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Pcf506TchGetXY| PROC
; 225 : {
00000 |$L35601|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M35599|
00008 e1a06002 mov r6, r2
0000c e1a05001 mov r5, r1
00010 e1a04000 mov r4, r0
; 226 : unsigned char data[4];
; 227 : //BOOL IsMutex=FALSE;
; 228 : static unsigned short LastX=1024,LastY=1024; // to be solved,when conflict with battery ADC
; 229 : //IsMutex=WaitPcf506Mutex();
; 230 : //read back
; 231 : data[0]=0x2f; //ADCS1 reg address
; 232 : XllpPI2CWrite(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 1, 0); //write reg address
00014 e5941004 ldr r1, [r4, #4]
00018 e5940010 ldr r0, [r4, #0x10]
0001c e3a0e02f mov lr, #0x2F
00020 e3a07000 mov r7, #0
00024 e3a08001 mov r8, #1
00028 e28d3008 add r3, sp, #8
0002c e3a02008 mov r2, #8
00030 e5cde008 strb lr, [sp, #8]
00034 e58d7004 str r7, [sp, #4]
00038 e58d8000 str r8, [sp]
0003c eb000000 bl XllpPI2CWrite
; 233 : XllpPI2CRead(pmuRegs->pi2c_reg_base,pmuRegs->ost_reg_base,0x08, data, 4, 1); //read data from the reg address
00040 e5941004 ldr r1, [r4, #4]
00044 e5940010 ldr r0, [r4, #0x10]
00048 e3a0e004 mov lr, #4
0004c e28d3008 add r3, sp, #8
00050 e3a02008 mov r2, #8
00054 e58de000 str lr, [sp]
00058 e58d8004 str r8, [sp, #4]
0005c eb000000 bl XllpPI2CRead
; 234 : if((data[0]&0x1e) !=0x1c)// || (data[2]&0x80)==0)
00060 e5dd1008 ldrb r1, [sp, #8]
00064 e201301e and r3, r1, #0x1E
00068 e353001c cmp r3, #0x1C
; 235 : {
; 236 : *x=LastX;
; 237 : *y=LastY;
; 238 : RETAILMSG(1,(TEXT("getxy!!!!return int %x %x %x\r\n"),data[0],data[1],data[2]));
0006c e5dd300a ldrb r3, [sp, #0xA]
00070 0a000008 beq |$L35233|
00074 e59f005c ldr r0, [pc, #0x5C]
00078 e5dd2009 ldrb r2, [sp, #9]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -