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

📄 pcmciasupport.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 3 页
字号:
; 257  : 
; 258  :     
; 259  :     //if(*PCMCIA_PCCONFIG & (PCMCIA_PCCONFIG_MCD2 | PCMCIA_PCCONFIG_MCD1))
; 260  :     if(ulVS &( GPIOF_PCMCIA_CD1 | GPIOF_PCMCIA_CD2))

  00024	e59d3000	 ldr         r3, [sp]
  00028	e3130006	 tst         r3, #6
  0002c	0a000004	 beq         |$L38114|

; 261  :     {
; 262  :         EdbgOutputDebugString("Card Voltage: Card bus, Unsupported card.\n");

  00030	e59f00b4	 ldr         r0, [pc, #0xB4]
  00034	eb000000	 bl          EdbgOutputDebugString

; 263  :         return 0;

  00038	e3a03000	 mov         r3, #0
  0003c	e58d3004	 str         r3, [sp, #4]
  00040	ea000021	 b           |$L38110|
  00044		 |$L38114|

; 264  :     }
; 265  : 
; 266  :     //ulVS                = *PCMCIA_PCCONFIG & (PCMCIA_PCCONFIG_VS2FBK | PCMCIA_PCCONFIG_VS1FBK);
; 267  :     
; 268  :     else if(ulVS == 0)

  00044	e59d3000	 ldr         r3, [sp]
  00048	e3530000	 cmp         r3, #0
  0004c	1a000004	 bne         |$L38117|

; 269  :     {
; 270  :         EdbgOutputDebugString("Card Voltage: x.x 3.3v and 5v Card.\n");

  00050	e59f0090	 ldr         r0, [pc, #0x90]
  00054	eb000000	 bl          EdbgOutputDebugString

; 271  :         return 33;

  00058	e3a03021	 mov         r3, #0x21
  0005c	e58d3004	 str         r3, [sp, #4]
  00060	ea000019	 b           |$L38110|
  00064		 |$L38117|

; 272  :     }
; 273  :     else if (ulVS == GPIOF_PCMCIA_VS1)

  00064	e59d3000	 ldr         r3, [sp]
  00068	e3530020	 cmp         r3, #0x20
  0006c	1a000004	 bne         |$L38120|

; 274  :     {
; 275  :         EdbgOutputDebugString("Card Voltage: x.xv (Not supported).\n");

  00070	e59f006c	 ldr         r0, [pc, #0x6C]
  00074	eb000000	 bl          EdbgOutputDebugString

; 276  :         return 0;

  00078	e3a03000	 mov         r3, #0
  0007c	e58d3004	 str         r3, [sp, #4]
  00080	ea000011	 b           |$L38110|
  00084		 |$L38120|

; 277  :     }
; 278  :     else if (ulVS == GPIOF_PCMCIA_VS2)

  00084	e59d3000	 ldr         r3, [sp]
  00088	e3530080	 cmp         r3, #0x80
  0008c	1a000004	 bne         |$L38123|

; 279  :     {
; 280  :         EdbgOutputDebugString("Card Voltage: 3.3v.\n");

  00090	e59f0048	 ldr         r0, [pc, #0x48]
  00094	eb000000	 bl          EdbgOutputDebugString

; 281  :         return 33;

  00098	e3a03021	 mov         r3, #0x21
  0009c	e58d3004	 str         r3, [sp, #4]
  000a0	ea000009	 b           |$L38110|
  000a4		 |$L38123|

; 282  :     }
; 283  :     else if (ulVS == (GPIOF_PCMCIA_VS1 | GPIOF_PCMCIA_VS2))

  000a4	e59d3000	 ldr         r3, [sp]
  000a8	e35300a0	 cmp         r3, #0xA0
  000ac	1a000004	 bne         |$L38126|

; 284  :     {
; 285  :         EdbgOutputDebugString("Card Voltage: 5v.\n");

  000b0	e59f0024	 ldr         r0, [pc, #0x24]
  000b4	eb000000	 bl          EdbgOutputDebugString

; 286  :         return 50;

  000b8	e3a03032	 mov         r3, #0x32
  000bc	e58d3004	 str         r3, [sp, #4]
  000c0	ea000001	 b           |$L38110|
  000c4		 |$L38126|

; 287  :     }
; 288  :     
; 289  :     return 0;

  000c4	e3a03000	 mov         r3, #0
  000c8	e58d3004	 str         r3, [sp, #4]
  000cc		 |$L38110|

; 263  :         return 0;

  000cc	e59d0004	 ldr         r0, [sp, #4]

; 290  :     
; 291  : }

  000d0	e28dd008	 add         sp, sp, #8
  000d4	e49de004	 ldr         lr, [sp], #4
  000d8	e12fff1e	 bx          lr
  000dc		 |$L38263|
  000dc	00000000	 DCD         |??_C@_0BD@PJNOJFDC@Card?5Voltage?3?55v?4?6?$AA@|
  000e0	00000000	 DCD         |??_C@_0BF@JPLNLKLD@Card?5Voltage?3?53?43v?4?6?$AA@|
  000e4	00000000	 DCD         |??_C@_0CF@NFAAFMBL@Card?5Voltage?3?5x?4xv?5?$CINot?5supporte@|
  000e8	00000000	 DCD         |??_C@_0CF@KMCAEMEC@Card?5Voltage?3?5x?4x?53?43v?5and?55v?5Ca@|
  000ec	00000000	 DCD         |??_C@_0CL@BKBHLIKE@Card?5Voltage?3?5Card?5bus?0?5Unsuppor@|
  000f0	80840030	 DCD         0x80840030
  000f4		 |$M38259|

			 ENDP  ; |detectVolts|

	IMPORT	|__rt_udiv|

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

  00000			 AREA	 |.pdata$$CalculatePcmciaTimings|, PDATA, SELECTION=5, ASSOC=|.text| { |CalculatePcmciaTimings| } ; comdat associative
|$T38271| DCD	|$L38270|
	DCD	0x40008604
; Function compile flags: /Ods

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

  00000		 |CalculatePcmciaTimings| PROC

; 325  : {

  00000		 |$L38270|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd02c	 sub         sp, sp, #0x2C
  00010		 |$M38268|

; 326  :     ULONG   ulAddressTime;
; 327  :     ULONG   ulHoldTime;
; 328  :     ULONG   ulAccessTime;
; 329  :     ULONG   ulSMC;
; 330  :     //ULONG   ulHCLK = REAL_HCLOCK;
; 331  :     ULONG   ulHCLK = 92000000;

  00010	e59f31fc	 ldr         r3, [pc, #0x1FC]
  00014	e58d300c	 str         r3, [sp, #0xC]

; 332  :     ULONG   ulHPeriod;
; 333  :     ULONG   ulHAccessTime;
; 334  :     ULONG   ulHAddressTime;
; 335  :     ULONG   ulHHoldTime;
; 336  :     
; 337  :     switch(NsSpeed)

  00018	e59d3034	 ldr         r3, [sp, #0x34]
  0001c	e58d3028	 str         r3, [sp, #0x28]
  00020	e59d3028	 ldr         r3, [sp, #0x28]
  00024	e3530000	 cmp         r3, #0
  00028	0a000038	 beq         |$L38151|
  0002c	e59d3028	 ldr         r3, [sp, #0x28]
  00030	e3530064	 cmp         r3, #0x64
  00034	0a00002e	 beq         |$L38150|
  00038	e59d3028	 ldr         r3, [sp, #0x28]
  0003c	e3530096	 cmp         r3, #0x96
  00040	0a000024	 beq         |$L38149|
  00044	e59d3028	 ldr         r3, [sp, #0x28]
  00048	e35300c8	 cmp         r3, #0xC8
  0004c	0a00001a	 beq         |$L38148|
  00050	e59d3028	 ldr         r3, [sp, #0x28]
  00054	e35300fa	 cmp         r3, #0xFA
  00058	0a000010	 beq         |$L38147|
  0005c	e59d3028	 ldr         r3, [sp, #0x28]
  00060	e3530f4b	 cmp         r3, #0x4B, 30
  00064	0a000006	 beq         |$L38146|

; 338  :     {
; 339  :         case 600:
; 340  :         default:
; 341  :             ulAccessTime    = 600;

  00068	e3a03f96	 mov         r3, #0x96, 30
  0006c	e58d3014	 str         r3, [sp, #0x14]

; 342  :             ulAddressTime   = 100;

  00070	e3a03064	 mov         r3, #0x64
  00074	e58d3000	 str         r3, [sp]

; 343  :             ulHoldTime      = 35;

  00078	e3a03023	 mov         r3, #0x23
  0007c	e58d3018	 str         r3, [sp, #0x18]

; 344  :             break;

  00080	ea000028	 b           |$L38142|
  00084		 |$L38146|

; 345  :             
; 346  :         case 300:
; 347  :             ulAccessTime    = 300;

  00084	e3a03f4b	 mov         r3, #0x4B, 30
  00088	e58d3014	 str         r3, [sp, #0x14]

; 348  :             ulAddressTime   = 30;

  0008c	e3a0301e	 mov         r3, #0x1E
  00090	e58d3000	 str         r3, [sp]

; 349  :             ulHoldTime      = 20;

  00094	e3a03014	 mov         r3, #0x14
  00098	e58d3018	 str         r3, [sp, #0x18]

; 350  :             break;

  0009c	ea000021	 b           |$L38142|
  000a0		 |$L38147|

; 351  :             
; 352  :         case 250:
; 353  :             ulAccessTime    = 250;

  000a0	e3a030fa	 mov         r3, #0xFA
  000a4	e58d3014	 str         r3, [sp, #0x14]

; 354  :             ulAddressTime   = 30;

  000a8	e3a0301e	 mov         r3, #0x1E
  000ac	e58d3000	 str         r3, [sp]

; 355  :             ulHoldTime      = 20;

  000b0	e3a03014	 mov         r3, #0x14
  000b4	e58d3018	 str         r3, [sp, #0x18]

; 356  :             break;

  000b8	ea00001a	 b           |$L38142|
  000bc		 |$L38148|

; 357  :             
; 358  :         case 200:
; 359  :             ulAccessTime    = 200;

  000bc	e3a030c8	 mov         r3, #0xC8
  000c0	e58d3014	 str         r3, [sp, #0x14]

; 360  :             ulAddressTime   = 20;

  000c4	e3a03014	 mov         r3, #0x14
  000c8	e58d3000	 str         r3, [sp]

; 361  :             ulHoldTime      = 20;

  000cc	e3a03014	 mov         r3, #0x14
  000d0	e58d3018	 str         r3, [sp, #0x18]

; 362  :             break;

  000d4	ea000013	 b           |$L38142|
  000d8		 |$L38149|

; 363  :             
; 364  :         case 150:
; 365  :             ulAccessTime    = 150;

  000d8	e3a03096	 mov         r3, #0x96
  000dc	e58d3014	 str         r3, [sp, #0x14]

; 366  :             ulAddressTime   = 20;

  000e0	e3a03014	 mov         r3, #0x14
  000e4	e58d3000	 str         r3, [sp]

; 367  :             ulHoldTime      = 20;

  000e8	e3a03014	 mov         r3, #0x14
  000ec	e58d3018	 str         r3, [sp, #0x18]

; 368  :             break;

  000f0	ea00000c	 b           |$L38142|
  000f4		 |$L38150|

; 369  :             
; 370  :         case 100:
; 371  :             ulAccessTime    = 100;

  000f4	e3a03064	 mov         r3, #0x64
  000f8	e58d3014	 str         r3, [sp, #0x14]

; 372  :             ulAddressTime   = 10;

  000fc	e3a0300a	 mov         r3, #0xA
  00100	e58d3000	 str         r3, [sp]

; 373  :             ulHoldTime      = 15;

  00104	e3a0300f	 mov         r3, #0xF
  00108	e58d3018	 str         r3, [sp, #0x18]

; 374  :             break;

  0010c	ea000005	 b           |$L38142|
  00110		 |$L38151|

; 375  :             
; 376  :         //
; 377  :         // Special case for I/O all access.
; 378  :         //            
; 379  :         case 0:
; 380  :             ulAccessTime    = 165;

  00110	e3a030a5	 mov         r3, #0xA5
  00114	e58d3014	 str         r3, [sp, #0x14]

; 381  :             ulAddressTime   = 70;

  00118	e3a03046	 mov         r3, #0x46
  0011c	e58d3000	 str         r3, [sp]

; 382  :             ulHoldTime      = 20;

  00120	e3a03014	 mov         r3, #0x14
  00124	e58d3018	 str         r3, [sp, #0x18]
  00128		 |$L38142|

; 383  :             break;
; 384  :     }
; 385  : 
; 386  :     //
; 387  :     // Add in a board delay.
; 388  :     //
; 389  :     ulAccessTime    += PCMCIA_BOARD_DELAY;

  00128	e59d3014	 ldr         r3, [sp, #0x14]
  0012c	e2833028	 add         r3, r3, #0x28
  00130	e58d3014	 str         r3, [sp, #0x14]

; 390  :     ulAddressTime   += PCMCIA_BOARD_DELAY;

  00134	e59d3000	 ldr         r3, [sp]
  00138	e2833028	 add         r3, r3, #0x28
  0013c	e58d3000	 str         r3, [sp]

; 391  :     ulHoldTime      += PCMCIA_BOARD_DELAY;

  00140	e59d3018	 ldr         r3, [sp, #0x18]
  00144	e2833028	 add         r3, r3, #0x28
  00148	e58d3018	 str         r3, [sp, #0x18]

; 392  :     
; 393  :     //
; 394  :     // This gives us the period in nanosecods.
; 395  :     //
; 396  :     // = 1000000000 (ns/s) / HCLK (cycle/s)
; 397  :     //
; 398  :     // = (ns/cycle)
; 399  :     //
; 400  :     ulHPeriod       = (1000000000/ ulHCLK);

  0014c	e59d000c	 ldr         r0, [sp, #0xC]
  00150	e59f10b8	 ldr         r1, [pc, #0xB8]
  00154	eb000000	 bl          __rt_udiv
  00158	e58d0010	 str         r0, [sp, #0x10]

; 401  :     
; 402  :     //
; 403  :     // Find the number of hclk cycles for cycle time, address time and
; 404  :     // hold time.
; 405  :     //
; 406  :     // = ulAccessTime   (ns) / ulHPeriod (ns/Cycles)
; 407  :     // = ulAddressTime (ns) / ulHPeriod (ns/Cycles)
; 408  :     // = ulHoldTime    (ns) / ulHPeriod (ns/Cycles)
; 409  :     //
; 410  :     ulHAccessTime    = ulAccessTime / ulHPeriod;

  0015c	e59d1014	 ldr         r1, [sp, #0x14]
  00160	e59d0010	 ldr         r0, [sp, #0x10]
  00164	eb000000	 bl          __rt_udiv
  00168	e58d0004	 str         r0, [sp, #4]

; 411  :     if(ulHAccessTime > 0xFF)

  0016c	e59d3004	 ldr         r3, [sp, #4]
  00170	e35300ff	 cmp         r3, #0xFF
  00174	9a000001	 bls         |$L38152|

; 412  :         ulHAccessTime  = 0xFF;

  00178	e3a030ff	 mov         r3, #0xFF
  0017c	e58d3004	 str         r3, [sp, #4]
  00180		 |$L38152|

; 413  :     
; 414  :     ulHAddressTime  = ulAddressTime / ulHPeriod;

  00180	e59d1000	 ldr         r1, [sp]
  00184	e59d0010	 ldr         r0, [sp, #0x10]
  00188	eb000000	 bl          __rt_udiv
  0018c	e58d001c	 str         r0, [sp, #0x1C]

; 415  :     if(ulHAddressTime > 0xFF)

  00190	e59d301c	 ldr         r3, [sp, #0x1C]
  00194	e35300ff	 cmp         r3, #0xFF
  00198	9a000001	 bls         |$L38153|

; 416  :         ulHAddressTime = 0xFF;

  0019c	e3a030ff	 mov         r3, #0xFF
  001a0	e58d301c	 str         r3, [sp, #0x1C]
  001a4		 |$L38153|

; 417  :             
; 418  :     ulHHoldTime     = (ulHoldTime /ulHPeriod) + 1;

  001a4	e59d1018	 ldr         r1, [sp, #0x18]
  001a8	e59d0010	 ldr         r0, [sp, #0x10]
  001ac	eb000000	 bl          __rt_udiv
  001b0	e2803001	 add         r3, r0, #1
  001b4	e58d3020	 str         r3, [sp, #0x20]

; 419  :     if(ulHHoldTime >0xF)

  001b8	e59d3020	 ldr         r3, [sp, #0x20]
  001bc	e353000f	 cmp         r3, #0xF
  001c0	9a000001	 bls         |$L38154|

; 420  :         ulHHoldTime     = 0xF;

  001c4	e3a0300f	 mov         r3, #0xF
  001c8	e58d3020	 str         r3, [sp, #0x20]
  001cc		 |$L38154|

; 421  : 
; 422  :     ulSMC = (PCCONFIG_ADDRESSTIME_MASK & (ulHAddressTime << PCCONFIG_ADDRESSTIME_SHIFT)) |
; 423  :             (PCCONFIG_HOLDTIME_MASK & (ulHHoldTime << PCCONFIG_HOLDTIME_SHIFT)) |
; 424  :             (PCCONFIG_ACCESSTIME_MASK & (ulHAccessTime << PCCONFIG_ACCESSTIME_SHIFT)) ;

  001cc	e59d301c	 ldr         r3, [sp, #0x1C]
  001d0	e20320ff	 and         r2, r3, #0xFF
  001d4	e59d3020	 ldr         r3, [sp, #0x20]
  001d8	e1a03403	 mov         r3, r3, lsl #8
  001dc	e2033c0f	 and         r3, r3, #0xF, 24
  001e0	e1822003	 orr         r2, r2, r3
  001e4	e59d3004	 ldr         r3, [sp, #4]
  001e8	e1a03803	 mov         r3, r3, lsl #16
  001ec	e20338ff	 and         r3, r3, #0xFF, 16
  001f0	e1823003	 orr         r3, r2, r3
  001f4	e58d3008	 str         r3, [sp, #8]

; 425  : 
; 426  :     return ulSMC;    

  001f8	e59d3008	 ldr         r3, [sp, #8]
  001fc	e58d3024	 str         r3, [sp, #0x24]
  00200	e59d0024	 ldr         r0, [sp, #0x24]

; 427  : }

  00204	e28dd02c	 add         sp, sp, #0x2C
  00208	e89d6000	 ldmia       sp, {sp, lr}
  0020c	e12fff1e	 bx          lr
  00210		 |$L38273|
  00210	3b9aca00	 DCD         0x3b9aca00
  00214	057bcf00	 DCD         0x57bcf00
  00218		 |$M38269|

			 ENDP  ; |CalculatePcmciaTimings|

	END

⌨️ 快捷键说明

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