Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic Common code for EISA and VL frontends for the ahc...



details:   https://anonhg.NetBSD.org/src/rev/cbd94570edfb
branches:  trunk
changeset: 483653:cbd94570edfb
user:      fvdl <fvdl%NetBSD.org@localhost>
date:      Wed Mar 15 02:06:18 2000 +0000

description:
Common code for EISA and VL frontends for the ahc driver, split off
by Noriyuki Soda when updating for the new ahc driver.

diffstat:

 sys/dev/ic/aic77xx.c    |  138 ++++++++++++++++++++++++++++++++++++++++++++++++
 sys/dev/ic/aic77xxreg.h |   38 +++++++++++++
 sys/dev/ic/aic77xxvar.h |   34 +++++++++++
 3 files changed, 210 insertions(+), 0 deletions(-)

diffs (222 lines):

diff -r b10a8d757576 -r cbd94570edfb sys/dev/ic/aic77xx.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/ic/aic77xx.c      Wed Mar 15 02:06:18 2000 +0000
@@ -0,0 +1,138 @@
+/*     $NetBSD: aic77xx.c,v 1.1 2000/03/15 02:06:18 fvdl Exp $ */
+
+/*
+ * Common routines for AHA-27/284X and aic7770 motherboard SCSI controllers.
+ *
+ * Copyright (c) 1994, 1995, 1996, 1997, 1998 Justin T. Gibbs.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/dev/aic7xxx/ahc_eisa.c,v 1.15 2000/01/29 14:22:19 peter Exp $
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+
+#include <machine/bus.h>
+#include <machine/intr.h>
+
+#include <dev/scsipi/scsi_all.h>
+#include <dev/scsipi/scsipi_all.h>
+#include <dev/scsipi/scsiconf.h>
+
+#include <dev/microcode/aic7xxx/aic7xxx_reg.h>
+#include <dev/ic/aic7xxxvar.h>
+#include <dev/ic/aic77xxreg.h>
+#include <dev/ic/aic77xxvar.h>
+
+/*
+ * Return irq setting of the board, otherwise -1.
+ */
+int
+ahc_aic77xx_irq(iot, ioh)
+       bus_space_tag_t iot;
+       bus_space_handle_t ioh;
+{
+       int irq;
+       u_int8_t intdef;
+       u_int8_t hcntrl;
+
+       /* Pause the card preseving the IRQ type */
+       hcntrl = bus_space_read_1(iot, ioh, HCNTRL) & IRQMS;
+       bus_space_write_1(iot, ioh, HCNTRL, hcntrl | PAUSE);
+       
+       intdef = bus_space_read_1(iot, ioh, INTDEF);
+       irq = (intdef & INTDEF_IRQ_MASK);
+       switch (irq) {
+       case 9:
+       case 10:
+       case 11:
+       case 12:
+       case 14:
+       case 15:
+               break;
+       default:
+               printf("ahc_aic77xx_irq: illegal irq setting %d\n", intdef);
+               return (-1);
+       }
+
+       return (irq);
+}
+
+int
+ahc_aic77xx_attach(ahc)
+       struct ahc_softc *ahc;
+{
+       char *id_string;
+       u_int8_t sblkctl;
+       u_int8_t sblkctl_orig;
+       u_int8_t hostconf;
+
+       /*
+        * See if we have a Rev E or higher aic7770. Anything below a
+        * Rev E will have a R/O autoflush disable configuration bit.
+        */
+       sblkctl_orig = ahc_inb(ahc, SBLKCTL);
+       sblkctl = sblkctl_orig ^ AUTOFLUSHDIS;
+       ahc_outb(ahc, SBLKCTL, sblkctl);
+       sblkctl = ahc_inb(ahc, SBLKCTL);
+       if (sblkctl != sblkctl_orig) {
+               id_string = "aic7770 >= Rev E, ";
+               /*
+                * Ensure autoflush is enabled
+                */
+               sblkctl &= ~AUTOFLUSHDIS;
+               ahc_outb(ahc, SBLKCTL, sblkctl);
+       } else
+               id_string = "aic7770 <= Rev C, ";
+
+       printf("%s: %s", ahc_name(ahc), id_string);
+
+       /* Setup the FIFO threshold and the bus off time */
+       hostconf = ahc_inb(ahc, HOSTCONF);
+       ahc_outb(ahc, BUSSPD, hostconf & DFTHRSH);
+       ahc_outb(ahc, BUSTIME, (hostconf << 2) & BOFF);
+
+       /*
+        * Generic aic7xxx initialization.
+        */
+       if (ahc_init(ahc)) {
+               /*
+                * The board's IRQ line is not yet enabled so it's safe
+                * to release the irq.
+                */
+               return (ENXIO);
+       }
+
+       /*
+        * Enable the board's BUS drivers
+        */
+       ahc_outb(ahc, BCTL, ENABLE);
+
+       /* Attach sub-devices - always succeeds */
+       ahc_attach(ahc);
+
+       return 0;
+}
+
diff -r b10a8d757576 -r cbd94570edfb sys/dev/ic/aic77xxreg.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/ic/aic77xxreg.h   Wed Mar 15 02:06:18 2000 +0000
@@ -0,0 +1,38 @@
+/*     $NetBSD: aic77xxreg.h,v 1.1 2000/03/15 02:06:18 fvdl Exp $      */
+
+/*
+ * Common routines for AHA-27/284X and aic7770 motherboard SCSI controllers.
+ *
+ * Copyright (c) 1994, 1995, 1996, 1997, 1998 Justin T. Gibbs.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/dev/aic7xxx/ahc_eisa.c,v 1.15 2000/01/29 14:22:19 peter Exp $
+ */
+
+#define AHC_EISA_SLOT_OFFSET   0xc00
+#define AHC_EISA_IOSIZE                0x100
+
+#define INTDEF                 0x5c    /* Interrupt Definition Register */
+#define INTDEF_IST_LEVEL       0x80
+#define INTDEF_IRQ_MASK                0x0f
diff -r b10a8d757576 -r cbd94570edfb sys/dev/ic/aic77xxvar.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/ic/aic77xxvar.h   Wed Mar 15 02:06:18 2000 +0000
@@ -0,0 +1,34 @@
+/*     $NetBSD: aic77xxvar.h,v 1.1 2000/03/15 02:06:19 fvdl Exp $      */
+
+/*
+ * Common routines for AHA-27/284X and aic7770 motherboard SCSI controllers.
+ *
+ * Copyright (c) 1994, 1995, 1996, 1997, 1998 Justin T. Gibbs.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/dev/aic7xxx/ahc_eisa.c,v 1.15 2000/01/29 14:22:19 peter Exp $
+ */
+
+int    ahc_aic77xx_irq __P((bus_space_tag_t, bus_space_handle_t));
+int    ahc_aic77xx_attach __P((struct ahc_softc *ahc));



Home | Main Index | Thread Index | Old Index