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

📄 cs8950.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:

  0004c	e1dd10b0	 ldrh        r1, [sp]
  00050	e59d0020	 ldr         r0, [sp, #0x20]
  00054	eb000000	 bl          Check_PHY_ID_Type
  00058	e58d0010	 str         r0, [sp, #0x10]
  0005c	e59d3010	 ldr         r3, [sp, #0x10]
  00060	e58d3004	 str         r3, [sp, #4]

; 997  :       if (IsPHYFound == TRUE )

  00064	e59d3004	 ldr         r3, [sp, #4]
  00068	e3530001	 cmp         r3, #1
  0006c	1a000000	 bne         |$L15667|

; 998  : 	  {
; 999  : 		  break;

  00070	ea000000	 b           |$L15666|
  00074		 |$L15667|

; 1000 : 	  }     
; 1001 :     } //end for PhyId 1-31

  00074	eaffffec	 b           |$L15665|
  00078		 |$L15666|

; 1002 : 
; 1003 : 
; 1004 :     /* If did not find a PHY */
; 1005 :     if ( IsPHYFound == FALSE )

  00078	e59d3004	 ldr         r3, [sp, #4]
  0007c	e3530000	 cmp         r3, #0
  00080	1a000005	 bne         |$L15668|

; 1006 :     {
; 1007 : 	   //PHY address 0 is for broadcasting. All PHYs will respond to address 0.
; 1008 : 	   //However, some users may connect PHY to address 0.  So search it.
; 1009 : 	   IsPHYFound=Check_PHY_ID_Type(pChip, 0);	   

  00084	e3a01000	 mov         r1, #0
  00088	e59d0020	 ldr         r0, [sp, #0x20]
  0008c	eb000000	 bl          Check_PHY_ID_Type
  00090	e58d0014	 str         r0, [sp, #0x14]
  00094	e59d3014	 ldr         r3, [sp, #0x14]
  00098	e58d3004	 str         r3, [sp, #4]
  0009c		 |$L15668|

; 1010 :     }
; 1011 : 
; 1012 : 	if ( IsPHYFound == FALSE )

  0009c	e59d3004	 ldr         r3, [sp, #4]
  000a0	e3530000	 cmp         r3, #0
  000a4	1a000001	 bne         |$L15669|

; 1013 : 	{
; 1014 :         DEBUGMSG(1,(TEXT("Error: EthernetMAC: A PHY is not found!\r\n") ));
; 1015 :         RETAILMSG(1,( TEXT("Error: EthernetMAC: A PHY is not found!\r\n"))); 

  000a8	e59f0018	 ldr         r0, [pc, #0x18]
  000ac	eb000000	 bl          NKDbgPrintfW
  000b0		 |$L15669|

; 1016 : 	}
; 1017 : 
; 1018 :     return IsPHYFound;

  000b0	e59d3004	 ldr         r3, [sp, #4]
  000b4	e58d300c	 str         r3, [sp, #0xC]
  000b8	e59d000c	 ldr         r0, [sp, #0xC]

; 1019 : }

  000bc	e28dd018	 add         sp, sp, #0x18
  000c0	e89d6000	 ldmia       sp, {sp, lr}
  000c4	e12fff1e	 bx          lr
  000c8		 |$L16294|
  000c8	00000000	 DCD         |??_C@_1FE@NCFENECG@?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?3?$AA?5?$AAE?$AAt?$AAh?$AAe?$AAr?$AAn?$AAe?$AAt?$AAM?$AAA?$AAC?$AA?3?$AA?5@|
  000cc		 |$M16290|

			 ENDP  ; |FindPHYType|


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

  00000			 AREA	 |.pdata$$StartupQueues|, PDATA, SELECTION=5, ASSOC=|.text| { |StartupQueues| } ; comdat associative
|$T16301| DCD	|$L16300|
	DCD	0x40014f04
; Function compile flags: /Ods

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

  00000		 |StartupQueues| PROC

; 1028 : {

  00000		 |$L16300|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd00c	 sub         sp, sp, #0xC
  00010		 |$M16298|

; 1029 :     PCD     pCD;
; 1030 :     USHORT   Index;
; 1031 : 
; 1032 :     pCD    = (PCD)pChip->pData;

  00010	e59d3014	 ldr         r3, [sp, #0x14]
  00014	e283300c	 add         r3, r3, #0xC
  00018	e5933000	 ldr         r3, [r3]
  0001c	e58d3004	 str         r3, [sp, #4]

; 1033 : 
; 1034 :     pCD->TxQueueDepth=0;

  00020	e59d3004	 ldr         r3, [sp, #4]
  00024	e2832f93	 add         r2, r3, #0x93, 30
  00028	e3a03000	 mov         r3, #0
  0002c	e1c230b0	 strh        r3, [r2]

; 1035 :     
; 1036 :     /* Allocate shared memory for the Receive Descriptor Queue */
; 1037 :     pCD->pRxDesc        = (PVOID) &pCS8950Buffer->RxDesc[0];

  00030	e59f3500	 ldr         r3, [pc, #0x500]
  00034	e5932000	 ldr         r2, [r3]
  00038	e59d3004	 ldr         r3, [sp, #4]
  0003c	e5832000	 str         r2, [r3]

; 1038 :     pCD->RxDescPhysAddr = CONVERT_TO_PHYSICAL(pCD->pRxDesc);

  00040	e59d3004	 ldr         r3, [sp, #4]
  00044	e5932000	 ldr         r2, [r3]
  00048	e59f34e4	 ldr         r3, [pc, #0x4E4]
  0004c	e5933000	 ldr         r3, [r3]
  00050	e0822003	 add         r2, r2, r3
  00054	e59d3004	 ldr         r3, [sp, #4]
  00058	e2833008	 add         r3, r3, #8
  0005c	e5832000	 str         r2, [r3]

; 1039 :     ASSERT(!(pCD->RxDescPhysAddr & 0x3));
; 1040 : 
; 1041 :     /* Initialize Receive Descriptor Queue limit pointer */
; 1042 :     pCD->pRxDescLimit = pCD->pRxDesc + RXDESCCOUNT;

  00060	e59d3004	 ldr         r3, [sp, #4]
  00064	e5933000	 ldr         r3, [r3]
  00068	e2832c01	 add         r2, r3, #1, 24
  0006c	e59d3004	 ldr         r3, [sp, #4]
  00070	e2833004	 add         r3, r3, #4
  00074	e5832000	 str         r2, [r3]

; 1043 : 
; 1044 :     /* Initialize the Receive Descriptor Queue registers */
; 1045 :     WriteDWord( OpReg_RxDBA, pCD->RxDescPhysAddr );

  00078	e59d3004	 ldr         r3, [sp, #4]
  0007c	e2831008	 add         r1, r3, #8
  00080	e59f34a8	 ldr         r3, [pc, #0x4A8]
  00084	e5933000	 ldr         r3, [r3]
  00088	e2832090	 add         r2, r3, #0x90
  0008c	e5913000	 ldr         r3, [r1]
  00090	e5823000	 str         r3, [r2]

; 1046 :     WriteWord(  OpReg_RxDBL, sizeof(RxDesc_t)*RXDESCCOUNT );

  00094	e59f3494	 ldr         r3, [pc, #0x494]
  00098	e5933000	 ldr         r3, [r3]
  0009c	e2832094	 add         r2, r3, #0x94
  000a0	e3a03c01	 mov         r3, #1, 24
  000a4	e1c230b0	 strh        r3, [r2]

; 1047 :     WriteDWord( OpReg_RxDTH, 0x00040002);

  000a8	e59f3480	 ldr         r3, [pc, #0x480]
  000ac	e5933000	 ldr         r3, [r3]
  000b0	e28320e0	 add         r2, r3, #0xE0
  000b4	e3a03701	 mov         r3, #1, 14
  000b8	e3833002	 orr         r3, r3, #2
  000bc	e5823000	 str         r3, [r2]

; 1048 : 
; 1049 :     /* Allocate shared memory for the Receive Status Queue */
; 1050 :     pCD->pRxStat        = (PVOID) &pCS8950Buffer->RxStat[0];

  000c0	e59f3470	 ldr         r3, [pc, #0x470]
  000c4	e5933000	 ldr         r3, [r3]
  000c8	e2832c01	 add         r2, r3, #1, 24
  000cc	e59d3004	 ldr         r3, [sp, #4]
  000d0	e283300c	 add         r3, r3, #0xC
  000d4	e5832000	 str         r2, [r3]

; 1051 :     pCD->RxStatPhysAddr = CONVERT_TO_PHYSICAL(pCD->pRxStat);

  000d8	e59d3004	 ldr         r3, [sp, #4]
  000dc	e283300c	 add         r3, r3, #0xC
  000e0	e5932000	 ldr         r2, [r3]
  000e4	e59f3448	 ldr         r3, [pc, #0x448]
  000e8	e5933000	 ldr         r3, [r3]
  000ec	e0822003	 add         r2, r2, r3
  000f0	e59d3004	 ldr         r3, [sp, #4]
  000f4	e2833018	 add         r3, r3, #0x18
  000f8	e5832000	 str         r2, [r3]

; 1052 :     ASSERT(!(pCD->RxStatPhysAddr & 0x3));
; 1053 : 
; 1054 :     /* Initialize Receive Status Queue limit pointer */
; 1055 :     pCD->pRxStatLimit = pCD->pRxStat + RXSTATCOUNT;

  000fc	e59d3004	 ldr         r3, [sp, #4]
  00100	e283300c	 add         r3, r3, #0xC
  00104	e5933000	 ldr         r3, [r3]
  00108	e2832c01	 add         r2, r3, #1, 24
  0010c	e59d3004	 ldr         r3, [sp, #4]
  00110	e2833010	 add         r3, r3, #0x10
  00114	e5832000	 str         r2, [r3]

; 1056 : 
; 1057 :     /* Initialize the Receive Status Queue registers */
; 1058 :     WriteDWord( OpReg_RxSBA, pCD->RxStatPhysAddr );

  00118	e59d3004	 ldr         r3, [sp, #4]
  0011c	e2831018	 add         r1, r3, #0x18
  00120	e59f3408	 ldr         r3, [pc, #0x408]
  00124	e5933000	 ldr         r3, [r3]
  00128	e28320a0	 add         r2, r3, #0xA0
  0012c	e5913000	 ldr         r3, [r1]
  00130	e5823000	 str         r3, [r2]

; 1059 :     WriteWord( OpReg_RxSBL, sizeof(RxStat_t)*RXSTATCOUNT);

  00134	e59f33f4	 ldr         r3, [pc, #0x3F4]
  00138	e5933000	 ldr         r3, [r3]
  0013c	e28320a4	 add         r2, r3, #0xA4
  00140	e3a03c01	 mov         r3, #1, 24
  00144	e1c230b0	 strh        r3, [r2]

; 1060 :     WriteDWord(OpReg_RxSTH, 0x00040002);

  00148	e59f33e0	 ldr         r3, [pc, #0x3E0]
  0014c	e5933000	 ldr         r3, [r3]
  00150	e28320d8	 add         r2, r3, #0xD8
  00154	e3a03701	 mov         r3, #1, 14
  00158	e3833002	 orr         r3, r3, #2
  0015c	e5823000	 str         r3, [r2]

; 1061 : 
; 1062 :     /* Allocate shared memory for the Transmit Descriptor Queue */
; 1063 :     pCD->pTxDesc        = (PVOID) &pCS8950Buffer->TxDesc[0];

  00160	e59f33d0	 ldr         r3, [pc, #0x3D0]
  00164	e5933000	 ldr         r3, [r3]
  00168	e2832c02	 add         r2, r3, #2, 24
  0016c	e59d3004	 ldr         r3, [sp, #4]
  00170	e283301c	 add         r3, r3, #0x1C
  00174	e5832000	 str         r2, [r3]

; 1064 :     pCD->TxDescPhysAddr = CONVERT_TO_PHYSICAL(pCD->pTxDesc);

  00178	e59d3004	 ldr         r3, [sp, #4]
  0017c	e283301c	 add         r3, r3, #0x1C
  00180	e5932000	 ldr         r2, [r3]
  00184	e59f33a8	 ldr         r3, [pc, #0x3A8]
  00188	e5933000	 ldr         r3, [r3]
  0018c	e0822003	 add         r2, r2, r3
  00190	e59d3004	 ldr         r3, [sp, #4]
  00194	e2833028	 add         r3, r3, #0x28
  00198	e5832000	 str         r2, [r3]

; 1065 :     ASSERT(!(pCD->TxDescPhysAddr & 0x3));
; 1066 :     //Result = VosAllocSharedMemory( pChip, (WORD)(sizeof(TxDesc_t)*TXDESCCOUNT),
; 1067 :     //     (PVOID *)(&pCD->pTxDesc), (DWORD *)(&pCD->TxDescPhysAddr) );
; 1068 :     //     
; 1069 :     //if ( Result != TRUE ) 
; 1070 :     //    return FALSE;
; 1071 : 
; 1072 :     /* Initialize Transmit Descriptor Queue limit pointer */
; 1073 :     pCD->pTxDescLimit = pCD->pTxDesc + TXDESCCOUNT;

  0019c	e59d3004	 ldr         r3, [sp, #4]
  001a0	e283301c	 add         r3, r3, #0x1C
  001a4	e5933000	 ldr         r3, [r3]
  001a8	e2832080	 add         r2, r3, #0x80
  001ac	e59d3004	 ldr         r3, [sp, #4]
  001b0	e2833020	 add         r3, r3, #0x20
  001b4	e5832000	 str         r2, [r3]

; 1074 : 
; 1075 :     /* Initialize the Transmit Descriptor Queue registers */
; 1076 :     WriteDWord( OpReg_TxDBA, pCD->TxDescPhysAddr );

  001b8	e59d3004	 ldr         r3, [sp, #4]
  001bc	e2831028	 add         r1, r3, #0x28
  001c0	e59f3368	 ldr         r3, [pc, #0x368]
  001c4	e5933000	 ldr         r3, [r3]
  001c8	e28320b0	 add         r2, r3, #0xB0
  001cc	e5913000	 ldr         r3, [r1]
  001d0	e5823000	 str         r3, [r2]

; 1077 :     WriteWord( OpReg_TxDBL, sizeof(TxDesc_t)*TXDESCCOUNT );

  001d4	e59f3354	 ldr         r3, [pc, #0x354]
  001d8	e5933000	 ldr         r3, [r3]
  001dc	e28320b4	 add         r2, r3, #0xB4
  001e0	e3a03080	 mov         r3, #0x80
  001e4	e1c230b0	 strh        r3, [r2]

; 1078 :     WriteDWord( OpReg_TxDTH, 0x00040002);

  001e8	e59f3340	 ldr         r3, [pc, #0x340]
  001ec	e5933000	 ldr         r3, [r3]
  001f0	e28320e4	 add         r2, r3, #0xE4
  001f4	e3a03701	 mov         r3, #1, 14
  001f8	e3833002	 orr         r3, r3, #2
  001fc	e5823000	 str         r3, [r2]

; 1079 : 
; 1080 :     /* Allocate shared memory for the Transmit Status Queue */
; 1081 :     pCD->pTxStat        = (PVOID) &pCS8950Buffer->TxStat[0];

  00200	e59f3330	 ldr         r3, [pc, #0x330]
  00204	e5933000	 ldr         r3, [r3]
  00208	e2832d0a	 add         r2, r3, #0xA, 26
  0020c	e59d3004	 ldr         r3, [sp, #4]
  00210	e283302c	 add         r3, r3, #0x2C
  00214	e5832000	 str         r2, [r3]

; 1082 :     pCD->TxStatPhysAddr = CONVERT_TO_PHYSICAL(pCD->pTxStat);

  00218	e59d3004	 ldr         r3, [sp, #4]
  0021c	e283302c	 add         r3, r3, #0x2C
  00220	e5932000	 ldr         r2, [r3]
  00224	e59f3308	 ldr         r3, [pc, #0x308]
  00228	e5933000	 ldr         r3, [r3]
  0022c	e0822003	 add         r2, r2, r3
  00230	e59d3004	 ldr         r3, [sp, #4]
  00234	e2833038	 add         r3, r3, #0x38
  00238	e5832000	 str         r2, [r3]

; 1083 :     ASSERT(!(pCD->TxStatPhysAddr & 0x3));
; 1084 :     //Result = VosAllocSharedMemory( pChip, (WORD)(sizeof(TxStat_t)*TXSTATCOUNT),
; 1085 :     //     (PVOID *)(&pCD->pTxStat), (DWORD *)(&pCD->TxStatPhysAddr) );
; 1086 :     //     
; 1087 :     //if ( Result != TRUE ) 
; 1088 :     //    return FALSE;
; 1089 : 
; 1090 :     /* Initialize Transmit Status Queue limit pointer */
; 1091 :     pCD->pTxStatLimit = pCD->pTxStat + TXSTATCOUNT;

  0023c	e59d3004	 ldr         r3, [sp, #4]
  00240	e283302c	 add         r3, r3, #0x2C
  00244	e5933000	 ldr         r3, [r3]
  00248	e2832040	 add         r2, r3, #0x40
  0024c	e59d3004	 ldr         r3, [sp, #4]
  00250	e2833030	 add         r3, r3, #0x30
  00254	e5832000	 str         r2, [r3]

; 1092 : 
; 1093 :     /* Initialize the Transmit Status Queue registers */
; 1094 :     WriteDWord( OpReg_TxSBA, pCD->TxStatPhysAddr );

  00258	e59d3004	 ldr         r3, [sp, #4]
  0025c	e2831038	 add         r1, r3, #0x38
  00260	e59f32c8	 ldr         r3, [pc, #0x2C8]
  00264	e5933000	 ldr         r3, [r3]
  00268	e28320c0	 add         r2, r3, #0xC0
  0026c	e5913000	 ldr         r3, [r1]
  00270	e5823000	 str         r3, [r2]

; 1095 :     WriteWord(  OpReg_TxSBL, sizeof(TxStat_t)*TXSTATCOUNT );

  00274	e59f32b4	 ldr         r3, [pc, #0x2B4]
  00278	e5933000	 ldr         r3, [r3]
  0027c	e28320c4	 add         r2, r3, #0xC4
  00280	e3a03040	 mov         r3, #0x40
  00284	e1c230b0	 strh        r3, [r2]

; 1096 :     WriteDWord( OpReg_TxSTH, 0x00040002 );

  00288	e59f32a0	 ldr         r3, [pc, #0x2A0]
  0028c	e5933000	 ldr         r3, [r3]
  00290	e28320dc	 add         r2, r3, #0xDC
  00294	e3a03701	 mov         r3, #1, 14
  00298	e3833002	 orr         r3, r3, #2
  0029c	e5823000	 str         r3, [r2]

; 1097 : 
; 1098 :     /* Allocate receive buffers and initialize the Receive Descriptor Queue */
; 1099 :     for ( Index=0; Index<RXDESCCOUNT; Index++ )

  002a0	e3a03000	 mov         r3, #0
  002a4	e1cd30b0	 strh        r3, [sp]
  002a8	ea000004	 b           |$L15702|
  002ac		 |$L15703|
  002ac	e1dd30b0	 ldrh        r3, [sp]
  002b0	e2833001	 add         r3, r3, #1
  002b4	e1a03803	 mov         r3, r3, lsl #16
  002b8	e1a03823	 mov         r3, r3, lsr #16
  002bc	e1cd30b0	 strh        r3, [sp]
  002c0		 |$L15702|
  002c0	e1dd30b0	 ldrh        r3, [sp]
  002c4	e3530020	 cmp         r3, #0x20
  002c8	aa000055	 bge         |$L15704|

; 1100 :     {
; 1101 :         /* Allocate shared memory for a receive buffer */
; 1102 :         pCD->R

⌨️ 快捷键说明

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