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

📄 cs8950.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	d:\wince420\platform\ep931x\drivers\ethdbg\cs8950\.\cs8950.c
	CODE32

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

	EXPORT	|pCS8950Buffer| [ DATA ]
	EXPORT	|ulPhysicalOffset| [ DATA ]
	EXPORT	|bStop| [ DATA ]

  00000			 AREA	 |.data|, DATA
	 COMMON	|Chip|, 0x18

	 COMMON	|pChip|, 0x4


  00000			 AREA	 |.bss|, NOINIT
|Global_TxTotal| % 0x4
|Global_TxOkCnt| % 0x4
|Global_TxNotOkCnt| % 0x4
|Global_RxTotalCnt| % 0x4
|Global_RxNotOkCnt| % 0x4
|Global_TxInProcess| % 0x4
|gdwEthernetBase| % 0x4
|gusMacAddr| %	0x6
|pCS8950Buffer| % 0x4
|ulPhysicalOffset| % 0x4

  00000			 AREA	 |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
	DCW	0x0
	DCD	0x4033
	DCB	0x1
	DCB	"AD", 0x0
	DCW	0x1050
	DCW	0x940
	DCD	0x4005
	DCB	0x1
	DCB	"LS", 0x0
	DCW	0x1050
	DCW	0x940
	DCD	0x2078
	DCB	0x1
	DCB	"LS", 0x0
	DCW	0x10ec
	DCW	0x8029
	DCD	0xc0f0
	DCB	0x1
	DCB	"KS", 0x0
	DCW	0x10ec
	DCW	0x8129
	DCD	0x0
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0x900b
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0xd0c9
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x10ec
	DCW	0x8139
	DCD	0xe04c
	DCB	0x4
	DCB	"RT", 0x0
	DCW	0x1186
	DCW	0x1300
	DCD	0x50ba
	DCB	0x4
	DCB	"DL", 0x0
	DCW	0x100b
	DCW	0x20
	DCD	0xa0cc
	DCB	0x5
	DCB	"NG", 0x0
	DCW	0x10b7
	DCW	0x9050
	DCD	0x6008
	DCB	0x6
	DCB	"3C", 0x0
	DCW	0x10b7
	DCW	0x9200
	DCD	0x476
	DCB	0x6
	DCB	"3C", 0x0

  00000			 AREA	 |.data|, DATA
|bStop|	DCD	0x1
	EXPORT	|CS8950Disable|
; File d:\wince420\platform\ep931x\drivers\ethdbg\cs8950\cs8950.c

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

  00000			 AREA	 |.pdata$$CS8950Disable|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950Disable| } ; comdat associative
|$T14757| DCD	|CS8950Disable|
	DCD	0x40000800
; Function compile flags: /Ods

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

  00000		 |CS8950Disable| PROC

; 108  : {

  00000		 |$M14755|

; 109  :     WriteDWord(OpReg_BMCTL, BMCTL_TxDis | BMCTL_RxDis);

  00000	e59f0014	 ldr       r0, [pc, #0x14]
  00004	e5901000	 ldr       r1, [r0]
  00008	e3a02c02	 mov       r2, #2, 24
  0000c	e3820002	 orr       r0, r2, #2
  00010	e3a03080	 mov       r3, #0x80
  00014	e7810003	 str       r0, [r1, +r3]

; 110  : }

  00018	e12fff1e	 bx        lr
  0001c		 |$L14759|
  0001c	00000000	 DCD       |gdwEthernetBase|
  00020		 |$M14756|

			 ENDP  ; |CS8950Disable|

	EXPORT	|CS8950DMAInit|
	EXPORT	|??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| [ DATA ] ; `string'
	IMPORT	|EdbgOutputDebugString|

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

  00000			 AREA	 |.pdata$$CS8950DMAInit|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950DMAInit| } ; comdat associative
|$T14765| DCD	|CS8950DMAInit|
	DCD	0x40002704

  00000			 AREA	 |.rdata| { |??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| DCB "CS8950DMAI"
	DCB	"nit:  dwPhysicalAddr = 0x%x, dwVirtualAddr= 0x%x dwSize "
	DCB	"= 0x%x", 0xd, 0xa, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| DCB "CS8950DMAInit"
	DCB	": CS8950 DMA buffer to Small", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods

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

  00000		 |CS8950DMAInit| PROC

; 125  : {

  00000	e1a0c00d	 mov       r12, sp
  00004	e92d0007	 stmdb     sp!, {r0 - r2}
  00008	e92d5000	 stmdb     sp!, {r12, lr}
  0000c	e24dd008	 sub       sp, sp, #8
  00010		 |$M14763|

; 126  :     BOOL    bReturn = FALSE;

  00010	e3a00000	 mov       r0, #0
  00014	e58d0000	 str       r0, [sp]

; 127  :     EdbgOutputDebugString
; 128  :     (
; 129  :         "CS8950DMAInit:  dwPhysicalAddr = 0x%x, dwVirtualAddr= 0x%x "
; 130  :         "dwSize = 0x%x\r\n",
; 131  :         dwPhysicalAddr,
; 132  :         dwVirtualAddr,
; 133  :         dwSize
; 134  :     );

  00018	e59d3018	 ldr       r3, [sp, #0x18]
  0001c	e59d2014	 ldr       r2, [sp, #0x14]
  00020	e59d1010	 ldr       r1, [sp, #0x10]
  00024	e59f006c	 ldr       r0, [pc, #0x6C]
  00028	eb000000	 bl        EdbgOutputDebugString

; 135  :     
; 136  :     if(dwSize > sizeof(CS9850_BUFFER))

  0002c	e59d3018	 ldr       r3, [sp, #0x18]
  00030	e3a00b47	 mov       r0, #0x47, 22
  00034	e3801d0f	 orr       r1, r0, #0xF, 26
  00038	e1530001	 cmp       r3, r1
  0003c	9a00000a	 bls       |$L13976|

; 137  :     {
; 138  :         pCS8950Buffer       = (CS9850_BUFFER *) dwVirtualAddr;

  00040	e59d0014	 ldr       r0, [sp, #0x14]
  00044	e59f1048	 ldr       r1, [pc, #0x48]
  00048	e5810000	 str       r0, [r1]

; 139  :         ulPhysicalOffset    = dwPhysicalAddr - dwVirtualAddr;

  0004c	e59d2010	 ldr       r2, [sp, #0x10]
  00050	e59d0014	 ldr       r0, [sp, #0x14]
  00054	e0421000	 sub       r1, r2, r0
  00058	e59f3030	 ldr       r3, [pc, #0x30]
  0005c	e5831000	 str       r1, [r3]

; 140  :         bReturn = TRUE;

  00060	e3a00001	 mov       r0, #1
  00064	e58d0000	 str       r0, [sp]

; 141  :     }
; 142  :     else

  00068	ea000001	 b         |$L13978|
  0006c		 |$L13976|

; 143  :     {
; 144  :         EdbgOutputDebugString
; 145  :         (
; 146  :             "CS8950DMAInit: CS8950 DMA buffer to Small\r\n"
; 147  :         );

  0006c	e59f0018	 ldr       r0, [pc, #0x18]
  00070	eb000000	 bl        EdbgOutputDebugString
  00074		 |$L13978|

; 148  :     }
; 149  : 
; 150  :     return bReturn;

  00074	e59d0000	 ldr       r0, [sp]
  00078	e58d0004	 str       r0, [sp, #4]
  0007c	e59d0004	 ldr       r0, [sp, #4]

; 151  : }

  00080	e28dd008	 add       sp, sp, #8
  00084	e89d6000	 ldmia     sp, {sp, lr}
  00088	e12fff1e	 bx        lr
  0008c		 |$L14767|
  0008c	00000000	 DCD       |??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@|
  00090	00000000	 DCD       |ulPhysicalOffset|
  00094	00000000	 DCD       |pCS8950Buffer|
  00098	00000000	 DCD       |??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@|
  0009c		 |$M14764|

			 ENDP  ; |CS8950DMAInit|

	EXPORT	|CS8950Init|
	EXPORT	|??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| [ DATA ] ; `string'
	IMPORT	|DelayInuSec|

  0002a			 AREA	 |.bss|, NOINIT
|gCD|	%	0x250

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

  00000			 AREA	 |.pdata$$CS8950Init|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950Init| } ; comdat associative
|$T14773| DCD	|CS8950Init|
	DCD	0x4000e804

  00000			 AREA	 |.rdata| { |??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| DCB "CS8950"
	DCB	"Init:  pbBaseAddress = 0x%x", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| DCB "CS89"
	DCB	"50Init:  pChip = 0x%x, pChip->pData = 0x%x", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| DCB "CS8950: Tran"
	DCB	"smit State machine never resets.", 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| DCB "CS8950: Rece"
	DCB	"ive State machine never resets.", 0xa, 0x0 ; `string'
; Function compile flags: /Ods

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

  00000		 |CS8950Init| PROC

; 175  : {

  00000	e1a0c00d	 mov       r12, sp
  00004	e92d0007	 stmdb     sp!, {r0 - r2}
  00008	e92d5000	 stmdb     sp!, {r12, lr}
  0000c	e24dd018	 sub       sp, sp, #0x18
  00010		 |$M14771|

; 176  :     
; 177  :     WORD  Result;
; 178  :     MAXFL MaxFL;
; 179  :     DWORD dwCount;    
; 180  : 
; 181  :     EdbgOutputDebugString
; 182  :     (
; 183  :         "CS8950Init:  pbBaseAddress = 0x%x\r\n",
; 184  :         pbBaseAddress
; 185  :     );

  00010	e59d1020	 ldr       r1, [sp, #0x20]
  00014	e59f0380	 ldr       r0, [pc, #0x380]
  00018	eb000000	 bl        EdbgOutputDebugString

; 186  : 
; 187  : 
; 188  :     pChip=&Chip;

  0001c	e59f3374	 ldr       r3, [pc, #0x374]
  00020	e59f0358	 ldr       r0, [pc, #0x358]
  00024	e5803000	 str       r3, [r0]

; 189  : 
; 190  :     pChip->pData=&gCD;

  00028	e59f1350	 ldr       r1, [pc, #0x350]
  0002c	e5910000	 ldr       r0, [r1]
  00030	e59f235c	 ldr       r2, [pc, #0x35C]
  00034	e580200c	 str       r2, [r0, #0xC]

; 191  : 
; 192  :     gdwEthernetBase = (ULONG)pbBaseAddress;

  00038	e59d1020	 ldr       r1, [sp, #0x20]
  0003c	e59f0338	 ldr       r0, [pc, #0x338]
  00040	e5801000	 str       r1, [r0]

; 193  : 
; 194  : 
; 195  :     EdbgOutputDebugString
; 196  :     (
; 197  :         "CS8950Init:  pChip = 0x%x, pChip->pData = 0x%x\r\n",
; 198  :         (ULONG)pChip,
; 199  :         (ULONG)pChip->pData
; 200  :     );

  00044	e59f2334	 ldr       r2, [pc, #0x334]
  00048	e5920000	 ldr       r0, [r2]
  0004c	e590200c	 ldr       r2, [r0, #0xC]
  00050	e59f0328	 ldr       r0, [pc, #0x328]
  00054	e5901000	 ldr       r1, [r0]
  00058	e59f0330	 ldr       r0, [pc, #0x330]
  0005c	eb000000	 bl        EdbgOutputDebugString

; 201  :     
; 202  : 
; 203  :     //
; 204  :     // Check to make sure that CS8950DmaInit has been called.
; 205  :     //
; 206  :     if(!pCS8950Buffer)

  00060	e59f3324	 ldr       r3, [pc, #0x324]
  00064	e5930000	 ldr       r0, [r3]
  00068	e3500000	 cmp       r0, #0
  0006c	1a000002	 bne       |$L13996|

; 207  :     {
; 208  :         return FALSE;

  00070	e3a00000	 mov       r0, #0
  00074	e58d000c	 str       r0, [sp, #0xC]
  00078	ea0000bb	 b         |$L13987|
  0007c		 |$L13996|

; 209  :     }
; 210  : 
; 211  :     //
; 212  :     // Lets get the mac address.  If the MAC address has not been initialized,
; 213  :     // There is not any point in continuing.
; 214  :     //
; 215  :     GetMACAddress(MacAddr);

  0007c	e59d0028	 ldr       r0, [sp, #0x28]
  00080	eb000000	 bl        GetMACAddress

; 216  :     if(MacAddr[0] == 0 && MacAddr[1] == 0 && MacAddr[2] == 0)

  00084	e59d3028	 ldr       r3, [sp, #0x28]
  00088	e1d300b0	 ldrh      r0, [r3]
  0008c	e1a01800	 mov       r1, r0, lsl #16
  00090	e1b02821	 movs      r2, r1, lsr #16
  00094	1a00000c	 bne       |$L13997|
  00098	e59d0028	 ldr       r0, [sp, #0x28]
  0009c	e1d010b2	 ldrh      r1, [r0, #2]
  000a0	e1a02801	 mov       r2, r1, lsl #16
  000a4	e1b00822	 movs      r0, r2, lsr #16
  000a8	1a000007	 bne       |$L13997|
  000ac	e59d0028	 ldr       r0, [sp, #0x28]
  000b0	e1d010b4	 ldrh      r1, [r0, #4]
  000b4	e1a02801	 mov       r2, r1, lsl #16
  000b8	e1b00822	 movs      r0, r2, lsr #16
  000bc	1a000002	 bne       |$L13997|

; 217  :         return FALSE;

  000c0	e3a00000	 mov       r0, #0
  000c4	e58d000c	 str       r0, [sp, #0xC]
  000c8	ea0000a7	 b         |$L13987|
  000cc		 |$L13997|

; 218  : 
; 219  :     
; 220  :     //
; 221  :     // Stop the transmit and recieve queues.
; 222  :     //
; 223  :     WriteDWord( OpReg_BMCTL,  BMCTL_TxDis | BMCTL_RxDis);

⌨️ 快捷键说明

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