-
Notifications
You must be signed in to change notification settings - Fork 57
MemPCMCIA
Matthias Melcher edited this page Oct 21, 2024
·
13 revisions
102834
see also: Memory Map
- PCMCIA Port 0 starts at
0x30000000
- PCMCIA Port 1 starts at
0x40000000
Offset | Content |
---|---|
+0x00000000 |
64MB PCMCIA Attributes |
+0x04000000 |
64MB PCMCIA I/O Space |
+0x08000000 |
64MB PCMCIA Memory Space |
+0x0C000000 |
64MB PCMCIA Control |
Memory and attribute space is 16 bits wide, I/O space is 8 or 16 bits wide, depending on the state of ~IOIS16. The controller can simulate 32 bit access.
Control Register Map at +0x0C000000
:
Offset | Bits | Content |
---|---|---|
+0x0000 |
active interrupts (bit assignment is probably wrong!) | |
0x0001 |
kSocketBusyIntVector , Memory card busy interrupt |
|
0x0002 |
kSocketStatusChangedIntVector , IO card status changed interrupt# |
|
0x0004 |
kSocketCardDetectedIntVector , Card detected interrupt, called by TPCMCIAController::InsertCard |
|
0x0008 |
kSocketCardLockIntVector , Card unlock/remove interupt, In fact, we use GPIO |
|
0x0010 |
kSocketCardIREQIntVector , IO card IREQ interrupt |
|
0x0020 |
kSocketCardInsertIntVector , Card inserted interrupt#, Unused, Brick only |
|
0x0040 |
kSocketSpeakerIntVector ', Speaker interrupt# |
|
0x0080 |
kSocketDREQIntVector , DMA REQ interrupt |
|
0x0100 |
kSocketWPIntVector , WP interrupt |
|
0x0200 |
kSocketReadFailureIntVector , Read failure interrupt |
|
0x0400 |
kSocketWriteFailureIntVector , Write failure interrupt |
|
0x0800 |
kSocketWrFIFOEmptyIntVector , Write FIFO empty interrupt |
|
0x1000 |
kSocketWrFIFOThreshldIntVector , Write FIFO threshold met (2 or 4 entries interrupt) |
|
+0x0400 |
Interrupt Control Register, enabled interrupts | |
+0x0800 |
? interrupts | |
+0x0C00 |
promote interrupts to FIQ | |
+0x1000 |
interrupt on rising edge | |
+0x1400 |
interrupt on falling edge | |
+0x1800 |
interrupt causes wakeup | |
+0x1C00 |
PCMCIA Pin input | |
0x0001 |
BVD1/~STCH , pin 63, Battery Voltage / Card Status Changed |
|
0x0002 |
BVD2/~SPKR , pin 62, Battery Voltage / Speaker Out |
|
0x0004 |
~CD1 , pin 36, Card Detect |
|
0x0008 |
~CD2 , pin 67, Card Detect |
|
0x0010 |
~VS1 , pin 43, Card Voltage Sense 1 |
|
0x0020 |
~VS2 , pin 57, Card Voltage Sense 2 |
|
0x0040 |
~REG , pin 61, Register Select/IO Enable (1=Access Memory, 0=Access Registers) |
|
0x0080 |
~CE1 , pin 7, Card Enable |
|
0x0100 |
~CE2 , pin 42, Card Enable |
|
0x0200 |
WP/~IOIS16 , pin 33, Write Protect / IO is 16 bit wide |
|
0x0400 |
READY/~IREQ , pin 16, Ready, Busy / Interrupt Request (1=Card is ready to receive more data) |
|
0x0800 |
FIFO Threshold | |
0x1000 |
FIFO Empty | |
0x2000 |
Write Fail | |
0x4000 |
Read Fail | |
+0x2000 |
bus access control | |
0x001F |
Read Write Queue Control | |
0x0020 |
Endian Convert | |
0x0080 |
Handshake Ready | |
0x0100 |
Assembly 32 | |
0x0400 |
Swap Size | |
0x0800 |
Dynamic Swap | |
+0x2400 |
pin access and direction | |
0x0080 |
No Byte Access | |
0x0100 |
Select IO | |
0x0200 |
Software Write Protect | |
0x0400 |
Enable Bus | |
0x0800 |
Enable Reset Out | |
0x1000 |
RESET , pin 58, Card Reset |
|
+0x2800 |
pullups and power | |
0x0020 |
Vcc , pin 17, Power |
|
0x7C00 |
Set pull-up Control | |
+0x2C00 |
PCMCIA Power Control | |
0x0003 |
Vcc , ?? 01=5V, 10=12V |
|
0x0004 |
Vpp1 , pin 18, Programming Power, 0=5V, 1=12V |
|
0x1000 |
VS1OUT |
|
0x2000 |
VS2OUT |
|
0x4000 |
VS1DIR |
|
0x8000 |
VS2DIR |
|
+0x3000 |
Attribute and Common Memory Speed | |
0x003F |
Memory Speed (could be a clock count, *2 clock counts) | |
+0x3400 |
unknown (could be attribute access speed) | |
+0x3800 |
I/O Speed | |
0x003F |
I/O Speed (could be a clock count) | |
+0x3C00 |
unknown | |
+0x4000 |
unknown | |
+0x4400 |
unknown |
- see
InterruptObject* gPCMCIA0IntObj; // 0C100E70
- see
InterruptObject* gPCMCIA1IntObj; // 0C100E74