|
@@ -160,7 +160,7 @@ int pcmcia_on (void)
|
|
|
}
|
|
|
#else
|
|
|
|
|
|
-#if defined(CONFIG_LWMON)
|
|
|
+#if defined(CONFIG_LWMON) || defined(CONFIG_NSCU)
|
|
|
# define CFG_PCMCIA_TIMING (PCMCIA_SHT(9) | PCMCIA_SST(3) | PCMCIA_SL(12))
|
|
|
#else
|
|
|
# define CFG_PCMCIA_TIMING (PCMCIA_SHT(2) | PCMCIA_SST(4) | PCMCIA_SL(9))
|
|
@@ -594,8 +594,8 @@ static int hardware_enable(int slot)
|
|
|
sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
|
|
|
|
|
|
/* clear interrupt state, and disable interrupts */
|
|
|
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
|
|
|
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
|
|
|
+ pcmp->pcmc_pscr = PCMCIA_MASK(slot);
|
|
|
+ pcmp->pcmc_per &= ~PCMCIA_MASK(slot);
|
|
|
|
|
|
/*
|
|
|
* Disable interrupts, DMA, and PCMCIA buffers
|
|
@@ -604,10 +604,13 @@ static int hardware_enable(int slot)
|
|
|
debug ("Disable PCMCIA buffers and assert RESET\n");
|
|
|
reg = 0;
|
|
|
reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
|
|
|
+#ifndef NSCU_OE_INV
|
|
|
reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
- PCMCIA_PGCRX(_slot_) = reg;
|
|
|
+#endif
|
|
|
+ PCMCIA_PGCRX(slot) = reg;
|
|
|
udelay(500);
|
|
|
|
|
|
+#ifndef CONFIG_NSCU
|
|
|
/*
|
|
|
* Configure Port C pins for
|
|
|
* 5 Volts Enable and 3 Volts enable
|
|
@@ -617,6 +620,7 @@ static int hardware_enable(int slot)
|
|
|
/* remove all power */
|
|
|
|
|
|
immap->im_ioport.iop_pcdat &= ~(0x0002 | 0x0004);
|
|
|
+#endif
|
|
|
|
|
|
/*
|
|
|
* Make sure there is a card in the slot, then configure the interface.
|
|
@@ -639,6 +643,7 @@ static int hardware_enable(int slot)
|
|
|
reg,
|
|
|
(reg&PCMCIA_VS1(slot))?"n":"ff",
|
|
|
(reg&PCMCIA_VS2(slot))?"n":"ff");
|
|
|
+#ifndef CONFIG_NSCU
|
|
|
if ((reg & mask) == mask) {
|
|
|
immap->im_ioport.iop_pcdat |= 0x0004;
|
|
|
puts (" 5.0V card found: ");
|
|
@@ -647,6 +652,13 @@ static int hardware_enable(int slot)
|
|
|
puts (" 3.3V card found: ");
|
|
|
}
|
|
|
immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004);
|
|
|
+#else
|
|
|
+ if ((reg & mask) == mask) {
|
|
|
+ puts (" 5.0V card found: ");
|
|
|
+ } else {
|
|
|
+ puts (" 3.3V card found: ");
|
|
|
+ }
|
|
|
+#endif
|
|
|
#if 0
|
|
|
/* VCC switch error flag, PCMCIA slot INPACK_ pin */
|
|
|
cp->cp_pbdir &= ~(0x0020 | 0x0010);
|
|
@@ -655,10 +667,14 @@ static int hardware_enable(int slot)
|
|
|
#endif
|
|
|
udelay(1000);
|
|
|
debug ("Enable PCMCIA buffers and stop RESET\n");
|
|
|
- reg = PCMCIA_PGCRX(_slot_);
|
|
|
+ reg = PCMCIA_PGCRX(slot);
|
|
|
reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
|
|
|
+#ifndef NSCU_OE_INV
|
|
|
reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
- PCMCIA_PGCRX(_slot_) = reg;
|
|
|
+#else
|
|
|
+ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
+#endif
|
|
|
+ PCMCIA_PGCRX(slot) = reg;
|
|
|
|
|
|
udelay(250000); /* some cards need >150 ms to come up :-( */
|
|
|
|
|
@@ -680,14 +696,18 @@ static int hardware_disable(int slot)
|
|
|
immap = (immap_t *)CFG_IMMR;
|
|
|
pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
|
|
|
|
|
|
+#ifndef CONFIG_NSCU
|
|
|
/* remove all power */
|
|
|
immap->im_ioport.iop_pcdat &= ~(0x0002 | 0x0004);
|
|
|
+#endif
|
|
|
|
|
|
debug ("Disable PCMCIA buffers and assert RESET\n");
|
|
|
reg = 0;
|
|
|
reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
|
|
|
+#ifndef NSCU_OE_INV
|
|
|
reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
- PCMCIA_PGCRX(_slot_) = reg;
|
|
|
+#endif
|
|
|
+ PCMCIA_PGCRX(slot) = reg;
|
|
|
|
|
|
udelay(10000);
|
|
|
|
|
@@ -695,7 +715,12 @@ static int hardware_disable(int slot)
|
|
|
}
|
|
|
#endif /* CFG_CMD_PCMCIA */
|
|
|
|
|
|
-
|
|
|
+#ifdef CONFIG_NSCU
|
|
|
+static int voltage_set(int slot, int vcc, int vpp)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#else
|
|
|
static int voltage_set(int slot, int vcc, int vpp)
|
|
|
{
|
|
|
volatile immap_t *immap;
|
|
@@ -714,10 +739,14 @@ static int voltage_set(int slot, int vcc, int vpp)
|
|
|
* and assert RESET signal
|
|
|
*/
|
|
|
debug ("Disable PCMCIA buffers and assert RESET\n");
|
|
|
- reg = PCMCIA_PGCRX(_slot_);
|
|
|
+ reg = PCMCIA_PGCRX(slot);
|
|
|
reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
|
|
|
+#ifndef NSCU_OE_INV
|
|
|
reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
- PCMCIA_PGCRX(_slot_) = reg;
|
|
|
+#else
|
|
|
+ reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
+#endif
|
|
|
+ PCMCIA_PGCRX(slot) = reg;
|
|
|
udelay(500);
|
|
|
|
|
|
/*
|
|
@@ -755,16 +784,21 @@ static int voltage_set(int slot, int vcc, int vpp)
|
|
|
|
|
|
done:
|
|
|
debug ("Enable PCMCIA buffers and stop RESET\n");
|
|
|
- reg = PCMCIA_PGCRX(_slot_);
|
|
|
+ reg = PCMCIA_PGCRX(slot);
|
|
|
reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
|
|
|
+#ifndef NSCU_OE_INV
|
|
|
reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
- PCMCIA_PGCRX(_slot_) = reg;
|
|
|
+#else
|
|
|
+ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
|
|
|
+#endif
|
|
|
+ PCMCIA_PGCRX(slot) = reg;
|
|
|
udelay(500);
|
|
|
|
|
|
debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
|
|
|
slot+'A');
|
|
|
return (0);
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
#endif /* TQM8xxL */
|
|
|
|