summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>2000-02-09 21:00:22 +0000
committergibbs <gibbs@FreeBSD.org>2000-02-09 21:00:22 +0000
commit166a4ec9acfb013d5ae199cca0774e40a240f09b (patch)
tree16800933e692e2f880fa980ef4cfd7449d309c69 /sys/dev
parent2fb4ae435fb81cf80118686a2955f9c3f4ef8e23 (diff)
downloadFreeBSD-src-166a4ec9acfb013d5ae199cca0774e40a240f09b.zip
FreeBSD-src-166a4ec9acfb013d5ae199cca0774e40a240f09b.tar.gz
Fix parity error detection logic for aic7880 and aic7895 chips during
the probe of external SRAM. Approved by: jkh@FreeBSD.org
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/aic7xxx/ahc_pci.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/sys/dev/aic7xxx/ahc_pci.c b/sys/dev/aic7xxx/ahc_pci.c
index 6e86839..44ff93f 100644
--- a/sys/dev/aic7xxx/ahc_pci.c
+++ b/sys/dev/aic7xxx/ahc_pci.c
@@ -549,11 +549,11 @@ static void configure_termination(struct ahc_softc *ahc,
u_int *sxfrctl1);
static void ahc_new_term_detect(struct ahc_softc *ahc,
- int *enableSEC_low,
- int *enableSEC_high,
- int *enablePRI_low,
- int *enablePRI_high,
- int *eeprom_present);
+ int *enableSEC_low,
+ int *enableSEC_high,
+ int *enablePRI_low,
+ int *enablePRI_high,
+ int *eeprom_present);
static void aic787X_cable_detect(struct ahc_softc *ahc, int *internal50_present,
int *internal68_present,
int *externalcable_present,
@@ -956,6 +956,15 @@ ahc_probe_ext_scbram(struct ahc_softc *ahc)
}
enable = TRUE;
+ /*
+ * Clear any outstanding parity error
+ * and ensure that parity error reporting
+ * is enabled.
+ */
+ ahc_outb(ahc, SEQCTL, 0);
+ ahc_outb(ahc, CLRINT, CLRPARERR);
+ ahc_outb(ahc, CLRINT, CLRBRKADRINT);
+
/* Now see if we can do parity */
ahc_ext_scbram_config(ahc, enable, /*pcheck*/TRUE, fast);
num_scbs = ahc_probe_scbs(ahc);
@@ -976,12 +985,17 @@ ahc_probe_ext_scbram(struct ahc_softc *ahc)
fast = TRUE;
done:
- /* Clear any resulting parity error */
+ /*
+ * Disable parity error reporting until we
+ * can load instruction ram.
+ */
+ ahc_outb(ahc, SEQCTL, PERRORDIS|FAILDIS);
+ /* Clear any latched parity error */
ahc_outb(ahc, CLRINT, CLRPARERR);
ahc_outb(ahc, CLRINT, CLRBRKADRINT);
if (bootverbose && enable) {
- printf("%s: External SRAM, %dns access%s\n",
- ahc_name(ahc), fast ? 10 : 20,
+ printf("%s: External SRAM, %s access%s\n",
+ ahc_name(ahc), fast ? "fast" : "slow",
pcheck ? ", parity checking enabled" : "");
}
OpenPOWER on IntegriCloud