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

📄 cs8950.cod

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

; 895  :     PCD  pCD;
; 896  :     BOOL Result;
; 897  :     union
; 898  :     {
; 899  :       WORD  Word[2];
; 900  :       DWORD DWord;
; 901  :     } PHYID;
; 902  : 
; 903  :     pCD = (PCD)pChip->pData;

  00010	e59d3020	 ldr         r3, [sp, #0x20]
  00014	e283300c	 add         r3, r3, #0xC
  00018	e5933000	 ldr         r3, [r3]
  0001c	e58d3008	 str         r3, [sp, #8]

; 904  : 
; 905  :     /* Read PHY ID register 1 */
; 906  :     Result = ReadPHY( pChip, PHYAddress, PHYReg_PHYIDR1, &PHYID.Word[1] );

  00020	e28d3000	 add         r3, sp, #0
  00024	e2833002	 add         r3, r3, #2
  00028	e3a02002	 mov         r2, #2
  0002c	e1dd12b4	 ldrh        r1, [sp, #0x24]
  00030	e59d0020	 ldr         r0, [sp, #0x20]
  00034	eb000000	 bl          ReadPHY
  00038	e58d0010	 str         r0, [sp, #0x10]
  0003c	e59d3010	 ldr         r3, [sp, #0x10]
  00040	e58d3004	 str         r3, [sp, #4]

; 907  :     if ( Result != TRUE )

  00044	e59d3004	 ldr         r3, [sp, #4]
  00048	e3530001	 cmp         r3, #1
  0004c	0a000002	 beq         |$L15630|

; 908  :     {
; 909  :         return FALSE;

  00050	e3a03000	 mov         r3, #0
  00054	e58d300c	 str         r3, [sp, #0xC]
  00058	ea000091	 b           |$L15622|
  0005c		 |$L15630|

; 910  : 	}
; 911  : 
; 912  :      /* Read PHY ID register 2 */
; 913  :      Result = ReadPHY( pChip, PHYAddress, PHYReg_PHYIDR2, &PHYID.Word[0] );

  0005c	e28d3000	 add         r3, sp, #0
  00060	e3a02003	 mov         r2, #3
  00064	e1dd12b4	 ldrh        r1, [sp, #0x24]
  00068	e59d0020	 ldr         r0, [sp, #0x20]
  0006c	eb000000	 bl          ReadPHY
  00070	e58d0014	 str         r0, [sp, #0x14]
  00074	e59d3014	 ldr         r3, [sp, #0x14]
  00078	e58d3004	 str         r3, [sp, #4]

; 914  :      if ( Result != TRUE )

  0007c	e59d3004	 ldr         r3, [sp, #4]
  00080	e3530001	 cmp         r3, #1
  00084	0a000002	 beq         |$L15631|

; 915  : 	 {
; 916  :         return FALSE;

  00088	e3a03000	 mov         r3, #0
  0008c	e58d300c	 str         r3, [sp, #0xC]
  00090	ea000083	 b           |$L15622|
  00094		 |$L15631|

; 917  : 	 }
; 918  : 
; 919  : 	 /* Not a Valid PhyID */
; 920  : 	 if (PHYID.DWord == 0xffffffff || PHYID.DWord == 0x0)

  00094	e59d3000	 ldr         r3, [sp]
  00098	e3730001	 cmn         r3, #1
  0009c	0a000002	 beq         |$L15633|
  000a0	e59d3000	 ldr         r3, [sp]
  000a4	e3530000	 cmp         r3, #0
  000a8	1a000002	 bne         |$L15632|
  000ac		 |$L15633|

; 921  : 	 {
; 922  :         return FALSE;

  000ac	e3a03000	 mov         r3, #0
  000b0	e58d300c	 str         r3, [sp, #0xC]
  000b4	ea00007a	 b           |$L15622|
  000b8		 |$L15632|

; 923  : 	 }
; 924  : 
; 925  :       /* Check if it is a PHY that we know about */
; 926  :      if ( ((PHYID.DWord & PHYID_OUI_Mask)   == PHYID_OUI_National) &&
; 927  :          ((PHYID.DWord & PHYID_Model_Mask) == PHYID_Model_DP83840) )

  000b8	e59d2000	 ldr         r2, [sp]
  000bc	e3a03101	 mov         r3, #1, 2
  000c0	e2433b01	 sub         r3, r3, #1, 22
  000c4	e0022003	 and         r2, r2, r3
  000c8	e3a03202	 mov         r3, #2, 4
  000cc	e3833b17	 orr         r3, r3, #0x17, 22
  000d0	e1520003	 cmp         r2, r3
  000d4	1a000007	 bne         |$L15634|
  000d8	e59d3000	 ldr         r3, [sp]
  000dc	e3130e3f	 tst         r3, #0x3F, 28
  000e0	1a000004	 bne         |$L15634|

; 928  : 	 {
; 929  :          pCD->PHYType = PHY_TYPE_NATIONAL;

  000e4	e59d3008	 ldr         r3, [sp, #8]
  000e8	e2832f72	 add         r2, r3, #0x72, 30
  000ec	e3a03001	 mov         r3, #1
  000f0	e5c23000	 strb        r3, [r2]

; 930  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected National PHY at address: %x\r\n"), PHYAddress) );
; 931  : 	 }
; 932  :      else if ( ((PHYID.DWord & PHYID_OUI_Mask)   == PHYID_OUI_Crystal) &&

  000f4	ea00005c	 b           |$L15636|
  000f8		 |$L15634|

; 933  :               ((PHYID.DWord & PHYID_Model_Mask) == PHYID_Model_CS8952) )

  000f8	e59d2000	 ldr         r2, [sp]
  000fc	e3a03101	 mov         r3, #1, 2
  00100	e2433b01	 sub         r3, r3, #1, 22
  00104	e0022003	 and         r2, r2, r3
  00108	e3a0381a	 mov         r3, #0x1A, 16
  0010c	e3833a02	 orr         r3, r3, #2, 20
  00110	e1520003	 cmp         r2, r3
  00114	1a000008	 bne         |$L15637|
  00118	e59d3000	 ldr         r3, [sp]
  0011c	e2033e3f	 and         r3, r3, #0x3F, 28
  00120	e3530c02	 cmp         r3, #2, 24
  00124	1a000004	 bne         |$L15637|

; 934  : 	 {
; 935  :          pCD->PHYType = PHY_TYPE_CRYSTAL;

  00128	e59d3008	 ldr         r3, [sp, #8]
  0012c	e2832f72	 add         r2, r3, #0x72, 30
  00130	e3a03002	 mov         r3, #2
  00134	e5c23000	 strb        r3, [r2]

; 936  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Crystal PHY at address: %x\r\n"), PHYAddress) );
; 937  : 	 }
; 938  :      else if ( ((PHYID.DWord & PHYID_OUI_Mask)   == PHYID_OUI_ICS) &&

  00138	ea00004b	 b           |$L15639|
  0013c		 |$L15637|

; 939  :              ((PHYID.DWord & PHYID_Model_Mask) == PHYID_Model_ICS1890) )

  0013c	e59d2000	 ldr         r2, [sp]
  00140	e3a03101	 mov         r3, #1, 2
  00144	e2433b01	 sub         r3, r3, #1, 22
  00148	e0022003	 and         r2, r2, r3
  0014c	e3a03957	 mov         r3, #0x57, 18
  00150	e3833b0d	 orr         r3, r3, #0xD, 22
  00154	e1520003	 cmp         r2, r3
  00158	1a000008	 bne         |$L15640|
  0015c	e59d3000	 ldr         r3, [sp]
  00160	e2033e3f	 and         r3, r3, #0x3F, 28
  00164	e3530020	 cmp         r3, #0x20
  00168	1a000004	 bne         |$L15640|

; 940  : 	 {
; 941  :          pCD->PHYType = PHY_TYPE_ICS;

  0016c	e59d3008	 ldr         r3, [sp, #8]
  00170	e2832f72	 add         r2, r3, #0x72, 30
  00174	e3a03003	 mov         r3, #3
  00178	e5c23000	 strb        r3, [r2]

; 942  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected ICS1890 PHY at address: %x\r\n"), PHYAddress) );
; 943  : 	 }
; 944  :      else if ( ((PHYID.DWord & PHYID_OUI_Mask)   == PHYID_OUI_BROADCOM) &&

  0017c	ea00003a	 b           |$L15642|
  00180		 |$L15640|

; 945  :              ((PHYID.DWord & PHYID_Model_Mask) == PHYID_Model_BCM5201) )

  00180	e59d2000	 ldr         r2, [sp]
  00184	e3a03101	 mov         r3, #1, 2
  00188	e2433b01	 sub         r3, r3, #1, 22
  0018c	e0022003	 and         r2, r2, r3
  00190	e3a03501	 mov         r3, #1, 10
  00194	e3833a06	 orr         r3, r3, #6, 20
  00198	e1520003	 cmp         r2, r3
  0019c	1a00000a	 bne         |$L15643|
  001a0	e59d3000	 ldr         r3, [sp]
  001a4	e2032e3f	 and         r2, r3, #0x3F, 28
  001a8	e3a03e21	 mov         r3, #0x21, 28
  001ac	e3833002	 orr         r3, r3, #2
  001b0	e1520003	 cmp         r2, r3
  001b4	1a000004	 bne         |$L15643|

; 946  : 	 {                                                                  
; 947  :          pCD->PHYType = PHY_TYPE_BROADCOM;                              

  001b8	e59d3008	 ldr         r3, [sp, #8]
  001bc	e2832f72	 add         r2, r3, #0x72, 30
  001c0	e3a03004	 mov         r3, #4
  001c4	e5c23000	 strb        r3, [r2]

; 948  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Broadcom PHY at address: %x\r\n"), PHYAddress) );
; 949  : 	 }                                                                  
; 950  :      else if ( ((PHYID.DWord & PHYID_OUI_Mask)   == PHYID_OUI_MICREL) &&

  001c8	ea000027	 b           |$L15645|
  001cc		 |$L15643|

; 951  :           ((PHYID.DWord & PHYID_Model_Mask) == PHYID_Model_KS8721BL) )

  001cc	e59d2000	 ldr         r2, [sp]
  001d0	e3a03101	 mov         r3, #1, 2
  001d4	e2433b01	 sub         r3, r3, #1, 22
  001d8	e0022003	 and         r2, r2, r3
  001dc	e3a03822	 mov         r3, #0x22, 16
  001e0	e3833b05	 orr         r3, r3, #5, 22
  001e4	e1520003	 cmp         r2, r3
  001e8	1a000008	 bne         |$L15646|
  001ec	e59d3000	 ldr         r3, [sp]
  001f0	e2033e3f	 and         r3, r3, #0x3F, 28
  001f4	e3530e21	 cmp         r3, #0x21, 28
  001f8	1a000004	 bne         |$L15646|

; 952  : 	 {                                                                  
; 953  :          pCD->PHYType = PHY_TYPE_MICREL_8721BL;                              

  001fc	e59d3008	 ldr         r3, [sp, #8]
  00200	e2832f72	 add         r2, r3, #0x72, 30
  00204	e3a03006	 mov         r3, #6
  00208	e5c23000	 strb        r3, [r2]

; 954  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Micrel KS8721BL PHY at address: %x\r\n"), PHYAddress ));
; 955  : 	 }
; 956  :      else if (PHYID.DWord == 0x00406212)

  0020c	ea000016	 b           |$L15648|
  00210		 |$L15646|
  00210	e59d2000	 ldr         r2, [sp]
  00214	e59f3098	 ldr         r3, [pc, #0x98]
  00218	e1520003	 cmp         r2, r3
  0021c	1a000004	 bne         |$L15649|

; 957  : 	 {
; 958  :          pCD->PHYType = PHY_TYPE_BROADCOM;

  00220	e59d3008	 ldr         r3, [sp, #8]
  00224	e2832f72	 add         r2, r3, #0x72, 30
  00228	e3a03004	 mov         r3, #4
  0022c	e5c23000	 strb        r3, [r2]

; 959  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Broadcom PHY at address: %x\r\n"), PHYAddress) );
; 960  : 	 }
; 961  :      else if (PHYID.DWord == 0x78100003)

  00230	ea00000d	 b           |$L15651|
  00234		 |$L15649|
  00234	e59d2000	 ldr         r2, [sp]
  00238	e3a0310e	 mov         r3, #0xE, 2
  0023c	e243367f	 sub         r3, r3, #0x7F, 12
  00240	e1520003	 cmp         r2, r3
  00244	1a000004	 bne         |$L15652|

; 962  : 	 {
; 963  :          pCD->PHYType = PHY_TYPE_LEVEL1; /* clc */

  00248	e59d3008	 ldr         r3, [sp, #8]
  0024c	e2832f72	 add         r2, r3, #0x72, 30
  00250	e3a03005	 mov         r3, #5
  00254	e5c23000	 strb        r3, [r2]

; 964  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Level1 PHY at address: %x\r\n"), PHYAddress) );
; 965  : 	 } else

  00258	ea000003	 b           |$L15654|
  0025c		 |$L15652|

; 966  : 	 {
; 967  :          pCD->PHYType = PHY_TYPE_UNKNOWN; 

  0025c	e59d3008	 ldr         r3, [sp, #8]
  00260	e2832f72	 add         r2, r3, #0x72, 30
  00264	e3a030ff	 mov         r3, #0xFF
  00268	e5c23000	 strb        r3, [r2]
  0026c		 |$L15654|
  0026c		 |$L15651|
  0026c		 |$L15648|
  0026c		 |$L15645|
  0026c		 |$L15642|
  0026c		 |$L15639|
  0026c		 |$L15636|

; 968  :          DEBUGMSG(ZONE_INIT,(TEXT("Detected Unknown PHY at address: %x\r\n"), PHYAddress) );
; 969  : 	 }
; 970  :  
; 971  :      /* Save the address of the PHY */
; 972  :      pCD->PHYAddress = PHYAddress;

  0026c	e59d3008	 ldr         r3, [sp, #8]
  00270	e2833c01	 add         r3, r3, #1, 24
  00274	e28320ca	 add         r2, r3, #0xCA
  00278	e1dd32b4	 ldrh        r3, [sp, #0x24]
  0027c	e1c230b0	 strh        r3, [r2]

; 973  : 
; 974  :      /* Get the PHY revision level */
; 975  :      pCD->PHYRevision = (BYTE)(PHYID.DWord & PHYID_Revision_Mask);

  00280	e59d3000	 ldr         r3, [sp]
  00284	e203300f	 and         r3, r3, #0xF
  00288	e20320ff	 and         r2, r3, #0xFF
  0028c	e59d3008	 ldr         r3, [sp, #8]
  00290	e2833c01	 add         r3, r3, #1, 24
  00294	e28330c9	 add         r3, r3, #0xC9
  00298	e5c32000	 strb        r2, [r3]

; 976  : 
; 977  :      return TRUE;

  0029c	e3a03001	 mov         r3, #1
  002a0	e58d300c	 str         r3, [sp, #0xC]
  002a4		 |$L15622|

; 908  :     {
; 909  :         return FALSE;

  002a4	e59d000c	 ldr         r0, [sp, #0xC]

; 978  : }

  002a8	e28dd018	 add         sp, sp, #0x18
  002ac	e89d6000	 ldmia       sp, {sp, lr}
  002b0	e12fff1e	 bx          lr
  002b4		 |$L16285|
  002b4	00406212	 DCD         0x406212
  002b8		 |$M16281|

			 ENDP  ; |Check_PHY_ID_Type|

	EXPORT	|??_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@| [ DATA ] ; `string'
	IMPORT	|NKDbgPrintfW|

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

  00000			 AREA	 |.pdata$$FindPHYType|, PDATA, SELECTION=5, ASSOC=|.text| { |FindPHYType| } ; comdat associative
|$T16292| DCD	|$L16291|
	DCD	0x40003304

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_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@| DCB "E"
	DCB	0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, ":", 0x0, " "
	DCB	0x0, "E", 0x0, "t", 0x0, "h", 0x0, "e", 0x0, "r", 0x0, "n"
	DCB	0x0, "e", 0x0, "t", 0x0, "M", 0x0, "A", 0x0, "C", 0x0, ":"
	DCB	0x0, " ", 0x0, "A", 0x0, " ", 0x0, "P", 0x0, "H", 0x0, "Y"
	DCB	0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "n", 0x0, "o"
	DCB	0x0, "t", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "u", 0x0, "n"
	DCB	0x0, "d", 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ods

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

  00000		 |FindPHYType| PROC

; 986  : {

  00000		 |$L16291|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd018	 sub         sp, sp, #0x18
  00010		 |$M16289|

; 987  :     PCD  pCD;
; 988  :     WORD PHYAddress;
; 989  :     BOOL IsPHYFound;
; 990  : 
; 991  :     pCD = (PCD)pChip->pData;

  00010	e59d3020	 ldr         r3, [sp, #0x20]
  00014	e283300c	 add         r3, r3, #0xC
  00018	e5933000	 ldr         r3, [r3]
  0001c	e58d3008	 str         r3, [sp, #8]

; 992  : 
; 993  :     /* Search for a known type of PHY */
; 994  :     for ( PHYAddress=1; PHYAddress<=31; PHYAddress++ )

  00020	e3a03001	 mov         r3, #1
  00024	e1cd30b0	 strh        r3, [sp]
  00028	ea000004	 b           |$L15664|
  0002c		 |$L15665|
  0002c	e1dd30b0	 ldrh        r3, [sp]
  00030	e2833001	 add         r3, r3, #1
  00034	e1a03803	 mov         r3, r3, lsl #16
  00038	e1a03823	 mov         r3, r3, lsr #16
  0003c	e1cd30b0	 strh        r3, [sp]
  00040		 |$L15664|
  00040	e1dd30b0	 ldrh        r3, [sp]
  00044	e353001f	 cmp         r3, #0x1F
  00048	ca00000a	 bgt         |$L15666|

; 995  :     {
; 996  :       IsPHYFound=Check_PHY_ID_Type(pChip, PHYAddress);

⌨️ 快捷键说明

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