From: wdenk Date: Wed, 4 Dec 2002 23:39:58 +0000 (+0000) Subject: Add LED indication for IDE activity on KUP4K board X-Git-Tag: LABEL_2006_03_12_0025~961 X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=commitdiff_plain;h=1f53a41603b9093c59741f4208fef0ab3790d6ce Add LED indication for IDE activity on KUP4K board --- diff --git a/CHANGELOG b/CHANGELOG index 1fa99b4c5e..7519b8f01a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes since for U-Boot 0.1.0: ====================================================================== +* Add LED indication for IDE activity on KUP4K board + * Fix startup problems with VFD display on TRAB * Patch by Pierre Aubert, 20 Nov 2002 diff --git a/board/kup4k/kup4k.c b/board/kup4k/kup4k.c index 86e1c812c1..aeafa6af3c 100644 --- a/board/kup4k/kup4k.c +++ b/board/kup4k/kup4k.c @@ -288,12 +288,22 @@ int misc_init_r (void) { DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_STATUS_LED + volatile immap_t *immap = (immap_t *)CFG_IMMR; +#endif #ifdef CONFIG_KUP4K_LOGO bd_t *bd = gd->bd; lcd_logo(bd); #endif /* CONFIG_KUP4K_LOGO */ +#ifdef CONFIG_IDE_LED + /* Configure PA8 as output port */ + immap->im_ioport.iop_padir |= 0x80; + immap->im_ioport.iop_paodr |= 0x80; + immap->im_ioport.iop_papar &= ~0x80; + immap->im_ioport.iop_padat |= 0x80; /* turn it off */ +#endif return(0); } @@ -422,3 +432,15 @@ void lcd_logo(bd_t *bd){ } #endif /* CONFIG_KUP4K_LOGO */ +#ifdef CONFIG_IDE_LED +void ide_led (uchar led, uchar status) +{ + volatile immap_t *immap = (immap_t *)CFG_IMMR; + /* We have one led for both pcmcia slots */ + if (status) { /* led on */ + immap->im_ioport.iop_padat &= ~0x80; + } else { + immap->im_ioport.iop_padat |= 0x80; + } +} +#endif diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 7b455086a8..d082d5e9b3 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -132,8 +132,12 @@ static block_dev_desc_t ide_dev_desc[CFG_IDE_MAXDEVICE]; /* ------------------------------------------------------------------------- */ #ifdef CONFIG_IDE_LED +#ifndef CONFIG_KUP4K static void ide_led (uchar led, uchar status); #else +extern void ide_led (uchar led, uchar status); +#endif +#else #ifndef CONFIG_AMIGAONEG3SE #define ide_led(a,b) /* dummy */ #else @@ -1347,7 +1351,7 @@ static void ide_reset (void) /* ------------------------------------------------------------------------- */ -#if defined(CONFIG_IDE_LED) && !defined(CONFIG_AMIGAONEG3SE) +#if defined(CONFIG_IDE_LED) && !defined(CONFIG_AMIGAONEG3SE) && !defined(CONFIG_KUP4K) static uchar led_buffer = 0; /* Buffer for current LED status */ diff --git a/common/cmd_pcmcia.c b/common/cmd_pcmcia.c index 4c799a52dd..8a3491ede7 100644 --- a/common/cmd_pcmcia.c +++ b/common/cmd_pcmcia.c @@ -88,7 +88,7 @@ static u_int m8xx_get_graycode(u_int size); static u_int m8xx_get_speed(u_int ns, u_int is_io); #endif -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ /* look up table for pgcrx registers */ @@ -101,7 +101,7 @@ static u_int *pcmcia_pgcrx[2] = { const char *indent = "\t "; -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #if (CONFIG_COMMANDS & CFG_CMD_PCMCIA) @@ -126,7 +126,7 @@ int do_pinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } #endif /* CFG_CMD_PCMCIA */ -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_LWMON) # define CFG_PCMCIA_TIMING (PCMCIA_SHT(9) | PCMCIA_SST(3) | PCMCIA_SL(12)) @@ -185,7 +185,7 @@ int pcmcia_on (void) break; } case 6: - case 2: { /* map I/O window for command/ctrl reg block */ + case 2: { /* map I/O window for cmd/ctrl reg block */ win->or = ( PCMCIA_BSIZE_1K | PCMCIA_PPS_8 | PCMCIA_PRS_IO @@ -206,15 +206,15 @@ int pcmcia_on (void) ++win; } - for (i = 0, rc = 0, slot = _slot_; i < PCMCIA_SOCKETS_NO; i++, slot = !slot) { + for (i=0, rc=0, slot=_slot_; ipcmc_pscr = PCMCIA_MASK(_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -597,7 +594,7 @@ static int hardware_enable(int slot) immap->im_ioport.iop_pcdat |= 0x0002; puts (" 3.3V card found: "); } - immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004); + immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004); #if 0 /* VCC switch error flag, PCMCIA slot INPACK_ pin */ cp->cp_pbdir &= ~(0x0020 | 0x0010); @@ -635,11 +632,8 @@ static int hardware_disable(int slot) /* remove all power */ immap->im_ioport.iop_pcdat &= ~(0x0002 | 0x0004); - /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(_slot_) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; @@ -670,9 +664,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(_slot_); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -701,7 +695,7 @@ static int voltage_set(int slot, int vcc, int vpp) (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V"); immap->im_ioport.iop_pcdat |= reg; - immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004); + immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004); if (reg) { debug ("PCMCIA powered at %sV\n", (reg&0x0004) ? "5.0" : "3.3"); @@ -725,9 +719,9 @@ done: #endif /* TQM8xxL */ -/* ---------------------------------------------------------------------------- */ -/* LWMON Board */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* LWMON Board */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_LWMON) @@ -759,7 +753,7 @@ static int hardware_enable(int slot) reg = pic_read (0x60); debug ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg); reg &= ~0x10; - /* reg |= 0x08; Vpp not needed */ + /* reg |= 0x08; Vpp not needed */ pic_write (0x60, reg); #ifdef DEBUG reg = pic_read (0x60); @@ -782,17 +776,14 @@ static int hardware_enable(int slot) pcmp->pcmc_pscr = PCMCIA_MASK(_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -826,7 +817,7 @@ static int hardware_enable(int slot) } /* switch VCC on */ - val |= MAX1604_OP_SUS | MAX1604_VCCBON; + val |= MAX1604_OP_SUS | MAX1604_VCCBON; i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1); @@ -866,10 +857,8 @@ static int hardware_disable(int slot) i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1); /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(_slot_) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; @@ -911,9 +900,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(_slot_); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -962,81 +951,79 @@ done: #endif /* LWMON */ -/* ---------------------------------------------------------------------------- */ -/* GTH board by Corelatus AB */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* GTH board by Corelatus AB */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_GTH) #define PCMCIA_BOARD_MSG "GTH COMPACT FLASH" -static int voltage_set(int slot, int vcc, int vpp) -{ /* Do nothing */ - return 0; +static int voltage_set (int slot, int vcc, int vpp) +{ /* Do nothing */ + return 0; } static int hardware_enable (int slot) { - volatile immap_t *immap; - volatile cpm8xx_t *cp; - volatile pcmconf8xx_t *pcmp; - volatile sysconf8xx_t *sysp; - uint reg, mask; - - debug ("hardware_enable: GTH Slot %c\n", 'A'+slot); - - immap = (immap_t *)CFG_IMMR; - sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf)); - pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia)); - cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm)); - - /* clear interrupt state, and disable interrupts */ - pcmp->pcmc_pscr = PCMCIA_MASK(_slot_); - pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal - */ - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ - PCMCIA_PGCRX(_slot_) = reg; - udelay(500); - - /* - * Make sure there is a card in the slot, then configure the interface. - */ - udelay(10000); - debug ("[%d] %s: PIPR(%p)=0x%x\n", - __LINE__,__FUNCTION__, - &(pcmp->pcmc_pipr),pcmp->pcmc_pipr); - if (pcmp->pcmc_pipr & 0x98000000) { - printf (" No Card found\n"); - return (1); - } - - mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot); - reg = pcmp->pcmc_pipr; - debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n", - reg, - (reg&PCMCIA_VS1(slot))?"n":"ff", - (reg&PCMCIA_VS2(slot))?"n":"ff"); + volatile immap_t *immap; + volatile cpm8xx_t *cp; + volatile pcmconf8xx_t *pcmp; + volatile sysconf8xx_t *sysp; + uint reg, mask; - debug ("Enable PCMCIA buffers and stop RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */ - PCMCIA_PGCRX(_slot_) = reg; + debug ("hardware_enable: GTH Slot %c\n", 'A' + slot); - udelay(250000); /* some cards need >150 ms to come up :-( */ + immap = (immap_t *) CFG_IMMR; + sysp = (sysconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_siu_conf)); + pcmp = (pcmconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_pcmcia)); + cp = (cpm8xx_t *) (&(((immap_t *) CFG_IMMR)->im_cpm)); - debug ("# hardware_enable done\n"); + /* clear interrupt state, and disable interrupts */ + pcmp->pcmc_pscr = PCMCIA_MASK (_slot_); + pcmp->pcmc_per &= ~PCMCIA_MASK (_slot_); - return 0; + /* + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal + */ + debug ("Disable PCMCIA buffers and assert RESET\n"); + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + PCMCIA_PGCRX (_slot_) = reg; + udelay (500); + + /* + * Make sure there is a card in the slot, + * then configure the interface. + */ + udelay (10000); + debug ("[%d] %s: PIPR(%p)=0x%x\n", + __LINE__, __FUNCTION__, + &(pcmp->pcmc_pipr), pcmp->pcmc_pipr); + if (pcmp->pcmc_pipr & 0x98000000) { + printf (" No Card found\n"); + return (1); + } + + mask = PCMCIA_VS1 (slot) | PCMCIA_VS2 (slot); + reg = pcmp->pcmc_pipr; + debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n", + reg, + (reg & PCMCIA_VS1 (slot)) ? "n" : "ff", + (reg & PCMCIA_VS2 (slot)) ? "n" : "ff"); + + debug ("Enable PCMCIA buffers and stop RESET\n"); + reg = PCMCIA_PGCRX (_slot_); + reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */ + PCMCIA_PGCRX (_slot_) = reg; + + udelay (250000); /* some cards need >150 ms to come up :-( */ + + debug ("# hardware_enable done\n"); + + return 0; } #if (CONFIG_COMMANDS & CFG_CMD_PCMCIA) static int hardware_disable(int slot) @@ -1046,9 +1033,9 @@ static int hardware_disable(int slot) #endif /* CFG_CMD_PCMCIA */ #endif /* CONFIG_GTH */ -/* ---------------------------------------------------------------------------- */ -/* ICU862 Boards by Cambridge Broadband Ltd. */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* ICU862 Boards by Cambridge Broadband Ltd. */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_ICU862) @@ -1087,17 +1074,14 @@ static int hardware_enable(int slot) pcmp->pcmc_pscr = PCMCIA_MASK(_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1125,13 +1109,13 @@ static int hardware_enable(int slot) reg = cp->cp_pbdat; if ((pipr & mask) == mask) { - reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ - TPS2205_VCC3); /* 3V off */ + reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ + TPS2205_VCC3); /* 3V off */ reg &= ~(TPS2205_VCC5); /* 5V on */ puts (" 5.0V card found: "); } else { - reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ - TPS2205_VCC5); /* 5V off */ + reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ + TPS2205_VCC5); /* 5V off */ reg &= ~(TPS2205_VCC3); /* 3V on */ puts (" 3.3V card found: "); } @@ -1188,10 +1172,8 @@ static int hardware_disable(int slot) cp->cp_pbdat &= ~(TPS2205_SHDN); /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(_slot_) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; @@ -1224,9 +1206,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(_slot_); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1298,9 +1280,9 @@ static void cfg_port_B (void) * Switch off all voltages, assert shutdown */ reg = cp->cp_pbdat; - reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ - TPS2205_VCC3 | TPS2205_VCC5 | /* VAVCC => Hi-Z */ - TPS2205_SHDN); /* enable switch */ + reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */ + TPS2205_VCC3 | TPS2205_VCC5 | /* VAVCC => Hi-Z */ + TPS2205_SHDN); /* enable switch */ cp->cp_pbdat = reg; cp->cp_pbpar &= ~(TPS2205_INPUTS | TPS2205_OUTPUTS); @@ -1315,9 +1297,9 @@ static void cfg_port_B (void) #endif /* ICU862 */ -/* ---------------------------------------------------------------------------- */ -/* C2MON Boards by TTTech Computertechnik AG */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* C2MON Boards by TTTech Computertechnik AG */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_C2MON) @@ -1357,17 +1339,14 @@ static int hardware_enable(int slot) pcmp->pcmc_pscr = PCMCIA_MASK(_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1453,10 +1432,8 @@ static int hardware_disable(int slot) pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia)); /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(_slot_) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; @@ -1494,9 +1471,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(_slot_); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1599,9 +1576,9 @@ static void cfg_ports (void) #endif /* C2MON */ -/* ---------------------------------------------------------------------------- - MBX board from Morotola - ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* MBX board from Morotola */ +/* -------------------------------------------------------------------- */ #if defined( CONFIG_MBX ) #include <../board/mbx8xx/csr.h> @@ -1687,15 +1664,12 @@ static int hardware_enable (int slot) pcmp->pcmc_pscr = PCMCIA_MASK (_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK (_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX (_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX (_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX (_slot_) = reg; @@ -1752,9 +1726,9 @@ static int hardware_disable (int slot) } #endif /* CFG_CMD_PCMCIA */ #endif /* CONFIG_MBX */ -/* ---------------------------------------------------------------------------- */ -/* R360MPI Board */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* R360MPI Board */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_R360MPI) @@ -1788,17 +1762,14 @@ static int hardware_enable(int slot) pcmp->pcmc_pscr = PCMCIA_MASK(_slot_); pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(_slot_) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1889,10 +1860,8 @@ static int hardware_disable(int slot) immap->im_ioport.iop_padat |= 0x0200; /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(_slot_) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(_slot_); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; @@ -1923,9 +1892,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(_slot_); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(_slot_) = reg; udelay(500); @@ -1963,8 +1932,8 @@ static int voltage_set(int slot, int vcc, int vpp) immap->im_ioport.iop_pcdat &= !reg; if (reg & 0x0400) immap->im_ioport.iop_padat &= !reg; - immap->im_ioport.iop_pcdir |= 0x0200; - immap->im_ioport.iop_padir |= 0x0400; + immap->im_ioport.iop_pcdir |= 0x0200; + immap->im_ioport.iop_padir |= 0x0400; if (reg) { debug ("PCMCIA powered at %sV\n", (reg&0x0400) ? "5.0" : "3.3"); @@ -1987,9 +1956,9 @@ done: #endif /* R360MPI */ -/* ---------------------------------------------------------------------------- */ -/* KUP4K Board */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* KUP4K Board */ +/* -------------------------------------------------------------------- */ #if defined(CONFIG_KUP4K) #define PCMCIA_BOARD_MSG "KUP4K" @@ -2023,17 +1992,14 @@ static int hardware_enable(int slot) pcmp->pcmc_pscr = PCMCIA_MASK(slot); pcmp->pcmc_per &= ~PCMCIA_MASK(slot); - /* disable interrupts & DMA */ - PCMCIA_PGCRX(slot) = 0; - /* - * Disable PCMCIA buffers (isolate the interface) - * and assert RESET signal + * Disable interrupts, DMA, and PCMCIA buffers + * (isolate the interface) and assert RESET signal */ debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(slot); - reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = 0; + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(slot) = reg; udelay(2500); @@ -2110,16 +2076,14 @@ static int hardware_disable(int slot) immap = (immap_t *)CFG_IMMR; pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia)); cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm)); - + /* remove all power */ if (slot) cp->cp_pbdat |= KUP4K_PCMCIA_B_3V3; /* Configure PCMCIA General Control Register */ - PCMCIA_PGCRX(slot) = 0; - debug ("Disable PCMCIA buffers and assert RESET\n"); - reg = PCMCIA_PGCRX(slot); + reg = 0; reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(slot) = reg; @@ -2156,9 +2120,9 @@ 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 |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ - reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ + reg = PCMCIA_PGCRX(slot); + reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */ + reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */ PCMCIA_PGCRX(slot) = reg; udelay(500); @@ -2213,14 +2177,14 @@ static int voltage_set(int slot, int vcc, int vpp) -/* ---------------------------------------------------------------------------- */ -/* End of Board Specific Stuff */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* End of Board Specific Stuff */ +/* -------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------------- */ -/* MPC8xx Specific Stuff - should go to MPC8xx directory */ -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ +/* MPC8xx Specific Stuff - should go to MPC8xx directory */ +/* -------------------------------------------------------------------- */ /* * Search this table to see if the windowsize is @@ -2241,7 +2205,7 @@ static const u_int m8xx_size_to_gray[M8XX_SIZES_NO] = 0x00800000, 0x00400000, 0x00100000, 0x00200000 }; -/* ---------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ static u_int m8xx_get_graycode(u_int size) { @@ -2258,7 +2222,7 @@ static u_int m8xx_get_graycode(u_int size) return k; } -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #if 0 static u_int m8xx_get_speed(u_int ns, u_int is_io) @@ -2311,7 +2275,7 @@ static u_int m8xx_get_speed(u_int ns, u_int is_io) } #endif -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #ifdef CONFIG_IDE_8xx_PCCARD static void print_funcid (int func) @@ -2353,7 +2317,7 @@ static void print_funcid (int func) } #endif /* CONFIG_IDE_8xx_PCCARD */ -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #ifdef CONFIG_IDE_8xx_PCCARD static void print_fixed (volatile uchar *p) @@ -2411,7 +2375,7 @@ static void print_fixed (volatile uchar *p) } #endif /* CONFIG_IDE_8xx_PCCARD */ -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #ifdef CONFIG_IDE_8xx_PCCARD @@ -2475,6 +2439,6 @@ static int identify (volatile uchar *p) } #endif /* CONFIG_IDE_8xx_PCCARD */ -/* ------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------- */ #endif /* CFG_CMD_PCMCIA || (CFG_CMD_IDE && CONFIG_IDE_8xx_PCCARD) */ diff --git a/include/configs/KUP4K.h b/include/configs/KUP4K.h index 7dc1b90d17..d02ec0d637 100644 --- a/include/configs/KUP4K.h +++ b/include/configs/KUP4K.h @@ -292,7 +292,7 @@ #define CONFIG_IDE_8xx_PCCARD 1 /* Use IDE with PC Card Adapter */ #undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */ -#undef CONFIG_IDE_LED /* LED for ide not supported */ +#define CONFIG_IDE_LED 1 /* LED for ide supported */ #undef CONFIG_IDE_RESET /* reset for ide not supported */ #define CFG_IDE_MAXBUS 2