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

📄 pcmciasupport.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 3 页
字号:
  00120	eb000000	 bl          CalculatePcmciaTimings
  00124	e58d0018	 str         r0, [sp, #0x18]
  00128	e59d3018	 ldr         r3, [sp, #0x18]
  0012c	e3832102	 orr         r2, r3, #2, 2
  00130	e59f3024	 ldr         r3, [pc, #0x24]
  00134	e5832000	 str         r2, [r3]

; 535  :         //*SMC_PCCONFIG_IO1   = CalculatePcmciaTimings(0 );
; 536  :     }
; 537  :     else

  00138	ea000001	 b           |$L38173|
  0013c		 |$L38166|

; 538  :     {    
; 539  :         iReturnValue = 0;

  0013c	e3a03000	 mov         r3, #0
  00140	e58d3000	 str         r3, [sp]
  00144		 |$L38173|

; 540  :     }
; 541  : 
; 542  : 
; 543  :     return iReturnValue;

  00144	e59d3000	 ldr         r3, [sp]
  00148	e58d3008	 str         r3, [sp, #8]
  0014c	e59d0008	 ldr         r0, [sp, #8]

; 544  : }

  00150	e28dd01c	 add         sp, sp, #0x1C
  00154	e49de004	 ldr         lr, [sp], #4
  00158	e12fff1e	 bx          lr
  0015c		 |$L38245|
  0015c	80080028	 DCD         0x80080028
  00160	80080024	 DCD         0x80080024
  00164	80080020	 DCD         0x80080020
  00168	80080040	 DCD         0x80080040
  0016c	80840058	 DCD         0x80840058
  00170	80840050	 DCD         0x80840050
  00174	8084004c	 DCD         0x8084004c
  00178	80840054	 DCD         0x80840054
  0017c	80840030	 DCD         0x80840030
  00180	80840034	 DCD         0x80840034
  00184		 |$M38241|

			 ENDP  ; |OEMPCMCIAInitialize|

	IMPORT	|DelayInuSec|

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

  00000			 AREA	 |.pdata$$PowerPCCardWrite|, PDATA, SELECTION=5, ASSOC=|.text| { |PowerPCCardWrite| } ; comdat associative
|$T38252| DCD	|$L38251|
	DCD	0x40007e04
; Function compile flags: /Ods

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

  00000		 |PowerPCCardWrite| PROC

; 104  : {    

  00000		 |$L38251|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0007	 stmdb       sp!, {r0 - r2}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd010	 sub         sp, sp, #0x10
  00010		 |$M38249|

; 105  :     unsigned char retVal = 0;    // 0 = G_SUCCESS

  00010	e3a03000	 mov         r3, #0
  00014	e5cd3000	 strb        r3, [sp]

; 106  :     ULONG         ulSwitchSettings;
; 107  :     int       i;
; 108  :     
; 109  :     
; 110  :     if(vccOut == 50)

  00018	e5dd3018	 ldrb        r3, [sp, #0x18]
  0001c	e3530032	 cmp         r3, #0x32
  00020	1a000003	 bne         |$L38084|

; 111  :     {
; 112  :         //
; 113  :         // Configure PCMCIA for 5 Volts.
; 114  :         //
; 115  :         ulSwitchSettings = EE_ADDRESS |ENABLE | AVPP_0V | BVPP_0V |AVCC_5V | BVCC_0V;

  00024	e3a03cab	 mov         r3, #0xAB, 24
  00028	e3833008	 orr         r3, r3, #8
  0002c	e58d3008	 str         r3, [sp, #8]

; 116  :     }
; 117  :     else if(vccOut ==33)

  00030	ea00000f	 b           |$L38085|
  00034		 |$L38084|
  00034	e5dd3018	 ldrb        r3, [sp, #0x18]
  00038	e3530021	 cmp         r3, #0x21
  0003c	1a000003	 bne         |$L38086|

; 118  :     {
; 119  :         //
; 120  :         // Configure PCMCIA for 3.3 Volts.
; 121  :         //
; 122  :         ulSwitchSettings = EE_ADDRESS | ENABLE | AVPP_0V | BVPP_0V |AVCC_33V | BVCC_0V;

  00040	e3a03cab	 mov         r3, #0xAB, 24
  00044	e3833004	 orr         r3, r3, #4
  00048	e58d3008	 str         r3, [sp, #8]

; 123  :     }
; 124  :     else if(vccOut == 0)

  0004c	ea000008	 b           |$L38087|
  00050		 |$L38086|
  00050	e5dd3018	 ldrb        r3, [sp, #0x18]
  00054	e3530000	 cmp         r3, #0
  00058	1a000002	 bne         |$L38088|

; 125  :     {
; 126  :         //
; 127  :         // Configure PCMCIA for 0 Volts.
; 128  :         //
; 129  :         ulSwitchSettings = EE_ADDRESS | ENABLE | AVPP_0V | BVPP_0V |AVCC_0V | BVCC_0V;

  0005c	e3a03cab	 mov         r3, #0xAB, 24
  00060	e58d3008	 str         r3, [sp, #8]

; 130  :         
; 131  :     }
; 132  :     else

  00064	ea000002	 b           |$L38089|
  00068		 |$L38088|

; 133  :     {
; 134  :         return (ERROR_POWERPCCARD_INVALID_PARMS);

  00068	e3a03001	 mov         r3, #1
  0006c	e5cd300c	 strb        r3, [sp, #0xC]
  00070	ea000057	 b           |$L38080|
  00074		 |$L38089|
  00074		 |$L38087|
  00074		 |$L38085|

; 135  :     }
; 136  :         
; 137  :     //
; 138  :     // Update these variables while processing
; 139  :     //
; 140  :     Vcc = vccOut;      

  00074	e5dd2018	 ldrb        r2, [sp, #0x18]
  00078	e59f3174	 ldr         r3, [pc, #0x174]
  0007c	e5c32000	 strb        r2, [r3]

; 141  :     Vpp1 = vpp1Out;

  00080	e5dd201c	 ldrb        r2, [sp, #0x1C]
  00084	e59f3164	 ldr         r3, [pc, #0x164]
  00088	e5c32000	 strb        r2, [r3]

; 142  :     Vpp2 = vpp2Out;             

  0008c	e5dd2020	 ldrb        r2, [sp, #0x20]
  00090	e59f3154	 ldr         r3, [pc, #0x154]
  00094	e5c32000	 strb        r2, [r3]

; 143  : 
; 144  :     //
; 145  :     // Turn on the power to the socket !!!
; 146  :     //
; 147  :     //  EECLK  -> Clock
; 148  :     //  EEDATA -> Data
; 149  :     //  SLA0   -> Latch
; 150  :     //*EEPROM_CONFIG   =  CONFIG_S0DIR;
; 151  :     //Sleep(20);
; 152  :     //*EEPROM_CONFIG   =  CONFIG_S0DIR | CONFIG_DDIR | CONFIG_CDIR ;
; 153  :     *GPIO_PGDDR         =  GPIOG_EECLK | GPIOG_EEDAT | GPIOG_SLA0;

  00098	e59f2148	 ldr         r2, [pc, #0x148]
  0009c	e3a03007	 mov         r3, #7
  000a0	e5823000	 str         r3, [r2]

; 154  :  
; 155  :     
; 156  :     //
; 157  :     // Clear all except EECLK
; 158  :     // 
; 159  :     //*EEPROM_DATA     = DATA_EECLK;
; 160  :     *GPIO_PGDR          = GPIOG_EECLK;

  000a4	e59f2138	 ldr         r2, [pc, #0x138]
  000a8	e3a03001	 mov         r3, #1
  000ac	e5823000	 str         r3, [r2]

; 161  : 
; 162  :     //
; 163  :     // Raise the clock.
; 164  :     //    
; 165  :     DelayInuSec(50);

  000b0	e3a00032	 mov         r0, #0x32
  000b4	eb000000	 bl          DelayInuSec

; 166  :     //*EEPROM_DATA     = 0;
; 167  :     *GPIO_PGDR          = 0;

  000b8	e59f2124	 ldr         r2, [pc, #0x124]
  000bc	e3a03000	 mov         r3, #0
  000c0	e5823000	 str         r3, [r2]

; 168  :     DelayInuSec(50);

  000c4	e3a00032	 mov         r0, #0x32
  000c8	eb000000	 bl          DelayInuSec

; 169  : 
; 170  :     for (i=18; i>=0; --i)

  000cc	e3a03012	 mov         r3, #0x12
  000d0	e58d3004	 str         r3, [sp, #4]
  000d4	ea000002	 b           |$L38093|
  000d8		 |$L38094|
  000d8	e59d3004	 ldr         r3, [sp, #4]
  000dc	e2433001	 sub         r3, r3, #1
  000e0	e58d3004	 str         r3, [sp, #4]
  000e4		 |$L38093|
  000e4	e59d3004	 ldr         r3, [sp, #4]
  000e8	e3530000	 cmp         r3, #0
  000ec	ba000024	 blt         |$L38095|

; 171  :     //for (i=9; i>=0; --i)
; 172  :     {
; 173  :         if((ulSwitchSettings >> i) & 1)

  000f0	e59d2008	 ldr         r2, [sp, #8]
  000f4	e59d3004	 ldr         r3, [sp, #4]
  000f8	e1a03332	 mov         r3, r2, lsr r3
  000fc	e3130001	 tst         r3, #1
  00100	0a00000f	 beq         |$L38096|

; 174  :         {
; 175  :             //
; 176  :             // Put the data on the bus and lower the clock.
; 177  :             //
; 178  :             *GPIO_PGDR = GPIOG_EEDAT ;

  00104	e59f20d8	 ldr         r2, [pc, #0xD8]
  00108	e3a03002	 mov         r3, #2
  0010c	e5823000	 str         r3, [r2]

; 179  :             DelayInuSec(50);

  00110	e3a00032	 mov         r0, #0x32
  00114	eb000000	 bl          DelayInuSec

; 180  :         
; 181  :             //
; 182  :             // Raise the clock to latch the data in.
; 183  :             //
; 184  :             //*EEPROM_DATA    = DATA_EECLK | DATA_EEDAT;
; 185  :             *GPIO_PGDR       = GPIOG_EECLK | GPIOG_EEDAT;

  00118	e59f20c4	 ldr         r2, [pc, #0xC4]
  0011c	e3a03003	 mov         r3, #3
  00120	e5823000	 str         r3, [r2]

; 186  :             DelayInuSec(50);

  00124	e3a00032	 mov         r0, #0x32
  00128	eb000000	 bl          DelayInuSec

; 187  : 
; 188  :             //
; 189  :             // Lower the clock again.
; 190  :             //        
; 191  :             //*EEPROM_DATA     = DATA_EEDAT;
; 192  :             *GPIO_PGDR        = GPIOG_EEDAT;

  0012c	e59f20b0	 ldr         r2, [pc, #0xB0]
  00130	e3a03002	 mov         r3, #2
  00134	e5823000	 str         r3, [r2]

; 193  :             DelayInuSec(50);

  00138	e3a00032	 mov         r0, #0x32
  0013c	eb000000	 bl          DelayInuSec

; 194  :         }
; 195  :         else            

  00140	ea00000e	 b           |$L38100|
  00144		 |$L38096|

; 196  :         {
; 197  :             //
; 198  :             // Put the data on the bus and lower the clock.
; 199  :             //
; 200  :             //*EEPROM_DATA    = 0 ;
; 201  :             *GPIO_PGDR       = 0;

  00144	e59f2098	 ldr         r2, [pc, #0x98]
  00148	e3a03000	 mov         r3, #0
  0014c	e5823000	 str         r3, [r2]

; 202  :             DelayInuSec(50);

  00150	e3a00032	 mov         r0, #0x32
  00154	eb000000	 bl          DelayInuSec

; 203  :         
; 204  :             //
; 205  :             // Raise the clock to latch the data in.
; 206  :             //
; 207  :             //*EEPROM_DATA     = DATA_EECLK ;
; 208  :             *GPIO_PGDR       = GPIOG_EECLK ;

  00158	e59f2084	 ldr         r2, [pc, #0x84]
  0015c	e3a03001	 mov         r3, #1
  00160	e5823000	 str         r3, [r2]

; 209  :             DelayInuSec(50);

  00164	e3a00032	 mov         r0, #0x32
  00168	eb000000	 bl          DelayInuSec

; 210  : 
; 211  :             //
; 212  :             // Lower the clock again.
; 213  :             //        
; 214  :             //*EEPROM_DATA     = 0;
; 215  :             *GPIO_PGDR       = 0 ;

  0016c	e59f2070	 ldr         r2, [pc, #0x70]
  00170	e3a03000	 mov         r3, #0
  00174	e5823000	 str         r3, [r2]

; 216  :             DelayInuSec(50);

  00178	e3a00032	 mov         r0, #0x32
  0017c	eb000000	 bl          DelayInuSec
  00180		 |$L38100|

; 217  :         }                    
; 218  :     }

  00180	eaffffd4	 b           |$L38094|
  00184		 |$L38095|

; 219  :         
; 220  :     //
; 221  :     // Raise and lower the Latch.
; 222  :     //
; 223  :     *GPIO_PGDR       = GPIOG_SLA0;

  00184	e59f2058	 ldr         r2, [pc, #0x58]
  00188	e3a03004	 mov         r3, #4
  0018c	e5823000	 str         r3, [r2]

; 224  :     DelayInuSec(50);

  00190	e3a00032	 mov         r0, #0x32
  00194	eb000000	 bl          DelayInuSec

; 225  : 
; 226  :     *GPIO_PGDR       = 0;

  00198	e59f2044	 ldr         r2, [pc, #0x44]
  0019c	e3a03000	 mov         r3, #0
  001a0	e5823000	 str         r3, [r2]

; 227  :     *GPIO_PGDR       = GPIOG_EECLK;

  001a4	e59f2038	 ldr         r2, [pc, #0x38]
  001a8	e3a03001	 mov         r3, #1
  001ac	e5823000	 str         r3, [r2]

; 228  :     DelayInuSec(50);

  001b0	e3a00032	 mov         r0, #0x32
  001b4	eb000000	 bl          DelayInuSec

; 229  :     *GPIO_PGDR       = GPIOG_EECLK| GPIOG_EEDAT;

  001b8	e59f2024	 ldr         r2, [pc, #0x24]
  001bc	e3a03003	 mov         r3, #3
  001c0	e5823000	 str         r3, [r2]

; 230  :     DelayInuSec(50);

  001c4	e3a00032	 mov         r0, #0x32
  001c8	eb000000	 bl          DelayInuSec

; 231  :     
; 232  :     //
; 233  :     // Change the configuration back to zero.
; 234  :     // This will cause the PCMCIA interface to reset.
; 235  :     //
; 236  :     //*EEPROM_CONFIG  = CONFIG_S0DIR;
; 237  : 
; 238  :     return(retVal);

  001cc	e5dd3000	 ldrb        r3, [sp]
  001d0	e5cd300c	 strb        r3, [sp, #0xC]
  001d4		 |$L38080|

; 133  :     {
; 134  :         return (ERROR_POWERPCCARD_INVALID_PARMS);

  001d4	e5dd000c	 ldrb        r0, [sp, #0xC]

; 239  : }

  001d8	e28dd010	 add         sp, sp, #0x10
  001dc	e89d6000	 ldmia       sp, {sp, lr}
  001e0	e12fff1e	 bx          lr
  001e4		 |$L38254|
  001e4	80840038	 DCD         0x80840038
  001e8	8084003c	 DCD         0x8084003c
  001ec	00000000	 DCD         |Vpp2|
  001f0	00000000	 DCD         |Vpp1|
  001f4	00000000	 DCD         |Vcc|
  001f8		 |$M38250|

			 ENDP  ; |PowerPCCardWrite|

	EXPORT	|??_C@_0CL@BKBHLIKE@Card?5Voltage?3?5Card?5bus?0?5Unsuppor@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CF@KMCAEMEC@Card?5Voltage?3?5x?4x?53?43v?5and?55v?5Ca@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CF@NFAAFMBL@Card?5Voltage?3?5x?4xv?5?$CINot?5supporte@| [ DATA ] ; `string'
	EXPORT	|??_C@_0BF@JPLNLKLD@Card?5Voltage?3?53?43v?4?6?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_0BD@PJNOJFDC@Card?5Voltage?3?55v?4?6?$AA@| [ DATA ] ; `string'
	IMPORT	|EdbgOutputDebugString|

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

  00000			 AREA	 |.pdata$$detectVolts|, PDATA, SELECTION=5, ASSOC=|.text| { |detectVolts| } ; comdat associative
|$T38261| DCD	|$L38260|
	DCD	0x40003d02

  00000			 AREA	 |.rdata| { |??_C@_0BD@PJNOJFDC@Card?5Voltage?3?55v?4?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BD@PJNOJFDC@Card?5Voltage?3?55v?4?6?$AA@| DCB "Card Voltage: 5v.", 0xa
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_0BF@JPLNLKLD@Card?5Voltage?3?53?43v?4?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BF@JPLNLKLD@Card?5Voltage?3?53?43v?4?6?$AA@| DCB "Card Voltage: 3"
	DCB	".3v.", 0xa, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CF@NFAAFMBL@Card?5Voltage?3?5x?4xv?5?$CINot?5supporte@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CF@NFAAFMBL@Card?5Voltage?3?5x?4xv?5?$CINot?5supporte@| DCB "Card"
	DCB	" Voltage: x.xv (Not supported).", 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CF@KMCAEMEC@Card?5Voltage?3?5x?4x?53?43v?5and?55v?5Ca@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CF@KMCAEMEC@Card?5Voltage?3?5x?4x?53?43v?5and?55v?5Ca@| DCB "Card"
	DCB	" Voltage: x.x 3.3v and 5v Card.", 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CL@BKBHLIKE@Card?5Voltage?3?5Card?5bus?0?5Unsuppor@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CL@BKBHLIKE@Card?5Voltage?3?5Card?5bus?0?5Unsuppor@| DCB "Card Vo"
	DCB	"ltage: Card bus, Unsupported card.", 0xa, 0x0 ; `string'
; Function compile flags: /Ods

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

  00000		 |detectVolts| PROC

; 249  : {

  00000		 |$L38260|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M38258|

; 250  :     ULONG   ulVS;
; 251  :     
; 252  :     // *PCMCIA_PCCONFIG    = PCMCIA_PCCONFIG_VSEN | PCMCIA_PCCONFIG_VS2 | PCMCIA_PCCONFIG_VS1;
; 253  :     *GPIO_PFDR = GPIOF_PCMCIA_VS1 | GPIOF_PCMCIA_VS2;

  00008	e59f20e0	 ldr         r2, [pc, #0xE0]
  0000c	e3a030a0	 mov         r3, #0xA0
  00010	e5823000	 str         r3, [r2]

; 254  :     
; 255  :      ulVS    = *GPIO_PFDR &( GPIOF_PCMCIA_CD1 | GPIOF_PCMCIA_CD2 | 
; 256  :                              GPIOF_PCMCIA_VS1 | GPIOF_PCMCIA_VS2);

  00014	e59f30d4	 ldr         r3, [pc, #0xD4]
  00018	e5933000	 ldr         r3, [r3]
  0001c	e20330a6	 and         r3, r3, #0xA6
  00020	e58d3000	 str         r3, [sp]

⌨️ 快捷键说明

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