⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spihw.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345 

	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\SpiDrv\.\SpiHw.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|v_pClkRegs| [ DATA ]
	EXPORT	|v_pGPIORegisters| [ DATA ]

  00000			 AREA	 |.bss|, NOINIT
|v_pClkRegs| %	0x4
|v_pGPIORegisters| % 0x4

  00000			 AREA	 |.data|, DATA
	 COMMON	|useSSPPort|, 0x4

	EXPORT	|SetEvent|
	IMPORT	|EventModify|
; File e:\wm604\public\common\sdk\inc\kfuncs.h

  00000			 AREA	 |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$SetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |SetEvent| } ; comdat associative
|$T39461| DCD	|$L39460|
	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		 |$L39460|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39458|

; 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		 |$M39459|

			 ENDP  ; |SetEvent|

; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\spihw.c

  00000			 AREA	 |.text| { |GetSpiPortNum| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$GetSpiPortNum|, PDATA, SELECTION=5, ASSOC=|.text| { |GetSpiPortNum| } ; comdat associative
|$T39470| DCD	|$L39469|
	DCD	0x40000200
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |GetSpiPortNum| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |GetSpiPortNum| PROC

; 184  : {

  00000		 |$L39469|
  00000		 |$M39467|

; 185  : 	DWORD SpiPortNum;
; 186  : 
; 187  : 		if(SSPCLK==23)
; 188  : 			SpiPortNum = 1;
; 189  : 		else if(SSPCLK==36)
; 190  : 			SpiPortNum = 2;
; 191  : 		else if(SSPCLK==52)
; 192  : 			SpiPortNum = 3;
; 193  : 	        else 
; 194  : 	                SpiPortNum = 4;
; 195  : 	 
; 196  : 	return  SpiPortNum;	

  00000	e3a00001	 mov         r0, #1

; 197  : }

  00004	e12fff1e	 bx          lr
  00008		 |$M39468|

			 ENDP  ; |GetSpiPortNum|


  00000			 AREA	 |.text| { |SSPWriteDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$SSPWriteDWord|, PDATA, SELECTION=5, ASSOC=|.text| { |SSPWriteDWord| } ; comdat associative
|$T39479| DCD	|$L39478|
	DCD	0x40000900
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |SSPWriteDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |SSPWriteDWord| PROC

; 201  : {

  00000		 |$L39478|
  00000		 |$M39476|

; 202  : 	
; 203  : 	DWORD sb;	
; 204  : 	sb = SWAP32(dwVal);
; 205  : 	pSpiPhy->sspCtrl->ssdr = sb;	

  00000	e2013cff	 and         r3, r1, #0xFF, 24
  00004	e1832801	 orr         r2, r3, r1, lsl #16
  00008	e20138ff	 and         r3, r1, #0xFF, 16
  0000c	e590006c	 ldr         r0, [r0, #0x6C]
  00010	e1833821	 orr         r3, r3, r1, lsr #16
  00014	e1a02402	 mov         r2, r2, lsl #8
  00018	e1823423	 orr         r3, r2, r3, lsr #8
  0001c	e5803010	 str         r3, [r0, #0x10]

; 206  : }

  00020	e12fff1e	 bx          lr
  00024		 |$M39477|

			 ENDP  ; |SSPWriteDWord|


  00000			 AREA	 |.text| { |SSPReadDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$SSPReadDWord|, PDATA, SELECTION=5, ASSOC=|.text| { |SSPReadDWord| } ; comdat associative
|$T39490| DCD	|$L39489|
	DCD	0x40000900
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |SSPReadDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |SSPReadDWord| PROC

; 210  : {

  00000		 |$L39489|
  00000		 |$M39487|

; 211  : 	DWORD sb;	
; 212  : 	DWORD v = pSpiPhy->sspCtrl->ssdr;

  00000	e590306c	 ldr         r3, [r0, #0x6C]
  00004	e5930010	 ldr         r0, [r3, #0x10]

; 213  : 	sb = SWAP32(v);
; 214  : 	return sb;

  00008	e20038ff	 and         r3, r0, #0xFF, 16
  0000c	e1833820	 orr         r3, r3, r0, lsr #16
  00010	e2002cff	 and         r2, r0, #0xFF, 24
  00014	e1a01423	 mov         r1, r3, lsr #8
  00018	e1823800	 orr         r3, r2, r0, lsl #16
  0001c	e1810403	 orr         r0, r1, r3, lsl #8

; 215  : }

  00020	e12fff1e	 bx          lr
  00024		 |$M39488|

			 ENDP  ; |SSPReadDWord|


  00000			 AREA	 |.text| { |ReadWriteDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ReadWriteDWord|, PDATA, SELECTION=5, ASSOC=|.text| { |ReadWriteDWord| } ; comdat associative
|$T39516| DCD	|$L39515|
	DCD	0x40002a01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |ReadWriteDWord| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ReadWriteDWord| PROC

; 219  : {

  00000		 |$L39515|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M39513|
  00004	e1a05001	 mov         r5, r1

; 220  : 	DWORD dwRetVal;
; 221  : 	DWORD timeout;
; 222  : 	
; 223  : 	
; 224  : 	timeout = POLLING_TIMEOUT;	

  00008	e3a0ea7a	 mov         lr, #0x7A, 20
  0000c	e38eee12	 orr         lr, lr, #0x12, 28
  00010	e590406c	 ldr         r4, [r0, #0x6C]
  00014	e1a0200e	 mov         r2, lr
  00018		 |$L38875|

; 225  : 	//Loop while there is any data in the fifo
; 226  : 	while(!(pSpiPhy->sspCtrl->ssr & SSSR_TNF) && timeout--);

  00018	e5943008	 ldr         r3, [r4, #8]
  0001c	e3130004	 tst         r3, #4
  00020	1a000002	 bne         |$L38876|
  00024	e3520000	 cmp         r2, #0
  00028	e2422001	 sub         r2, r2, #1
  0002c	1afffff9	 bne         |$L38875|
  00030		 |$L38876|

; 227  : 	if (timeout == -1)

  00030	e3720001	 cmn         r2, #1

; 228  : 		return 0;

  00034	0a00000f	 beq         |$L39512|

; 229  : 	SSPWriteDWord(pSpiPhy,dwInVal);

  00038	e2053cff	 and         r3, r5, #0xFF, 24
  0003c	e1833805	 orr         r3, r3, r5, lsl #16
  00040	e20528ff	 and         r2, r5, #0xFF, 16
  00044	e1a01403	 mov         r1, r3, lsl #8
  00048	e1823825	 orr         r3, r2, r5, lsr #16
  0004c	e1813423	 orr         r3, r1, r3, lsr #8
  00050	e5843010	 str         r3, [r4, #0x10]

; 230  : 	
; 231  : 	timeout = POLLING_TIMEOUT;

  00054	e590206c	 ldr         r2, [r0, #0x6C]
  00058		 |$L38879|

; 232  : 	while(!(pSpiPhy->sspCtrl->ssr & SSSR_RNE) && timeout--);

  00058	e5923008	 ldr         r3, [r2, #8]
  0005c	e3130008	 tst         r3, #8
  00060	1a000002	 bne         |$L38880|
  00064	e35e0000	 cmp         lr, #0
  00068	e24ee001	 sub         lr, lr, #1
  0006c	1afffff9	 bne         |$L38879|
  00070		 |$L38880|

; 233  : 	if (timeout == -1)

  00070	e37e0001	 cmn         lr, #1
  00074	1a000002	 bne         |$L38881|
  00078		 |$L39512|

; 234  : 		return 0;

  00078	e3a00000	 mov         r0, #0

; 239  : }

  0007c	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00080	e12fff1e	 bx          lr
  00084		 |$L38881|

; 235  : 	//RETAILMSG(1, (TEXT("ReadWriteDWord call read  ..\r\n")));
; 236  : 	dwRetVal = SSPReadDWord(pSpiPhy);

  00084	e5920010	 ldr         r0, [r2, #0x10]

; 237  : 
; 238  : 	return dwRetVal;

  00088	e20038ff	 and         r3, r0, #0xFF, 16
  0008c	e1833820	 orr         r3, r3, r0, lsr #16
  00090	e2002cff	 and         r2, r0, #0xFF, 24
  00094	e1a01423	 mov         r1, r3, lsr #8
  00098	e1823800	 orr         r3, r2, r0, lsl #16
  0009c	e1810403	 orr         r0, r1, r3, lsl #8

; 239  : }

  000a0	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  000a4	e12fff1e	 bx          lr
  000a8		 |$M39514|

			 ENDP  ; |ReadWriteDWord|

; File e:\wm604\public\common\sdk\inc\kfuncs.h

  00000			 AREA	 |.text| { |endOfDmaTransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$endOfDmaTransfer|, PDATA, SELECTION=5, ASSOC=|.text| { |endOfDmaTransfer| } ; comdat associative
|$T39527| DCD	|$L39526|
	DCD	0x40000501
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\spihw.c

  00000			 AREA	 |.text| { |endOfDmaTransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |endOfDmaTransfer| PROC

; 243  : {

  00000		 |$L39526|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39524|

; 244  : 	//RETAILMSG(1, (TEXT("SmsSpi:  DMA transaction end.\r\n")));
; 245  : 	SetEvent((HANDLE)transactionId);

  00004	e3a01003	 mov         r1, #3
  00008	eb000000	 bl          EventModify

; 246  : }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M39525|

			 ENDP  ; |endOfDmaTransfer|

	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@_1CE@IKFNODDM@?$AAD?$AAm?$AAa?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAs?$AAP?$AAl?$AAu?$AAg?$AAi?$AAn?$AA?$AA@| [ DATA ] ; `string'
	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'
	IMPORT	|LocalAlloc|
	IMPORT	|LocalFree|
	IMPORT	|RegCloseKey|
	IMPORT	|RegOpenKeyExW|
	IMPORT	|RegQueryValueExW|
	IMPORT	|NKDbgPrintfW|

  00000			 AREA	 |.text| { |spiPhyGetRegistrySettings| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$spiPhyGetRegistrySettings|, PDATA, SELECTION=5, ASSOC=|.text| { |spiPhyGetRegistrySettings| } ; comdat associative
|$T39543| DCD	|$L39542|
	DCD	0x40005402

  00000			 AREA	 |.rdata| { |??_C@_1CE@IKFNODDM@?$AAD?$AAm?$AAa?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAs?$AAP?$AAl?$AAu?$AAg?$AAi?$AAn?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@IKFNODDM@?$AAD?$AAm?$AAa?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAs?$AAP?$AAl?$AAu?$AAg?$AAi?$AAn?$AA?$AA@| DCB "D"
	DCB	0x0, "m", 0x0, "a", 0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v"
	DCB	0x0, "i", 0x0, "c", 0x0, "e", 0x0, "s", 0x0, "P", 0x0, "l"
	DCB	0x0, "u", 0x0, "g", 0x0, "i", 0x0, "n", 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'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -