www.pudn.com > DMBDRV.rar > SianoSPI.cod
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\SpiDrv\.\SianoSPI.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |dpCurSettings| [ DATA ]
00000 AREA |.data|, DATA
COMMON |gt_ClntST|, 0x4
COMMON |gt_ClntET|, 0x4
COMMON |Li_Clnt|, 0x8
|preamble_pattern| DCB 0xa5
DCB 0x5a
DCB 0xe7
DCB 0x7e
% 4
|dpCurSettings| DCB "B", 0x0, "U", 0x0, "I", 0x0, "L", 0x0, "T", 0x0, "I", 0x0
DCB "N", 0x0, "T", 0x0, "E", 0x0, "S", 0x0, "T", 0x0, 0x0, 0x0
% 40
DCB "E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0
DCB 0x0, 0x0
% 50
DCB "W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0
DCB "g", 0x0, "s", 0x0, 0x0, 0x0
% 46
DCB "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0x0, 0x0
% 54
DCB "T", 0x0, "r", 0x0, "a", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0
% 52
DCB "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I", 0x0, "N", 0x0
DCB "I", 0x0, "T", 0x0, 0x0, 0x0
% 46
DCB "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "R", 0x0, "E", 0x0
DCB "A", 0x0, "D", 0x0, 0x0, 0x0
% 46
DCB "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "W", 0x0, "R", 0x0
DCB "I", 0x0, "T", 0x0, "E", 0x0, 0x0, 0x0
% 44
DCB "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I", 0x0, "O", 0x0
DCB "C", 0x0, "T", 0x0, "L", 0x0, 0x0, 0x0
% 44
DCB "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "D", 0x0, "E", 0x0
DCB "I", 0x0, "N", 0x0, "I", 0x0, "T", 0x0, 0x0, 0x0
% 42
DCB "Z", 0x0, "O", 0x0, "N", 0x0, "E", 0x0, "_", 0x0, "F", 0x0
DCB "U", 0x0, "N", 0x0, "C", 0x0, "T", 0x0, "I", 0x0, "O", 0x0
DCB "N", 0x0, 0x0, 0x0
% 36
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
% 256
DCD 0xf
EXPORT |ResetEvent|
IMPORT |EventModify|
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$ResetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |ResetEvent| } ; comdat associative
|$T38825| DCD |$L38824|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |ResetEvent| PROC
; 174 : _inline BOOL ResetEvent(HANDLE h) {
00000 |$L38824|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38822|
; 175 : return EventModify(h,EVENT_RESET);
00004 e3a01002 mov r1, #2
00008 eb000000 bl EventModify
; 176 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M38823|
ENDP ; |ResetEvent|
EXPORT |SetEvent|
00000 AREA |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$SetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |SetEvent| } ; comdat associative
|$T38835| DCD |$L38834|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |SetEvent| PROC
; 186 : _inline BOOL SetEvent(HANDLE h) {
00000 |$L38834|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38832|
; 187 : return EventModify(h,EVENT_SET);
00004 e3a01003 mov r1, #3
00008 eb000000 bl EventModify
; 188 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M38833|
ENDP ; |SetEvent|
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c
00000 AREA |.text| { |MsgFound| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$MsgFound|, PDATA, SELECTION=5, ASSOC=|.text| { |MsgFound| } ; comdat associative
|$T38845| DCD |$L38844|
DCD 0x40000801
; Function compile flags: /Ogsy
00000 AREA |.text| { |MsgFound| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |MsgFound| PROC
; 66 : {
00000 |$L38844|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38842|
; 67 : PSPIDEVICEEXTENSION pSpiDevExt = context;
; 68 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: MsgFound().\r\n")));
; 69 : if (pSpiDevExt->pBD_ReadCBFunc)
00004 e590305c ldr r3, [r0, #0x5C]
00008 e3530000 cmp r3, #0
; 70 : {
; 71 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: Calling back with message.\r\n")));
; 72 : pSpiDevExt->pBD_ReadCBFunc(pSpiDevExt->hBDContext, buf, (DWORD)len);
0000c 15900068 ldrne r0, [r0, #0x68]
00010 11a0e00f movne lr, pc
00014 112fff13 bxne r3
; 73 : }
; 74 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: MsgFound end.\r\n")));
; 75 :
; 76 : }
00018 e49de004 ldr lr, [sp], #4
0001c e12fff1e bx lr
00020 |$M38843|
ENDP ; |MsgFound|
IMPORT |SetEventData|
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |smsspi_interruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$smsspi_interruptHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |smsspi_interruptHandler| } ; comdat associative
|$T38857| DCD |$L38856|
DCD 0x40000a01
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c
00000 AREA |.text| { |smsspi_interruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |smsspi_interruptHandler| PROC
; 80 : {
00000 |$L38856|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M38854|
00004 e1a04000 mov r4, r0
; 81 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)pArg;
; 82 : //DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: Interrupt().\r\n")));
; 83 : SetEventData(pSpiDevExt->transferMsgQueue, 0);
00008 e594004c ldr r0, [r4, #0x4C]
0000c e3a01000 mov r1, #0
00010 eb000000 bl SetEventData
; 84 : SetEvent(pSpiDevExt->transferMsgQueue);
00014 e594004c ldr r0, [r4, #0x4C]
00018 e3a01003 mov r1, #3
0001c eb000000 bl EventModify
; 85 : }
00020 e8bd4010 ldmia sp!, {r4, lr}
00024 e12fff1e bx lr
00028 |$M38855|
ENDP ; |smsspi_interruptHandler|
EXPORT |??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| [ DATA ] ; `string'
IMPORT |GetEventData|
IMPORT |smsspi_common_transfer_msg|
IMPORT |WaitForSingleObject|
IMPORT |NKDbgPrintfW|
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |SpiTransferThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SpiTransferThread|, PDATA, SELECTION=5, ASSOC=|.text| { |SpiTransferThread| } ; comdat associative
|$T38873| DCD |$L38872|
DCD 0x40001701
00000 AREA |.rdata| { |??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "E", 0x0, "n", 0x0, "d", 0x0, " ", 0x0, "x"
DCB 0x0, "f", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "e", 0x0, "v"
DCB 0x0, "e", 0x0, "n", 0x0, "t", 0x0, ".", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c
00000 AREA |.text| { |SpiTransferThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SpiTransferThread| PROC
; 89 : {
00000 |$L38872|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M38870|
00004 e1a04000 mov r4, r0
00008 e59f5048 ldr r5, [pc, #0x48]
0000c |$L38426|
; 90 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)pArg;
; 91 : struct spi_msg *msg;
; 92 :
; 93 : while (1)
; 94 : {
; 95 : WaitForSingleObject(pSpiDevExt->transferMsgQueue, INFINITE);
0000c e594004c ldr r0, [r4, #0x4C]
00010 e3e01000 mvn r1, #0
00014 eb000000 bl WaitForSingleObject
; 96 : //DBGMSG(ZONE_DETAILED, (TEXT("SmsSpi: Recieved xfer event.\r\n")));
; 97 : msg = (struct spi_msg *)GetEventData(pSpiDevExt->transferMsgQueue);
00018 e594004c ldr r0, [r4, #0x4C]
0001c eb000000 bl GetEventData
; 98 : //if (msg)
; 99 : // DBGMSG(ZONE_INFO, (TEXT("SmsSpi: Transfering packet, buf=0x%x, len=%d.\r\n"), msg->buf, msg->len));
; 100 : smsspi_common_transfer_msg(&pSpiDevExt->dev, msg, pSpiDevExt->PaddingAllowed);
00020 e5942034 ldr r2, [r4, #0x34]
00024 e1a01000 mov r1, r0
00028 e1a00004 mov r0, r4
0002c eb000000 bl smsspi_common_transfer_msg
; 101 : SetEvent(pSpiDevExt->WriteOperation);
00030 e5940048 ldr r0, [r4, #0x48]
00034 e3a01003 mov r1, #3
00038 eb000000 bl EventModify
; 102 : DBGMSG(ZONE_DETAILED, (TEXT("SmsSpi: End xfer event.\r\n")));
0003c e5953440 ldr r3, [r5, #0x440]
00040 e3130010 tst r3, #0x10
00044 0afffff0 beq |$L38426|
00048 e59f0004 ldr r0, [pc, #4]
0004c eb000000 bl NKDbgPrintfW
; 103 : }
00050 eaffffed b |$L38426|
00054 |$L38875|
00054 00000000 DCD |??_C@_1DE@OLMIHPOI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAE?$AAn?$AAd?$AA?5?$AAx?$AAf?$AAe?$AAr?$AA?5?$AAe?$AAv?$AAe@|
00058 00000000 DCD |dpCurSettings|
0005c |$M38871|
ENDP ; |SpiTransferThread|
EXPORT |GetInstance|
EXPORT |??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| [ DATA ] ; `string'
EXPORT |??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| [ DATA ] ; `string'
IMPORT |RegCloseKey|
IMPORT |RegOpenKeyExW|
IMPORT |RegQueryValueExW|
00000 AREA |.text| { |GetInstance| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetInstance|, PDATA, SELECTION=5, ASSOC=|.text| { |GetInstance| } ; comdat associative
|$T38886| DCD |$L38885|
DCD 0x40003102
00000 AREA |.rdata| { |??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@| DCB "M"
DCB 0x0, "i", 0x0, "n", 0x0, "i", 0x0, "p", 0x0, "o", 0x0, "r"
DCB 0x0, "t", 0x0, "N", 0x0, "a", 0x0, "m", 0x0, "e", 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@| DCB "M"
DCB 0x0, "i", 0x0, "n", 0x0, "i", 0x0, "P", 0x0, "o", 0x0, "r"
DCB 0x0, "t", 0x0, "I", 0x0, "n", 0x0, "s", 0x0, "t", 0x0, "a"
DCB 0x0, "n", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@| DCB "D"
DCB 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s"
DCB 0x0, "\\", 0x0, "B", 0x0, "u", 0x0, "i", 0x0, "l", 0x0, "t"
DCB 0x0, "I", 0x0, "n", 0x0, "\\", 0x0, "S", 0x0, "i", 0x0, "a"
DCB 0x0, "n", 0x0, "o", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetInstance| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetInstance| PROC
; 114 : {
00000 |$L38885|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd018 sub sp, sp, #0x18
00008 |$M38883|
00008 e1a05000 mov r5, r0
; 115 : HKEY hSpikey;
; 116 : LONG lRes;
; 117 : DWORD dwType;
; 118 : DWORD CurrInstancenum;
; 119 : DWORD DataSize;
; 120 :
; 121 : lRes = RegOpenKeyEx(
; 122 : HKEY_LOCAL_MACHINE,
; 123 : REG_PATH,
; 124 : 0,//N\A
; 125 : 0,//N\A
; 126 : &hSpikey
; 127 : );
0000c e59f10ac ldr r1, [pc, #0xAC]
00010 e28de008 add lr, sp, #8
00014 e3a03000 mov r3, #0
00018 e3a02000 mov r2, #0
0001c e3a0010a mov r0, #0xA, 2
00020 e58de000 str lr, [sp]
00024 eb000000 bl RegOpenKeyExW
00028 e3500000 cmp r0, #0
; 128 : if(lRes != ERROR_SUCCESS)
; 129 : return (-1);
0002c 1a00001a bne |$L38882|
; 130 :
; 131 : DataSize=sizeof(DWORD);
; 132 : lRes = RegQueryValueEx(
; 133 : hSpikey,
; 134 : L"MiniPortInstance",
; 135 : 0,
; 136 : &dwType,
; 137 : (LPBYTE)&CurrInstancenum,
; 138 : &DataSize
; 139 : );
00030 e59f1084 ldr r1, [pc, #0x84]
00034 e59d0008 ldr r0, [sp, #8]
00038 e3a06004 mov r6, #4
0003c e28de00c add lr, sp, #0xC
00040 e28d4014 add r4, sp, #0x14
00044 e28d3010 add r3, sp, #0x10
00048 e3a02000 mov r2, #0
0004c e58d600c str r6, [sp, #0xC]
00050 e58de004 str lr, [sp, #4]
00054 e58d4000 str r4, [sp]
00058 eb000000 bl RegQueryValueExW
0005c e3500000 cmp r0, #0
; 140 : if(lRes!=ERROR_SUCCESS)
; 141 : {
; 142 : RegCloseKey(hSpikey);
00060 e59d0008 ldr r0, [sp, #8]
; 143 : return (-1);
00064 1a00000b bne |$L38881|
; 144 : }
; 145 :
; 146 : DataSize=MAX_MNPRT_NAME;
; 147 : lRes = RegQueryValueEx(
; 148 : hSpikey,
; 149 : L"MiniportName",
; 150 : 0,
; 151 : &dwType,
; 152 : (LPBYTE)szName,
; 153 : &DataSize
; 154 : );
00068 e59f1048 ldr r1, [pc, #0x48]
0006c e3a04040 mov r4, #0x40
00070 e28de00c add lr, sp, #0xC
00074 e28d3010 add r3, sp, #0x10
00078 e3a02000 mov r2, #0
0007c e58d400c str r4, [sp, #0xC]
00080 e58de004 str lr, [sp, #4]
00084 e58d5000 str r5, [sp]
00088 eb000000 bl RegQueryValueExW
0008c e3500000 cmp r0, #0
; 155 : if(lRes!=ERROR_SUCCESS)
; 156 : {
; 157 : RegCloseKey(hSpikey);
00090 e59d0008 ldr r0, [sp, #8]
00094 0a000002 beq |$L38449|
00098 |$L38881|
00098 eb000000 bl RegCloseKey
0009c |$L38882|
; 158 : return (-1);
0009c e3e00000 mvn r0, #0
000a0 ea000001 b |$L38433|
000a4 |$L38449|
; 159 : }
; 160 :
; 161 : RegCloseKey(hSpikey);
000a4 eb000000 bl RegCloseKey
; 162 : return CurrInstancenum;
000a8 e59d0014 ldr r0, [sp, #0x14]
000ac |$L38433|
; 163 : }
000ac e28dd018 add sp, sp, #0x18
000b0 e8bd4070 ldmia sp!, {r4 - r6, lr}
000b4 e12fff1e bx lr
000b8 |$L38888|
000b8 00000000 DCD |??_C@_1BK@KPLOIJDF@?$AAM?$AAi?$AAn?$AAi?$AAp?$AAo?$AAr?$AAt?$AAN?$AAa?$AAm?$AAe?$AA?$AA@|
000bc 00000000 DCD |??_C@_1CC@KBENDKOI@?$AAM?$AAi?$AAn?$AAi?$AAP?$AAo?$AAr?$AAt?$AAI?$AAn?$AAs?$AAt?$AAa?$AAn?$AAc?$AAe?$AA?$AA@|
000c0 00000000 DCD |??_C@_1DC@DJFBBKNH@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAB?$AAu?$AAi?$AAl?$AAt?$AAI?$AAn?$AA?2?$AAS?$AAi?$AAa?$AAn@|
000c4 |$M38884|
ENDP ; |GetInstance|
EXPORT |DllEntry|
00000 AREA |.text| { |DllEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DllEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |DllEntry| } ; comdat associative
|$T38896| DCD |$L38895|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |DllEntry| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DllEntry| PROC
; 190 : {
00000 |$L38895|
00000 |$M38893|
; 191 : BOOL bRc = TRUE;
; 192 :
; 193 : UNREFERENCED_PARAMETER(hDllHandle);
; 194 : UNREFERENCED_PARAMETER(lpreserved);
; 195 :
; 196 : switch (dwReason) {
; 197 : case DLL_PROCESS_ATTACH:
; 198 : {
; 199 : DEBUGREGISTER((HINSTANCE)hDllHandle);
; 200 : DEBUGMSG(1,(_T("*** DLL_PROCESS_ATTACH - Current Process: 0x%x, ID: 0x%x ***\r\n"),
; 201 : GetCurrentProcess(), GetCurrentProcessId()));
; 202 :
; 203 :
; 204 : }
; 205 : break;
; 206 :
; 207 : case DLL_PROCESS_DETACH:
; 208 : {
; 209 : DEBUGMSG(1,(_T("*** DLL_PROCESS_DETACH - Current Process: 0x%x, ID: 0x%x ***\r\n"),
; 210 : GetCurrentProcess(), GetCurrentProcessId()));
; 211 :
; 212 :
; 213 : }
; 214 : break;
; 215 :
; 216 : default:
; 217 : break;
; 218 : }
; 219 :
; 220 : return bRc;
00000 e3a00001 mov r0, #1
; 221 : }
00004 e12fff1e bx lr
00008 |$M38894|
ENDP ; |DllEntry|
IMPORT |LocalFree|
IMPORT |DeactivateDevice|
IMPORT |smsspiphy_deinit|
IMPORT |TerminateThread|
IMPORT |CloseHandle|
IMPORT |HalFreeCommonBuffer|
00000 AREA |.text| { |FreeAllocatedResources| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$FreeAllocatedResources|, PDATA, SELECTION=5, ASSOC=|.text| { |FreeAllocatedResources| } ; comdat associative
|$T38906| DCD |$L38905|
DCD 0x40003302
; Function compile flags: /Ogsy
00000 AREA |.text| { |FreeAllocatedResources| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |FreeAllocatedResources| PROC
; 225 : {
00000 |$L38905|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M38903|
00008 e1b04000 movs r4, r0
; 226 : DMA_ADAPTER_OBJECT adapter;
; 227 :
; 228 : if (pSpiDevExt)
0000c 0a00002b beq |$L38474|
; 229 : {
; 230 : if (pSpiDevExt->hSmsGenDrv != INVALID_HANDLE_VALUE)
00010 e5940058 ldr r0, [r4, #0x58]
00014 e3700001 cmn r0, #1
00018 0a000002 beq |$L38476|
; 231 : {
; 232 : DeactivateDevice(pSpiDevExt->hSmsGenDrv);
0001c eb000000 bl DeactivateDevice
; 233 : pSpiDevExt->hSmsGenDrv = INVALID_HANDLE_VALUE;
00020 e3e03000 mvn r3, #0
00024 e5843058 str r3, [r4, #0x58]
00028 |$L38476|
; 234 : }
; 235 : if (pSpiDevExt->transferThread)
00028 e5943050 ldr r3, [r4, #0x50]
0002c e3530000 cmp r3, #0
00030 0a000004 beq |$L38478|
; 236 : {
; 237 : TerminateThread(pSpiDevExt->transferThread, 0);
00034 e3a01000 mov r1, #0
00038 e1a00003 mov r0, r3
0003c eb000000 bl TerminateThread
; 238 : CloseHandle(pSpiDevExt->transferThread);
00040 e5940050 ldr r0, [r4, #0x50]
00044 eb000000 bl CloseHandle
00048 |$L38478|
; 239 : }
; 240 : if (pSpiDevExt->transferMsgQueue)
00048 e594304c ldr r3, [r4, #0x4C]
0004c e3530000 cmp r3, #0
; 241 : {
; 242 : CloseHandle(pSpiDevExt->transferMsgQueue);
00050 11a00003 movne r0, r3
00054 1b000000 blne CloseHandle
; 243 : }
; 244 : if (pSpiDevExt->WriteOperation)
00058 e5943048 ldr r3, [r4, #0x48]
0005c e3530000 cmp r3, #0
; 245 : {
; 246 : CloseHandle(pSpiDevExt->WriteOperation);
00060 11a00003 movne r0, r3
00064 1b000000 blne CloseHandle
; 247 : }
; 248 :
; 249 : if (pSpiDevExt->dev.rxbuf)
00068 e5943010 ldr r3, [r4, #0x10]
0006c e3530000 cmp r3, #0
; 250 : {
; 251 : LocalFree(pSpiDevExt->dev.rxbuf);
00070 11a00003 movne r0, r3
00074 1b000000 blne LocalFree
; 252 : }
; 253 : if (pSpiDevExt->phyDrv)
00078 e5943054 ldr r3, [r4, #0x54]
0007c e3a05000 mov r5, #0
00080 e3530000 cmp r3, #0
00084 0a000002 beq |$L38482|
; 254 : {
; 255 : smsspiphy_deinit(pSpiDevExt->phyDrv);
00088 e1a00003 mov r0, r3
0008c eb000000 bl smsspiphy_deinit
; 256 : pSpiDevExt->phyDrv = NULL;
00090 e5845054 str r5, [r4, #0x54]
00094 |$L38482|
; 257 : }
; 258 : if (pSpiDevExt->txbuf)
00094 e5943040 ldr r3, [r4, #0x40]
00098 e1b0e003 movs lr, r3
; 259 : {
; 260 : PHYSICAL_ADDRESS phyAddr;
; 261 : phyAddr.QuadPart = pSpiDevExt->txbuf_phy_addr;
0009c 15942044 ldrne r2, [r4, #0x44]
000a0 13a03000 movne r3, #0
; 262 : HalFreeCommonBuffer(&adapter, TX_BUF_SIZE, phyAddr, pSpiDevExt->txbuf, FALSE);
000a4 13a01c02 movne r1, #2, 24
000a8 128d0008 addne r0, sp, #8
000ac 158d5004 strne r5, [sp, #4]
000b0 158de000 strne lr, [sp]
000b4 1b000000 blne HalFreeCommonBuffer
; 263 : }
; 264 : LocalFree(pSpiDevExt);
000b8 e1a00004 mov r0, r4
000bc eb000000 bl LocalFree
000c0 |$L38474|
; 265 : pSpiDevExt = NULL;
; 266 : }
; 267 : }
000c0 e28dd014 add sp, sp, #0x14
000c4 e8bd4030 ldmia sp!, {r4, r5, lr}
000c8 e12fff1e bx lr
000cc |$M38904|
ENDP ; |FreeAllocatedResources|
EXPORT |??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| [ DATA ] ; `string'
IMPORT |LocalAlloc|
00000 AREA |.text| { |GetRegistrySettings| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetRegistrySettings|, PDATA, SELECTION=5, ASSOC=|.text| { |GetRegistrySettings| } ; comdat associative
|$T38935| DCD |$L38934|
DCD 0x40006502
00000 AREA |.rdata| { |??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@| DCB "n"
DCB 0x0, "o", 0x0, "v", 0x0, "a", 0x0, "D", 0x0, "e", 0x0, "v"
DCB 0x0, "i", 0x0, "c", 0x0, "e", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S"
DCB 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S"
DCB 0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!"
DCB 0x0, " ", 0x0, "C", 0x0, "o", 0x0, "u", 0x0, "l", 0x0, "d"
DCB 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "g"
DCB 0x0, "e", 0x0, "t", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "g"
DCB 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r", 0x0, "y", 0x0, " "
DCB 0x0, "k", 0x0, "e", 0x0, "y", 0x0, " ", 0x0, "n", 0x0, "a"
DCB 0x0, "m", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@| DCB "K", 0x0, "e", 0x0, "y", 0x0
DCB 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S"
DCB 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S"
DCB 0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!"
DCB 0x0, " ", 0x0, "C", 0x0, "o", 0x0, "u", 0x0, "l", 0x0, "d"
DCB 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "o"
DCB 0x0, "p", 0x0, "e", 0x0, "n", 0x0, " ", 0x0, "r", 0x0, "e"
DCB 0x0, "g", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r", 0x0, "y"
DCB 0x0, " ", 0x0, "k", 0x0, "e", 0x0, "y", 0x0, ".", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@| DCB "S"
DCB 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "S"
DCB 0x0, "P", 0x0, "I", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "!"
DCB 0x0, " ", 0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c"
DCB 0x0, "a", 0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " "
DCB 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r", 0x0, "y"
DCB 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "r"
DCB 0x0, "e", 0x0, "g", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "r"
DCB 0x0, "y", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d"
DCB 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "f", 0x0, "a"
DCB 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetRegistrySettings| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetRegistrySettings| PROC
; 272 : {
00000 |$L38934|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M38932|
00008 e1a05001 mov r5, r1
0000c e1a04000 mov r4, r0
; 273 : TCHAR* regKey;
; 274 : BOOL st;
; 275 : HKEY hKey;
; 276 : DWORD dataSize, type;
; 277 : regKey = (TCHAR *)LocalAlloc (LPTR, MAX_REG_KEY_SIZE);
00010 e3a01064 mov r1, #0x64
00014 e3a00040 mov r0, #0x40
00018 eb000000 bl LocalAlloc
0001c e1b06000 movs r6, r0
; 278 : if (regKey == NULL)
00020 1a000006 bne |$L38500|
; 279 : {
; 280 : DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Allocating memory for registry reading failed.\r\n")));
00024 e59f3154 ldr r3, [pc, #0x154]
00028 e5933440 ldr r3, [r3, #0x440]
0002c e3130001 tst r3, #1
00030 159f0158 ldrne r0, [pc, #0x158]
00034 1b000000 blne NKDbgPrintfW
; 281 : return FALSE;
00038 e3a04000 mov r4, #0
0003c ea00004a b |$L38492|
00040 |$L38500|
; 282 : }
; 283 :
; 284 :
; 285 : st = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCWSTR)Context, 0, 0, &hKey);
00040 e28d3008 add r3, sp, #8
00044 e58d3000 str r3, [sp]
00048 e3a03000 mov r3, #0
0004c e3a02000 mov r2, #0
00050 e1a01004 mov r1, r4
00054 e3a0010a mov r0, #0xA, 2
00058 eb000000 bl RegOpenKeyExW
0005c e3500000 cmp r0, #0
; 286 : if(st != ERROR_SUCCESS)
00060 0a000007 beq |$L38505|
00064 |$L38931|
; 287 : {
; 288 : DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not open registry key.\r\n")));
00064 e59f3114 ldr r3, [pc, #0x114]
00068 e5933440 ldr r3, [r3, #0x440]
0006c e3130001 tst r3, #1
00070 0a000001 beq |$L38912|
00074 e59f0110 ldr r0, [pc, #0x110]
00078 |$L38930|
00078 eb000000 bl NKDbgPrintfW
0007c |$L38912|
0007c e3a04000 mov r4, #0
00080 ea000037 b |$L38920|
00084 |$L38505|
; 289 : LocalFree(regKey);
; 290 : return (FALSE);
; 291 : }
; 292 :
; 293 : dataSize=MAX_REG_KEY_SIZE;
; 294 : st = RegQueryValueEx( hKey,
; 295 : TEXT("Key"),
; 296 : NULL,
; 297 : &type,
; 298 : (LPBYTE)regKey,
; 299 : &dataSize);
00084 e59f10fc ldr r1, [pc, #0xFC]
00088 e59d0008 ldr r0, [sp, #8]
0008c e3a04064 mov r4, #0x64
00090 e28de00c add lr, sp, #0xC
00094 e28d3010 add r3, sp, #0x10
00098 e3a02000 mov r2, #0
0009c e58d400c str r4, [sp, #0xC]
000a0 e58de004 str lr, [sp, #4]
000a4 e58d6000 str r6, [sp]
000a8 eb000000 bl RegQueryValueExW
000ac e1a04000 mov r4, r0
; 300 :
; 301 : RegCloseKey(hKey);
000b0 e59d0008 ldr r0, [sp, #8]
000b4 eb000000 bl RegCloseKey
; 302 : if(st!=ERROR_SUCCESS)
000b8 e3540000 cmp r4, #0
000bc 0a000005 beq |$L38510|
; 303 : {
; 304 : DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not get registry key name.\r\n")));
000c0 e59f30b8 ldr r3, [pc, #0xB8]
000c4 e5933440 ldr r3, [r3, #0x440]
000c8 e3130001 tst r3, #1
000cc 0affffea beq |$L38912|
000d0 e59f00a4 ldr r0, [pc, #0xA4]
000d4 eaffffe7 b |$L38930|
000d8 |$L38510|
; 305 : LocalFree(regKey);
; 306 : return (FALSE);
; 307 : }
; 308 :
; 309 : // Now - read all the needed parameters for the driver from the registry.
; 310 :
; 311 :
; 312 : st = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regKey, 0, 0, &hKey);
000d8 e28d3008 add r3, sp, #8
000dc e58d3000 str r3, [sp]
000e0 e3a03000 mov r3, #0
000e4 e3a02000 mov r2, #0
000e8 e1a01006 mov r1, r6
000ec e3a0010a mov r0, #0xA, 2
000f0 eb000000 bl RegOpenKeyExW
000f4 e3500000 cmp r0, #0
000f8 1affffd9 bne |$L38931|
; 313 : if(st != ERROR_SUCCESS)
; 314 : {
; 315 : DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not open registry key.\r\n")));
; 316 : LocalFree(regKey);
; 317 : return (FALSE);
; 318 : }
; 319 :
; 320 :
; 321 :
; 322 : dataSize = sizeof(pSpiDevExt->novaDevice);
; 323 : st = RegQueryValueEx( hKey,
; 324 : L"novaDevice",
; 325 : 0,
; 326 : &type,
; 327 : (LPBYTE)&pSpiDevExt->novaDevice,
; 328 : &dataSize);
000fc e59f1080 ldr r1, [pc, #0x80]
00100 e59d0008 ldr r0, [sp, #8]
00104 e3a07004 mov r7, #4
00108 e28de00c add lr, sp, #0xC
0010c e2854060 add r4, r5, #0x60
00110 e28d3010 add r3, sp, #0x10
00114 e3a02000 mov r2, #0
00118 e58d700c str r7, [sp, #0xC]
0011c e58de004 str lr, [sp, #4]
00120 e58d4000 str r4, [sp]
00124 eb000000 bl RegQueryValueExW
00128 e3500000 cmp r0, #0
; 329 :
; 330 : if(st != ERROR_SUCCESS)
; 331 : { //Set default value if registry entry is not found.
; 332 : pSpiDevExt->novaDevice = FALSE;
; 333 : }
; 334 :
; 335 :
; 336 : st = RegCloseKey(hKey);
0012c e59d0008 ldr r0, [sp, #8]
00130 e3a04000 mov r4, #0
00134 15854060 strne r4, [r5, #0x60]
00138 eb000000 bl RegCloseKey
0013c e3500000 cmp r0, #0
; 337 : if(st!=ERROR_SUCCESS)
00140 0a000006 beq |$L38518|
; 338 : {
; 339 : DBGMSG( ZONE_ERROR,(TEXT("Siano SPI - ERROR!! Could not get registry key name.\r\n")));
00144 e59f3034 ldr r3, [pc, #0x34]
00148 e5933440 ldr r3, [r3, #0x440]
0014c e3130001 tst r3, #1
00150 0a000003 beq |$L38920|
00154 e59f0020 ldr r0, [pc, #0x20]
00158 eb000000 bl NKDbgPrintfW
0015c ea000000 b |$L38920|
00160 |$L38518|
00160 e3a04001 mov r4, #1
00164 |$L38920|
; 340 : LocalFree(regKey);
; 341 : return (FALSE);
; 342 : }
; 343 :
; 344 : LocalFree(regKey);
00164 e1a00006 mov r0, r6
00168 eb000000 bl LocalFree
; 345 : return (TRUE);
0016c |$L38492|
; 281 : return FALSE;
0016c e1a00004 mov r0, r4
; 346 :
; 347 : }
00170 e28dd014 add sp, sp, #0x14
00174 e8bd40f0 ldmia sp!, {r4 - r7, lr}
00178 e12fff1e bx lr
0017c |$L38937|
0017c 00000000 DCD |??_C@_1GO@DOKPPNLL@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@|
00180 00000000 DCD |dpCurSettings|
00184 00000000 DCD |??_C@_1BG@IDJMGAAE@?$AAn?$AAo?$AAv?$AAa?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?$AA@|
00188 00000000 DCD |??_C@_17KACEIPNC@?$AAK?$AAe?$AAy?$AA?$AA@|
0018c 00000000 DCD |??_C@_1GG@LOGBBJNB@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@|
00190 00000000 DCD |??_C@_1IK@EOBAPHCE@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAS?$AAP?$AAI?$AA?5?$AA?9?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?$CB?$AA?$CB?$AA?5@|
00194 |$M38933|
ENDP ; |GetRegistrySettings|
EXPORT |SPI_Init|
EXPORT |??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| [ DATA ] ; `string'
EXPORT |??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| [ DATA ] ; `string'
EXPORT |??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| [ DATA ] ; `string'
EXPORT |??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| [ DATA ] ; `string'
EXPORT |??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| [ DATA ] ; `string'
IMPORT |memset|
IMPORT |ActivateDevice|
IMPORT |CreateEventW|
IMPORT |smsspicommon_init|
IMPORT |smsspibus_xfer|
IMPORT |smsspiphy_init|
IMPORT |CreateThread|
IMPORT |VirtualAllocCopy|
IMPORT |GetLastError|
IMPORT |CeSetThreadPriority|
00000 AREA |.text| { |SPI_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Init| } ; comdat associative
|$T38974| DCD |$L38973|
DCD 0x4000d102
00000 AREA |.rdata| { |??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
DCB 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "l"
DCB 0x0, "o", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "S", 0x0, "m"
DCB 0x0, "s", 0x0, "G", 0x0, "e", 0x0, "n", 0x0, "D", 0x0, "r"
DCB 0x0, "v", 0x0, ".", 0x0, " ", 0x0, "E", 0x0, "r", 0x0, "r"
DCB 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "E", 0x0, "n", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "A", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v", 0x0, "a"
DCB 0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "G"
DCB 0x0, "e", 0x0, "n", 0x0, " ", 0x0, "d", 0x0, "r", 0x0, "i"
DCB 0x0, "v", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "w", 0x0, "i"
DCB 0x0, "t", 0x0, "h", 0x0, " ", 0x0, "S", 0x0, "t", 0x0, "e"
DCB 0x0, "l", 0x0, "l", 0x0, "a", 0x0, "r", 0x0, " ", 0x0, "d"
DCB 0x0, "e", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "."
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@| DCB "D"
DCB 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s"
DCB 0x0, "\\", 0x0, "S", 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o"
DCB 0x0, "\\", 0x0, "S", 0x0, "M", 0x0, "S", 0x0, "1", 0x0, "0"
DCB 0x0, "0", 0x0, "0", 0x0, "\\", 0x0, "S", 0x0, "m", 0x0, "s"
DCB 0x0, "G", 0x0, "e", 0x0, "n", 0x0, "D", 0x0, "r", 0x0, "v"
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "A", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v", 0x0, "a"
DCB 0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "G"
DCB 0x0, "e", 0x0, "n", 0x0, " ", 0x0, "d", 0x0, "r", 0x0, "i"
DCB 0x0, "v", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "w", 0x0, "i"
DCB 0x0, "t", 0x0, "h", 0x0, " ", 0x0, "N", 0x0, "a", 0x0, "v"
DCB 0x0, "a", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v", 0x0, "i"
DCB 0x0, "c", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, " ", 0x0, "t", 0x0, "r", 0x0, "a", 0x0, "n"
DCB 0x0, "s", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, "T", 0x0, "h"
DCB 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "t"
DCB 0x0, "h", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, " "
DCB 0x0, "p", 0x0, "r", 0x0, "i", 0x0, "o", 0x0, "r", 0x0, "i"
DCB 0x0, "t", 0x0, "y", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r"
DCB 0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t"
DCB 0x0, "r", 0x0, "a", 0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e"
DCB 0x0, "r", 0x0, "T", 0x0, "h", 0x0, "r", 0x0, "e", 0x0, "a"
DCB 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "r", 0x0, "e"
DCB 0x0, "a", 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r"
DCB 0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t"
DCB 0x0, "r", 0x0, "a", 0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e"
DCB 0x0, "r", 0x0, "M", 0x0, "s", 0x0, "g", 0x0, "Q", 0x0, "u"
DCB 0x0, "e", 0x0, "u", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r"
DCB 0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "W"
DCB 0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "e"
DCB 0x0, "v", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, ".", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "a", 0x0, "l"
DCB 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e"
DCB 0x0, " ", 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r"
DCB 0x0, "y", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " "
DCB 0x0, "R", 0x0, "X", 0x0, " ", 0x0, "b", 0x0, "u", 0x0, "f"
DCB 0x0, "f", 0x0, "e", 0x0, "r", 0x0, ".", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "i", 0x0, "n"
DCB 0x0, "i", 0x0, "t", 0x0, "i", 0x0, "a", 0x0, "l", 0x0, "i"
DCB 0x0, "z", 0x0, "e", 0x0, " ", 0x0, "p", 0x0, "h", 0x0, "y"
DCB 0x0, "s", 0x0, "i", 0x0, "c", 0x0, "a", 0x0, "l", 0x0, " "
DCB 0x0, "d", 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r"
DCB 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@| DCB "I2C: v_pI2CReg", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "a", 0x0, "l"
DCB 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e"
DCB 0x0, " ", 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o", 0x0, "r"
DCB 0x0, "y", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, " "
DCB 0x0, "h", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "l", 0x0, "e"
DCB 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "I"
DCB 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "S", 0x0, "t", 0x0, "a", 0x0, "r", 0x0, "t", 0x0, "."
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Init| PROC
; 364 : {
00000 |$L38973|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M38971|
00008 e1a07000 mov r7, r0
; 365 :
; 366 : DWORD Res = 0;
; 367 : //DMA_ADAPTER_OBJECT adapter;
; 368 : MSGQUEUEOPTIONS msgOptions;
; 369 : //PHYSICAL_ADDRESS phyAddr;
; 370 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)LocalAlloc(LPTR,sizeof(SPIDEVICEEXTENSION));
0000c e3a0106c mov r1, #0x6C
00010 e3a00040 mov r0, #0x40
00014 eb000000 bl LocalAlloc
; 371 :
; 372 : DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Start.\r\n")));
00018 e59f6320 ldr r6, [pc, #0x320]
0001c e1a05000 mov r5, r0
00020 e5963448 ldr r3, [r6, #0x448]
00024 e3130004 tst r3, #4
00028 0a000002 beq |$L38940|
0002c e59f0308 ldr r0, [pc, #0x308]
00030 eb000000 bl NKDbgPrintfW
00034 e5963448 ldr r3, [r6, #0x448]
00038 |$L38940|
; 373 : if(pSpiDevExt == NULL)
00038 e3550000 cmp r5, #0
0003c 1a000004 bne |$L38537|
; 374 : {
; 375 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to allocate memory for handle.\r\n")));
00040 e3130005 tst r3, #5
00044 0a0000a6 beq |$L38942|
00048 e59f02e8 ldr r0, [pc, #0x2E8]
0004c eb000000 bl NKDbgPrintfW
; 376 : return 0;
00050 ea0000a3 b |$L38942|
00054 |$L38537|
; 377 : }
; 378 : memset (pSpiDevExt, 0, sizeof(SPIDEVICEEXTENSION));
00054 e3a0206c mov r2, #0x6C
00058 e3a01000 mov r1, #0
0005c e1a00005 mov r0, r5
00060 eb000000 bl memset
; 379 :
; 380 : //Init the hw:
; 381 :
; 382 : pSpiDevExt->txbuf = (char *)VirtualAllocCopy(0x2000, "I2C: v_pI2CReg", (PVOID)(IM_STORAGE_BASE_U_VIRTUAL + 0x4000));
00064 e59f12c8 ldr r1, [pc, #0x2C8]
00068 e3a02329 mov r2, #0x29, 6
0006c e3822901 orr r2, r2, #1, 18
00070 e3a00a02 mov r0, #2, 20
00074 eb000000 bl VirtualAllocCopy
00078 e1a02000 mov r2, r0
; 383 : pSpiDevExt->txbuf_phy_addr = (unsigned long)(IM_STORAGE_BASE_PHYSICAL + 0x4000);
0007c e3a0e317 mov lr, #0x17, 6
; 384 :
; 385 : pSpiDevExt->rxbuf = (char *)(pSpiDevExt->txbuf + 0x1000);
; 386 : pSpiDevExt->rxbuf_phy_addr = (unsigned long)pSpiDevExt->txbuf_phy_addr + 0x1000;
00080 e3a04317 mov r4, #0x17, 6
00084 e38ee901 orr lr, lr, #1, 18
00088 e2823a01 add r3, r2, #1, 20
0008c e3844a05 orr r4, r4, #5, 20
; 387 : /*
; 388 : pSpiDevExt->txbuf = HalAllocateCommonBuffer(&adapter, TX_BUF_SIZE, &phyAddr, FALSE);
; 389 : pSpiDevExt->txbuf_phy_addr = phyAddr.LowPart;
; 390 : pSpiDevExt->rxbuf = HalAllocateCommonBuffer(&adapter, RX_BUF_SIZE, &phyAddr, FALSE);
; 391 : pSpiDevExt->rxbuf_phy_addr = phyAddr.LowPart;
; 392 : */
; 393 : pSpiDevExt->PaddingAllowed = 1;
00090 e3a08001 mov r8, #1
; 394 : pSpiDevExt->pBD_ReadCBFunc = NULL;
00094 e3a09000 mov r9, #0
; 395 :
; 396 : GetRegistrySettings(Context, pSpiDevExt);
00098 e1a01005 mov r1, r5
0009c e1a00007 mov r0, r7
000a0 e5853038 str r3, [r5, #0x38]
000a4 e585e044 str lr, [r5, #0x44]
000a8 e5852040 str r2, [r5, #0x40]
000ac e585403c str r4, [r5, #0x3C]
000b0 e5858034 str r8, [r5, #0x34]
000b4 e585905c str r9, [r5, #0x5C]
000b8 eb000000 bl GetRegistrySettings
; 397 : pSpiDevExt->phyDrv = smsspiphy_init(Context, smsspi_interruptHandler, pSpiDevExt);
000bc e59f126c ldr r1, [pc, #0x26C]
000c0 e1a02005 mov r2, r5
000c4 e1a00007 mov r0, r7
000c8 eb000000 bl smsspiphy_init
000cc e3500000 cmp r0, #0
000d0 e5850054 str r0, [r5, #0x54]
; 398 : if (pSpiDevExt->phyDrv == NULL)
000d4 1a000005 bne |$L38548|
; 399 : {
; 400 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to initialize physical driver.\r\n")));
000d8 e5963448 ldr r3, [r6, #0x448]
000dc e3130005 tst r3, #5
000e0 0a00007d beq |$L38960|
000e4 e59f0240 ldr r0, [pc, #0x240]
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
000e8 eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
000ec ea00007a b |$L38960|
000f0 |$L38548|
; 401 : FreeAllocatedResources(pSpiDevExt);
; 402 : return 0;
; 403 : }
; 404 : pSpiDevExt->dev.rxbuf = LocalAlloc(LPTR, RX_BUF_SIZE);
000f0 e3a01a01 mov r1, #1, 20
000f4 e3a00040 mov r0, #0x40
000f8 eb000000 bl LocalAlloc
000fc e3500000 cmp r0, #0
00100 e5850010 str r0, [r5, #0x10]
; 405 : if (pSpiDevExt->dev.rxbuf == NULL)
00104 1a000005 bne |$L38551|
; 406 : {
; 407 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to allocate memory for RX buffer.\r\n")));
00108 e5963448 ldr r3, [r6, #0x448]
0010c e3130005 tst r3, #5
00110 0a000071 beq |$L38960|
00114 e59f020c ldr r0, [pc, #0x20C]
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
00118 eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
0011c ea00006e b |$L38960|
00120 |$L38551|
; 408 : FreeAllocatedResources(pSpiDevExt);
; 409 : return 0;
; 410 : }
; 411 :
; 412 : smsspicommon_init(&pSpiDevExt->dev, (PVOID)pSpiDevExt->rxbuf, pSpiDevExt->rxbuf_phy_addr, pSpiDevExt, pSpiDevExt->phyDrv, smsspibus_xfer, MsgFound);
00120 e59f31fc ldr r3, [pc, #0x1FC]
00124 e59f01f4 ldr r0, [pc, #0x1F4]
00128 e595e054 ldr lr, [r5, #0x54]
0012c e595203c ldr r2, [r5, #0x3C]
00130 e5951038 ldr r1, [r5, #0x38]
00134 e58d3008 str r3, [sp, #8]
00138 e58d0004 str r0, [sp, #4]
0013c e1a03005 mov r3, r5
00140 e1a00005 mov r0, r5
00144 e58de000 str lr, [sp]
00148 eb000000 bl smsspicommon_init
; 413 : memcpy (pSpiDevExt->txbuf, preamble_pattern, sizeof(preamble_pattern));
0014c e5954040 ldr r4, [r5, #0x40]
00150 e5961000 ldr r1, [r6]
; 414 :
; 415 :
; 416 :
; 417 : pSpiDevExt->WriteOperation = CreateEvent(NULL, FALSE, FALSE, NULL);
00154 e3a03000 mov r3, #0
00158 e3a02000 mov r2, #0
0015c e5c41000 strb r1, [r4]
00160 e596e000 ldr lr, [r6]
00164 e3a01000 mov r1, #0
00168 e3a00000 mov r0, #0
0016c e1a0e42e mov lr, lr, lsr #8
00170 e5c4e001 strb lr, [r4, #1]
00174 e596e000 ldr lr, [r6]
00178 e1a0e82e mov lr, lr, lsr #16
0017c e5c4e002 strb lr, [r4, #2]
00180 e596e000 ldr lr, [r6]
00184 e1a0ec2e mov lr, lr, lsr #24
00188 e5c4e003 strb lr, [r4, #3]
0018c eb000000 bl CreateEventW
00190 e3500000 cmp r0, #0
00194 e5850048 str r0, [r5, #0x48]
; 418 : if (pSpiDevExt->WriteOperation == NULL)
00198 1a000005 bne |$L38557|
; 419 : {
; 420 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create Write event.\r\n")));
0019c e5963448 ldr r3, [r6, #0x448]
001a0 e3130005 tst r3, #5
001a4 0a00004c beq |$L38960|
001a8 e59f016c ldr r0, [pc, #0x16C]
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
001ac eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
001b0 ea000049 b |$L38960|
001b4 |$L38557|
; 421 : FreeAllocatedResources(pSpiDevExt);
; 422 : return 0;
; 423 : }
; 424 :
; 425 : msgOptions.dwSize = sizeof(msgOptions);
; 426 : msgOptions.dwFlags = 0;
; 427 : msgOptions.dwMaxMessages = 5;
; 428 : msgOptions.cbMaxMessage = sizeof(struct spi_msg);
; 429 : msgOptions.bReadAccess = TRUE;
; 430 :
; 431 : pSpiDevExt->transferMsgQueue = CreateEvent(NULL, FALSE, FALSE, NULL);
001b4 e3a03000 mov r3, #0
001b8 e3a02000 mov r2, #0
001bc e3a01000 mov r1, #0
001c0 e3a00000 mov r0, #0
001c4 eb000000 bl CreateEventW
001c8 e3500000 cmp r0, #0
001cc e585004c str r0, [r5, #0x4C]
; 432 : if (pSpiDevExt->transferMsgQueue == NULL)
001d0 1a000005 bne |$L38563|
; 433 : {
; 434 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create transferMsgQueue.\r\n")));
001d4 e5963448 ldr r3, [r6, #0x448]
001d8 e3130005 tst r3, #5
001dc 0a00003e beq |$L38960|
001e0 e59f0130 ldr r0, [pc, #0x130]
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
001e4 eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
001e8 ea00003b b |$L38960|
001ec |$L38563|
; 435 : FreeAllocatedResources(pSpiDevExt);
; 436 : return 0;
; 437 : }
; 438 :
; 439 : pSpiDevExt->transferThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)SpiTransferThread, pSpiDevExt, 0, NULL);
001ec e59f2120 ldr r2, [pc, #0x120]
001f0 e1a03005 mov r3, r5
001f4 e3a01000 mov r1, #0
001f8 e3a00000 mov r0, #0
001fc e58d9004 str r9, [sp, #4]
00200 e58d9000 str r9, [sp]
00204 eb000000 bl CreateThread
00208 e3500000 cmp r0, #0
0020c e5850050 str r0, [r5, #0x50]
; 440 : if (pSpiDevExt->transferThread == NULL)
00210 1a000005 bne |$L38569|
; 441 : {
; 442 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to create transferThread thread.\r\n")));
00214 e5963448 ldr r3, [r6, #0x448]
00218 e3130005 tst r3, #5
0021c 0a00002e beq |$L38960|
00220 e59f00e8 ldr r0, [pc, #0xE8]
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
00224 eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
00228 ea00002b b |$L38960|
0022c |$L38569|
; 443 : FreeAllocatedResources(pSpiDevExt);
; 444 : return 0;
; 445 : }
; 446 : if (CeSetThreadPriority(pSpiDevExt->transferThread, 0) == FALSE)
0022c e3a01000 mov r1, #0
00230 eb000000 bl CeSetThreadPriority
00234 e3500000 cmp r0, #0
00238 1a000005 bne |$L38571|
; 447 : {
; 448 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("SmsSpi: SPI_Init() failed to set transferThread thread priority.\r\n")));
0023c e5963448 ldr r3, [r6, #0x448]
00240 e3130005 tst r3, #5
00244 0a000024 beq |$L38960|
00248 e59f00bc ldr r0, [pc, #0xBC]
0024c eb000000 bl NKDbgPrintfW
; 449 : FreeAllocatedResources(pSpiDevExt);
; 450 : return 0;
00250 ea000021 b |$L38960|
00254 |$L38571|
; 451 : }
; 452 :
; 453 : if (pSpiDevExt->novaDevice)
00254 e5953060 ldr r3, [r5, #0x60]
00258 e3530000 cmp r3, #0
; 454 : {
; 455 : DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Activating Gen driver with Nava device.\r\n")));
0025c e5963448 ldr r3, [r6, #0x448]
00260 0a000004 beq |$L38573|
00264 e3130004 tst r3, #4
00268 159f0098 ldrne r0, [pc, #0x98]
0026c 1b000000 blne NKDbgPrintfW
; 456 : pSpiDevExt->hSmsGenDrv = ActivateDevice(SMS_GEN_DRIVER_REGISTRY_PATH,BD_TYPE_SPI_NOVA);
00270 e3a01006 mov r1, #6
; 457 : }
; 458 : else
00274 ea000003 b |$L38969|
00278 |$L38573|
; 459 : {
; 460 : DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() Activating Gen driver with Stellar device.\r\n")));
00278 e3130004 tst r3, #4
0027c 159f0080 ldrne r0, [pc, #0x80]
00280 1b000000 blne NKDbgPrintfW
; 461 : pSpiDevExt->hSmsGenDrv = ActivateDevice(SMS_GEN_DRIVER_REGISTRY_PATH,BD_TYPE_SPI_STELLAR);
00284 e3a01001 mov r1, #1
00288 |$L38969|
00288 e59f0070 ldr r0, [pc, #0x70]
0028c eb000000 bl ActivateDevice
; 462 : }
; 463 : if (pSpiDevExt->hSmsGenDrv == NULL || pSpiDevExt->hSmsGenDrv == INVALID_HANDLE_VALUE)
00290 e1a03000 mov r3, r0
00294 e3530000 cmp r3, #0
00298 e5850058 str r0, [r5, #0x58]
0029c 0a000007 beq |$L38581|
002a0 e3730001 cmn r3, #1
002a4 0a000005 beq |$L38581|
; 468 : }
; 469 :
; 470 : DBGMSG(ZONE_INIT, (TEXT("SmsSpi: SPI_Init() End.\r\n")));
002a8 e5963448 ldr r3, [r6, #0x448]
002ac e3130004 tst r3, #4
002b0 0a00000c beq |$L38529|
002b4 e59f0040 ldr r0, [pc, #0x40]
002b8 eb000000 bl NKDbgPrintfW
; 471 :
; 472 : return (DWORD)pSpiDevExt;
002bc ea000009 b |$L38529|
002c0 |$L38581|
; 464 : {
; 465 : DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: Failed to load SmsGenDrv. Error %d\r\n"),GetLastError()));
002c0 e5963448 ldr r3, [r6, #0x448]
002c4 e3130001 tst r3, #1
002c8 0a000003 beq |$L38960|
002cc eb000000 bl GetLastError
002d0 e1a01000 mov r1, r0
002d4 e59f001c ldr r0, [pc, #0x1C]
002d8 eb000000 bl NKDbgPrintfW
002dc |$L38960|
; 466 : FreeAllocatedResources(pSpiDevExt);
002dc e1a00005 mov r0, r5
002e0 eb000000 bl FreeAllocatedResources
002e4 |$L38942|
; 467 : return 0;
002e4 e3a05000 mov r5, #0
002e8 |$L38529|
; 376 : return 0;
002e8 e1a00005 mov r0, r5
; 473 : }
002ec e28dd00c add sp, sp, #0xC
002f0 e8bd43f0 ldmia sp!, {r4 - r9, lr}
002f4 e12fff1e bx lr
002f8 |$L38976|
002f8 00000000 DCD |??_C@_1FK@FEKJBJKM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAl?$AAo@|
002fc 00000000 DCD |??_C@_1DE@COIBIHEA@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAE@|
00300 00000000 DCD |??_C@_1EA@FCMJOLGJ@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AAs?$AA?2?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?2?$AAS?$AAM?$AAS?$AA1?$AA0?$AA0@|
00304 00000000 DCD |??_C@_1IA@JPGPNFKL@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@|
00308 00000000 DCD |??_C@_1HK@DMNNACLP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAA@|
0030c 00000000 DCD |??_C@_1IG@PCKFGJPM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
00310 00000000 DCD |??_C@_1HK@JOLIIND@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
00314 00000000 DCD |SpiTransferThread|
00318 00000000 DCD |??_C@_1HA@MCAFDEAP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
0031c 00000000 DCD |??_C@_1GG@DJHEGEHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
00320 00000000 DCD |smsspibus_xfer|
00324 00000000 DCD |MsgFound|
00328 00000000 DCD |??_C@_1HM@GACDLBAD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
0032c 00000000 DCD |??_C@_1HG@BOIGLGC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
00330 00000000 DCD |smsspi_interruptHandler|
00334 00000000 DCD |??_C@_0P@NOOCNBDL@I2C?3?5v_pI2CReg?$AA@|
00338 00000000 DCD |??_C@_1HG@GJLBCNC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAf@|
0033c 00000000 DCD |??_C@_1DI@KKPKNNHG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAS@|
00340 00000000 DCD |preamble_pattern|
00344 |$M38972|
ENDP ; |SPI_Init|
EXPORT |SPI_Deinit|
00000 AREA |.text| { |SPI_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Deinit|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Deinit| } ; comdat associative
|$T38985| DCD |$L38984|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Deinit| PROC
; 488 : {
00000 |$L38984|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38982|
; 489 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)dwContext;
; 490 :
; 491 : FreeAllocatedResources(pSpiDevExt);
00004 eb000000 bl FreeAllocatedResources
; 492 : return TRUE;
00008 e3a00001 mov r0, #1
; 493 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M38983|
ENDP ; |SPI_Deinit|
EXPORT |SPI_Open|
EXPORT |??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| [ DATA ] ; `string'
00000 AREA |.text| { |SPI_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Open|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Open| } ; comdat associative
|$T38997| DCD |$L38996|
DCD 0x40000c01
00000 AREA |.rdata| { |??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "O"
DCB 0x0, "p", 0x0, "e", 0x0, "n", 0x0, "(", 0x0, ")", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Open| PROC
; 513 : {
00000 |$L38996|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M38994|
00004 e1a04000 mov r4, r0
; 514 :
; 515 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Open()\r\n")));
00008 e59f301c ldr r3, [pc, #0x1C]
0000c e5933440 ldr r3, [r3, #0x440]
00010 e3130008 tst r3, #8
00014 159f000c ldrne r0, [pc, #0xC]
00018 1b000000 blne NKDbgPrintfW
; 516 : return (DWORD)Context;
0001c e1a00004 mov r0, r4
; 517 :
; 518 : }
00020 e8bd4010 ldmia sp!, {r4, lr}
00024 e12fff1e bx lr
00028 |$L38999|
00028 00000000 DCD |??_C@_1CK@BCLBBAHP@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAO?$AAp?$AAe?$AAn?$AA?$CI?$AA?$CJ?$AA?$AN?$AA?6@|
0002c 00000000 DCD |dpCurSettings|
00030 |$M38995|
ENDP ; |SPI_Open|
EXPORT |SPI_Close|
EXPORT |??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| [ DATA ] ; `string'
00000 AREA |.text| { |SPI_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Close|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Close| } ; comdat associative
|$T39009| DCD |$L39008|
DCD 0x40000b01
00000 AREA |.rdata| { |??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "C"
DCB 0x0, "l", 0x0, "o", 0x0, "s", 0x0, "e", 0x0, "(", 0x0, ")"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Close| PROC
; 535 : {
00000 |$L39008|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M39006|
; 536 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Close()\r\n")));
00004 e59f301c ldr r3, [pc, #0x1C]
00008 e5933440 ldr r3, [r3, #0x440]
0000c e3130008 tst r3, #8
00010 159f000c ldrne r0, [pc, #0xC]
00014 1b000000 blne NKDbgPrintfW
; 537 :
; 538 : return TRUE;
00018 e3a00001 mov r0, #1
; 539 : }
0001c e49de004 ldr lr, [sp], #4
00020 e12fff1e bx lr
00024 |$L39011|
00024 00000000 DCD |??_C@_1CM@DPANOIFO@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAC?$AAl?$AAo?$AAs?$AAe?$AA?$CI?$AA?$CJ?$AA?$AN@|
00028 00000000 DCD |dpCurSettings|
0002c |$M39007|
ENDP ; |SPI_Close|
EXPORT |SPI_Read|
EXPORT |??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| [ DATA ] ; `string'
00000 AREA |.text| { |SPI_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Read|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Read| } ; comdat associative
|$T39021| DCD |$L39020|
DCD 0x40000b01
00000 AREA |.rdata| { |??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "R"
DCB 0x0, "e", 0x0, "a", 0x0, "d", 0x0, "(", 0x0, ")", 0x0, " "
DCB 0x0, "c", 0x0, "a", 0x0, "l", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, ",", 0x0, " ", 0x0, "b", 0x0, "u", 0x0, "t", 0x0, " "
DCB 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "s", 0x0, "u"
DCB 0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t", 0x0, "e"
DCB 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Read| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Read| PROC
; 557 : {
00000 |$L39020|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M39018|
; 558 : DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: SPI_Read() called, but not supported\r\n")));
00004 e59f301c ldr r3, [pc, #0x1C]
00008 e5933440 ldr r3, [r3, #0x440]
0000c e3130001 tst r3, #1
00010 159f000c ldrne r0, [pc, #0xC]
00014 1b000000 blne NKDbgPrintfW
; 559 : return (-1);
00018 e3e00000 mvn r0, #0
; 560 : }
0001c e49de004 ldr lr, [sp], #4
00020 e12fff1e bx lr
00024 |$L39023|
00024 00000000 DCD |??_C@_1FO@EKIDJEMB@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAR?$AAe?$AAa?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAc@|
00028 00000000 DCD |dpCurSettings|
0002c |$M39019|
ENDP ; |SPI_Read|
EXPORT |SPI_Write|
EXPORT |??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| [ DATA ] ; `string'
IMPORT |memcpy|
IMPORT |smschipreset|
00000 AREA |.bss|, NOINIT
|?txmsg@?1??SPI_Write@@9@9| % 0xc ; `SPI_Write'::`2'::txmsg
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |SPI_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Write|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Write| } ; comdat associative
|$T39054| DCD |$L39053|
DCD 0x40006001
00000 AREA |.rdata| { |??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "S", 0x0, "P", 0x0, "I", 0x0, "_", 0x0, "W"
DCB 0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e", 0x0, "(", 0x0, ")"
DCB 0x0, " ", 0x0, "N", 0x0, "o", 0x0, " ", 0x0, "p", 0x0, "r"
DCB 0x0, "e", 0x0, "a", 0x0, "m", 0x0, "b", 0x0, "l", 0x0, "e"
DCB 0x0, " ", 0x0, "a", 0x0, "d", 0x0, "d", 0x0, "e", 0x0, "d"
DCB 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\sianospi.c
00000 AREA |.text| { |SPI_Write| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Write| PROC
; 576 : {
00000 |$L39053|
00000 e92d47f0 stmdb sp!, {r4 - r10, lr}
00004 |$M39051|
00004 e1a04002 mov r4, r2
00008 e1a09001 mov r9, r1
0000c e1a06000 mov r6, r0
; 577 : int Cnt;
; 578 : int AddingPreamble, WrittenBytes;
; 579 : static struct spi_msg txmsg;
; 580 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)dwContext;
; 581 :
; 582 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Writing %d bytes.\r\n"), BufferLength));
; 583 :
; 584 : AddingPreamble = 1;
; 585 : if (BufferLength > 0x1000)
00010 e3540a01 cmp r4, #1, 20
; 586 : { /* The FW is the only long message. Do not add preamble, and do not padd it*/
; 587 : pSpiDevExt->PaddingAllowed = 0;
; 588 : AddingPreamble = 0;
; 589 : BufferLength += 4;
; 590 : smschipreset(pSpiDevExt->phyDrv);
00014 85960054 ldrhi r0, [r6, #0x54]
00018 83a03000 movhi r3, #0
0001c e3a05001 mov r5, #1
00020 85863034 strhi r3, [r6, #0x34]
00024 83a05000 movhi r5, #0
00028 82844004 addhi r4, r4, #4
0002c 8b000000 blhi smschipreset
; 591 : }
; 592 : WrittenBytes = 0;
00030 e3a07000 mov r7, #0
; 593 :
; 594 : while (BufferLength > 0)
00034 e3540000 cmp r4, #0
00038 0a000048 beq |$L38633|
0003c e59fa138 ldr r10, [pc, #0x138]
00040 e59f8130 ldr r8, [pc, #0x130]
00044 |$L38632|
; 595 : {
; 596 : ResetEvent(pSpiDevExt->WriteOperation);
00044 e5960048 ldr r0, [r6, #0x48]
00048 e3a01002 mov r1, #2
0004c eb000000 bl EventModify
; 597 : txmsg.buf = pSpiDevExt->txbuf;
00050 e5963040 ldr r3, [r6, #0x40]
; 598 : txmsg.buf_phy_addr = pSpiDevExt->txbuf_phy_addr;
; 599 : if (AddingPreamble == 1)
00054 e3550001 cmp r5, #1
00058 e5883000 str r3, [r8]
0005c e5963044 ldr r3, [r6, #0x44]
00060 e5883004 str r3, [r8, #4]
00064 1a000019 bne |$L38634|
; 600 : {
; 601 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Adding peamble.\r\n")));
; 602 : Cnt = min((int)(BufferLength + sizeof(preamble_pattern)), (int)TX_BUF_SIZE);
00068 e2845004 add r5, r4, #4
0006c e3550c02 cmp r5, #2, 24
00070 a3a05c02 movge r5, #2, 24
; 603 : txmsg.len = Cnt;
; 604 : memcpy (pSpiDevExt->txbuf, preamble_pattern, sizeof(preamble_pattern));
00074 e59a3000 ldr r3, [r10]
00078 e5885008 str r5, [r8, #8]
0007c e5960040 ldr r0, [r6, #0x40]
; 605 : memcpy(pSpiDevExt->txbuf+sizeof(preamble_pattern), pBuff, Cnt - sizeof(preamble_pattern));
00080 e2452004 sub r2, r5, #4
00084 e1a01009 mov r1, r9
00088 e5c03000 strb r3, [r0]
0008c e59a3000 ldr r3, [r10]
00090 e1a03423 mov r3, r3, lsr #8
00094 e5c03001 strb r3, [r0, #1]
00098 e59a3000 ldr r3, [r10]
0009c e1a03823 mov r3, r3, lsr #16
000a0 e5c03002 strb r3, [r0, #2]
000a4 e59a3000 ldr r3, [r10]
000a8 e1a03c23 mov r3, r3, lsr #24
000ac e5c03003 strb r3, [r0, #3]
000b0 e5963040 ldr r3, [r6, #0x40]
000b4 e2830004 add r0, r3, #4
000b8 eb000000 bl memcpy
; 606 : WrittenBytes += (Cnt - sizeof(preamble_pattern));
000bc e0853007 add r3, r5, r7
; 607 : BufferLength -= (Cnt - sizeof(preamble_pattern));
000c0 e0442005 sub r2, r4, r5
000c4 e2437004 sub r7, r3, #4
000c8 e2824004 add r4, r2, #4
; 608 : }
; 609 : else
000cc ea00000d b |$L38639|
000d0 |$L38634|
; 610 : {
; 611 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() No preamble added.\r\n")));
000d0 e59a3448 ldr r3, [r10, #0x448]
000d4 e3130008 tst r3, #8
000d8 159f0094 ldrne r0, [pc, #0x94]
000dc 1b000000 blne NKDbgPrintfW
; 612 : Cnt = min(BufferLength, TX_BUF_SIZE);
000e0 e3540c02 cmp r4, #2, 24
000e4 31a05004 movcc r5, r4
000e8 23a05c02 movcs r5, #2, 24
; 613 : txmsg.len = Cnt;
000ec e5885008 str r5, [r8, #8]
; 614 : memcpy(pSpiDevExt->txbuf, (CHAR*)pBuff, Cnt);
000f0 e5960040 ldr r0, [r6, #0x40]
000f4 e1a02005 mov r2, r5
000f8 e1a01009 mov r1, r9
000fc eb000000 bl memcpy
; 615 : WrittenBytes += Cnt;
00100 e0877005 add r7, r7, r5
; 616 : BufferLength -= Cnt;
00104 e0444005 sub r4, r4, r5
00108 |$L38639|
; 617 : }
; 618 : memset (pSpiDevExt->txbuf + Cnt, 0, TX_BUF_SIZE - Cnt);
00108 e5963040 ldr r3, [r6, #0x40]
0010c e2652c02 rsb r2, r5, #2, 24
00110 e3a01000 mov r1, #0
00114 e0830005 add r0, r3, r5
00118 eb000000 bl memset
; 619 : //DBGMSG(ZONE_ERROR, (TEXT("SmsSpi: SPI_Write() Sending to transfer queue. buf = 0x%x, len=%d.\r\n"), txmsg.buf, txmsg.len));
; 620 : SetEventData(pSpiDevExt->transferMsgQueue, (DWORD)&txmsg);
0011c e596004c ldr r0, [r6, #0x4C]
00120 e1a01008 mov r1, r8
00124 eb000000 bl SetEventData
; 621 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Sending to transfer queue. msg = 0x%x.\r\n"), (DWORD)&txmsg));
; 622 : SetEvent(pSpiDevExt->transferMsgQueue);
00128 e596004c ldr r0, [r6, #0x4C]
0012c e3a01003 mov r1, #3
00130 eb000000 bl EventModify
; 623 : WaitForSingleObject(pSpiDevExt->WriteOperation, INFINITE);
00134 e5960048 ldr r0, [r6, #0x48]
00138 e3e01000 mvn r1, #0
0013c eb000000 bl WaitForSingleObject
; 624 : memset (pSpiDevExt->txbuf, 0, Cnt);
00140 e5960040 ldr r0, [r6, #0x40]
00144 e1a02005 mov r2, r5
00148 e3a01000 mov r1, #0
0014c eb000000 bl memset
; 625 : (PCHAR)pBuff+=Cnt;
00150 e0899005 add r9, r9, r5
; 626 : AddingPreamble = 0;
00154 e3a05000 mov r5, #0
00158 e3540000 cmp r4, #0
0015c 1affffb8 bne |$L38632|
00160 |$L38633|
; 627 : }
; 628 : pSpiDevExt->PaddingAllowed = 1;
00160 e3a03001 mov r3, #1
00164 e5863034 str r3, [r6, #0x34]
; 629 : //DBGMSG(ZONE_INFO, (TEXT("SmsSpi: SPI_Write() Write exits.\r\n")));
; 630 : return WrittenBytes;
00168 e1a00007 mov r0, r7
; 631 :
; 632 : }
0016c e8bd47f0 ldmia sp!, {r4 - r10, lr}
00170 e12fff1e bx lr
00174 |$L39056|
00174 00000000 DCD |??_C@_1FC@EKKFDOBI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAS?$AAP?$AAI?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AA?$CI?$AA?$CJ?$AA?5@|
00178 00000000 DCD |?txmsg@?1??SPI_Write@@9@9|
0017c 00000000 DCD |preamble_pattern|
00180 |$M39052|
ENDP ; |SPI_Write|
EXPORT |SPI_IOControl|
EXPORT |??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| [ DATA ] ; `string'
IMPORT |Sleep|
IMPORT |WriteFWtoStellar|
IMPORT |WriteFWtoNova|
00000 AREA |.text| { |SPI_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_IOControl|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_IOControl| } ; comdat associative
|$T39083| DCD |$L39082|
DCD 0x40008401
00000 AREA |.rdata| { |??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L"
DCB 0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R"
DCB 0x0, "_", 0x0, "S", 0x0, "E", 0x0, "T", 0x0, " ", 0x0, "-"
DCB 0x0, " ", 0x0, "C", 0x0, "h", 0x0, "a", 0x0, "n", 0x0, "g"
DCB 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "p", 0x0, "o"
DCB 0x0, "w", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "s", 0x0, "t"
DCB 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t", 0x0, "o"
DCB 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, " "
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L"
DCB 0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R"
DCB 0x0, "_", 0x0, "C", 0x0, "A", 0x0, "P", 0x0, "A", 0x0, "B"
DCB 0x0, "I", 0x0, "L", 0x0, "I", 0x0, "T", 0x0, "I", 0x0, "E"
DCB 0x0, "S", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "s", 0x0, "u"
DCB 0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t", 0x0, "e"
DCB 0x0, "d", 0x0, " ", 0x0, "p", 0x0, "o", 0x0, "w", 0x0, "e"
DCB 0x0, "r", 0x0, " ", 0x0, "s", 0x0, "t", 0x0, "a", 0x0, "t"
DCB 0x0, "e", 0x0, "s", 0x0, " ", 0x0, "a", 0x0, "r", 0x0, "e"
DCB 0x0, " ", 0x0, "D", 0x0, "0", 0x0, ",", 0x0, " ", 0x0, "D"
DCB 0x0, "3", 0x0, " ", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, " "
DCB 0x0, "D", 0x0, "4", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L"
DCB 0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R"
DCB 0x0, "_", 0x0, "G", 0x0, "E", 0x0, "T", 0x0, " ", 0x0, "-"
DCB 0x0, " ", 0x0, "p", 0x0, "o", 0x0, "w", 0x0, "e", 0x0, "r"
DCB 0x0, " ", 0x0, "s", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e"
DCB 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "0", 0x0, "x"
DCB 0x0, "%", 0x0, "x", 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L"
DCB 0x0, "_", 0x0, "P", 0x0, "O", 0x0, "W", 0x0, "E", 0x0, "R"
DCB 0x0, "_", 0x0, "Q", 0x0, "U", 0x0, "E", 0x0, "R", 0x0, "Y"
DCB 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t"
DCB 0x0, " ", 0x0, "s", 0x0, "u", 0x0, "p", 0x0, "p", 0x0, "o"
DCB 0x0, "r", 0x0, "t", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "y"
DCB 0x0, "e", 0x0, "t", 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%"
DCB 0x0, "x", 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "P", 0x0, "o", 0x0, "w", 0x0, "e", 0x0, "r"
DCB 0x0, " ", 0x0, "m", 0x0, "a", 0x0, "n", 0x0, "a", 0x0, "g"
DCB 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "m"
DCB 0x0, "m", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, " ", 0x0, "-"
DCB 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "s"
DCB 0x0, "u", 0x0, "p", 0x0, "p", 0x0, "o", 0x0, "r", 0x0, "t"
DCB 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "y", 0x0, "e", 0x0, "t"
DCB 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, " "
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_IOControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_IOControl| PROC
; 660 : {
00000 |$L39082|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M39080|
00004 e1a08003 mov r8, r3
00008 e1a07002 mov r7, r2
0000c e1a04000 mov r4, r0
; 661 : BOOL retVal;
; 662 : PSPIDEVICEEXTENSION pSpiDevExt = (PSPIDEVICEEXTENSION)dwContext;
; 663 :
; 664 : retVal = FALSE;
; 665 :
; 666 : switch(Ioctl)
00010 e3a0e832 mov lr, #0x32, 16
00014 e38eea01 orr lr, lr, #1, 20
00018 e59f91cc ldr r9, [pc, #0x1CC]
0001c e59d601c ldr r6, [sp, #0x1C]
00020 e151000e cmp r1, lr
00024 e3a05000 mov r5, #0
00028 0a000045 beq |$L38678|
0002c e59fe1d8 ldr lr, [pc, #0x1D8]
00030 e151000e cmp r1, lr
00034 0a000038 beq |$L38694|
00038 e59fe1c8 ldr lr, [pc, #0x1C8]
0003c e151000e cmp r1, lr
00040 0a000054 beq |$L39070|
00044 e59f21b8 ldr r2, [pc, #0x1B8]
00048 e1510002 cmp r1, r2
0004c 0a000025 beq |$L38699|
00050 e59f21a8 ldr r2, [pc, #0x1A8]
00054 e1510002 cmp r1, r2
00058 0a00001a beq |$L38697|
0005c e59f3198 ldr r3, [pc, #0x198]
00060 e1510003 cmp r1, r3
00064 0a00000e beq |$L38667|
00068 e59f3188 ldr r3, [pc, #0x188]
0006c e1510003 cmp r1, r3
00070 1a000057 bne |$L38664|
; 676 :
; 677 : case SIANO_BD_IOCTL_WRITE_FW_BUFF_TO_DEVICE:
; 678 : if (pInBuf != NULL)
00074 e3570000 cmp r7, #0
00078 0a000055 beq |$L38664|
; 679 : {
; 680 : if (pSpiDevExt->novaDevice)
0007c e5943060 ldr r3, [r4, #0x60]
; 681 : WriteFWtoNova(pSpiDevExt->phyDrv,pInBuf,InBufLen);
00080 e5940054 ldr r0, [r4, #0x54]
00084 e1a02008 mov r2, r8
00088 e3530000 cmp r3, #0
0008c e1a01007 mov r1, r7
00090 0a000001 beq |$L38676|
00094 eb000000 bl WriteFWtoNova
; 682 : else
00098 ea00004c b |$L38677|
0009c |$L38676|
; 683 : WriteFWtoStellar(pSpiDevExt->phyDrv,pInBuf,InBufLen);
0009c eb000000 bl WriteFWtoStellar
; 684 : retVal = TRUE;
; 685 :
; 686 : }
; 687 : break;
000a0 ea00004a b |$L38677|
000a4 |$L38667|
; 667 : {
; 668 : case SIANO_BD_IOCTL_REGISTER_READ_CB:
; 669 : if ((pInBuf != NULL) && (InBufLen >= sizeof(BD_IOCTL_REGISTER_READ_PARAMS_ST)))
000a4 e3570000 cmp r7, #0
000a8 0a000049 beq |$L38664|
000ac e3580008 cmp r8, #8
000b0 3a000047 bcc |$L38664|
; 670 : {
; 671 : pSpiDevExt->hBDContext = ((PBD_IOCTL_REGISTER_READ_PARAMS_ST)pInBuf)->hContext;
000b4 e5973004 ldr r3, [r7, #4]
; 672 : pSpiDevExt->pBD_ReadCBFunc = ((PBD_IOCTL_REGISTER_READ_PARAMS_ST)pInBuf)->pBD_ReadCBFunc;
; 673 : retVal = TRUE;
000b8 e5843068 str r3, [r4, #0x68]
000bc e5973000 ldr r3, [r7]
000c0 e584305c str r3, [r4, #0x5C]
; 674 : }
; 675 : break;
000c4 ea000041 b |$L38677|
000c8 |$L38697|
; 716 : case IOCTL_REGISTER_POWER_RELATIONSHIP:
; 717 : DBGMSG(ZONE_WARNING, (TEXT("SmsSpi: Power manager command - not supported yet 0x%x \r\n"),Ioctl));
000c8 e59f311c ldr r3, [pc, #0x11C]
000cc e5933440 ldr r3, [r3, #0x440]
000d0 e3130002 tst r3, #2
000d4 0a00003e beq |$L38664|
000d8 e59f0114 ldr r0, [pc, #0x114]
000dc e1a01002 mov r1, r2
000e0 eb000000 bl NKDbgPrintfW
; 718 : break;
000e4 ea00003a b |$L38664|
000e8 |$L38699|
; 719 : case IOCTL_POWER_QUERY:
; 720 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_QUERY - not supported yet 0x%x \r\n"),Ioctl));
000e8 e59f30fc ldr r3, [pc, #0xFC]
000ec e5933440 ldr r3, [r3, #0x440]
000f0 e3130008 tst r3, #8
000f4 159f00f4 ldrne r0, [pc, #0xF4]
000f8 11a01002 movne r1, r2
000fc 1b000000 blne NKDbgPrintfW
; 721 : if (*(CEDEVICE_POWER_STATE*)pOutBuf == D3) //D3 is not supported by SMS1000
00100 e59d201c ldr r2, [sp, #0x1C]
00104 e5923000 ldr r3, [r2]
00108 e3530003 cmp r3, #3
0010c 1a00002f bne |$L38677|
; 722 : *(CEDEVICE_POWER_STATE*)pOutBuf = PwrDeviceUnspecified;
00110 e3e03000 mvn r3, #0
00114 e5823000 str r3, [r2]
; 723 : retVal = TRUE;
; 724 : break;
00118 ea00002c b |$L38677|
0011c |$L38694|
; 710 : break;
; 711 : case IOCTL_POWER_GET:
; 712 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_GET - power state is 0x%x \r\n"),pSpiDevExt->powerState));
0011c e59f30c8 ldr r3, [pc, #0xC8]
00120 e5933440 ldr r3, [r3, #0x440]
00124 e3130008 tst r3, #8
00128 15941064 ldrne r1, [r4, #0x64]
0012c 159f00b4 ldrne r0, [pc, #0xB4]
00130 1b000000 blne NKDbgPrintfW
; 713 : *(CEDEVICE_POWER_STATE*)pOutBuf = pSpiDevExt->powerState;
00134 e5942064 ldr r2, [r4, #0x64]
00138 e59d301c ldr r3, [sp, #0x1C]
; 714 : retVal = TRUE;
0013c e5832000 str r2, [r3]
; 715 : break;
00140 ea000022 b |$L38677|
00144 |$L38678|
; 688 : case IOCTL_POWER_CAPABILITIES:
; 689 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_CAPABILITIES - supported power states are D0, D3 and D4\r\n")));
00144 e5993440 ldr r3, [r9, #0x440]
00148 e3130008 tst r3, #8
0014c 159f0090 ldrne r0, [pc, #0x90]
00150 1b000000 blne NKDbgPrintfW
; 690 : if (pOutBuf != NULL && pdwBytesTransferred != NULL && OutBufLen >= sizeof(POWER_CAPABILITIES))
00154 e3560000 cmp r6, #0
00158 0a00000e beq |$L39070|
0015c e59d5024 ldr r5, [sp, #0x24]
00160 e3550000 cmp r5, #0
00164 0a00000b beq |$L39070|
00168 e59d3020 ldr r3, [sp, #0x20]
0016c e3530030 cmp r3, #0x30
00170 3a000008 bcc |$L39070|
; 691 : {
; 692 : PPOWER_CAPABILITIES pCapabilities = (PPOWER_CAPABILITIES)pOutBuf;
; 693 : memset(pCapabilities, 0, sizeof(POWER_CAPABILITIES));
00174 e3a02030 mov r2, #0x30
00178 e3a01000 mov r1, #0
0017c e1a00006 mov r0, r6
00180 eb000000 bl memset
; 694 : // support D0, D3, D4
; 695 : pCapabilities->DeviceDx = DX_MASK(D0)|DX_MASK(D3)|DX_MASK(D4);
00184 e3a03019 mov r3, #0x19
00188 e5c63000 strb r3, [r6]
; 696 : *pdwBytesTransferred = sizeof(POWER_CAPABILITIES);
0018c e3a03030 mov r3, #0x30
00190 e5853000 str r3, [r5]
; 697 : retVal = TRUE;
; 698 : break;
00194 ea00000d b |$L38677|
00198 |$L39070|
; 688 : case IOCTL_POWER_CAPABILITIES:
; 689 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_CAPABILITIES - supported power states are D0, D3 and D4\r\n")));
00198 e5993440 ldr r3, [r9, #0x440]
; 699 : }
; 700 :
; 701 : case IOCTL_POWER_SET:
; 702 : DBGMSG(ZONE_INFO, (TEXT("SmsSpi: IOCTL_POWER_SET - Changing power state to 0x%x \r\n"),*(CEDEVICE_POWER_STATE*)pOutBuf));
0019c e3130008 tst r3, #8
001a0 15961000 ldrne r1, [r6]
001a4 159f0034 ldrne r0, [pc, #0x34]
001a8 1b000000 blne NKDbgPrintfW
; 703 : /* Here we need to send the command of changing the power state to FW - not supported yet*/
; 704 : if (pSpiDevExt->powerState >= D3 && *(CEDEVICE_POWER_STATE*)pOutBuf == D0)
001ac e5943064 ldr r3, [r4, #0x64]
001b0 e3530003 cmp r3, #3
001b4 ba000003 blt |$L38692|
001b8 e5963000 ldr r3, [r6]
001bc e3530000 cmp r3, #0
; 705 : { // When going back to D0 need to reset the FW in order to make sure the device is ready for FW download.
; 706 : Sleep(1000);
001c0 03a00ffa moveq r0, #0xFA, 30
001c4 0b000000 bleq Sleep
001c8 |$L38692|
; 707 : }
; 708 : pSpiDevExt->powerState = *(CEDEVICE_POWER_STATE*)pOutBuf;
001c8 e5963000 ldr r3, [r6]
; 709 : retVal = TRUE;
001cc e5843064 str r3, [r4, #0x64]
001d0 |$L38677|
001d0 e3a05001 mov r5, #1
001d4 |$L38664|
; 725 :
; 726 : default:
; 727 : break;
; 728 : }
; 729 :
; 730 : return retVal;
001d4 e1a00005 mov r0, r5
; 731 :
; 732 : }
001d8 e8bd43f0 ldmia sp!, {r4 - r9, lr}
001dc e12fff1e bx lr
001e0 |$L39085|
001e0 00000000 DCD |??_C@_1HE@FIBOFPED@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@|
001e4 00000000 DCD |??_C@_1JM@NFKLAFLM@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@|
001e8 00000000 DCD |??_C@_1GC@KNMMGEFD@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@|
001ec 00000000 DCD |dpCurSettings|
001f0 00000000 DCD |??_C@_1GM@NMNJMHPJ@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAP?$AAO?$AAW?$AAE?$AAR?$AA_@|
001f4 00000000 DCD |??_C@_1HE@PIEBBJHC@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAP?$AAo?$AAw?$AAe?$AAr?$AA?5?$AAm?$AAa?$AAn?$AAa?$AAg?$AAe@|
001f8 9c402004 DCD 0x9c402004
001fc 9c402000 DCD 0x9c402000
00200 00321018 DCD 0x321018
00204 0032100c DCD 0x32100c
00208 00321008 DCD 0x321008
0020c 00321004 DCD 0x321004
00210 |$M39081|
ENDP ; |SPI_IOControl|
EXPORT |SPI_Seek|
00000 AREA |.text| { |SPI_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_Seek|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_Seek| } ; comdat associative
|$T39093| DCD |$L39092|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_Seek| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_Seek| PROC
; 753 : {
00000 |$L39092|
00000 |$M39090|
; 754 : UNREFERENCED_PARAMETER(Context);
; 755 : UNREFERENCED_PARAMETER(Position);
; 756 : UNREFERENCED_PARAMETER(Type);
; 757 :
; 758 : return (ULONG)-1;
00000 e3e00000 mvn r0, #0
; 759 : }
00004 e12fff1e bx lr
00008 |$M39091|
ENDP ; |SPI_Seek|
EXPORT |SPI_PowerDown|
00000 AREA |.text| { |SPI_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_PowerDown|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_PowerDown| } ; comdat associative
|$T39100| DCD |$L39099|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_PowerDown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_PowerDown| PROC
; 775 : {
00000 |$L39099|
00000 |$M39097|
; 776 : UNREFERENCED_PARAMETER(dwContext);
; 777 : }
00000 e12fff1e bx lr
00004 |$M39098|
ENDP ; |SPI_PowerDown|
EXPORT |SPI_PowerUp|
00000 AREA |.text| { |SPI_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SPI_PowerUp|, PDATA, SELECTION=5, ASSOC=|.text| { |SPI_PowerUp| } ; comdat associative
|$T39107| DCD |$L39106|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |SPI_PowerUp| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SPI_PowerUp| PROC
; 793 : {
00000 |$L39106|
00000 |$M39104|
; 794 : UNREFERENCED_PARAMETER(dwContext);
; 795 :
; 796 : }
00000 e12fff1e bx lr
00004 |$M39105|
ENDP ; |SPI_PowerUp|
END