aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/aha
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2017-02-15 23:04:25 +0000
committerWarner Losh <imp@FreeBSD.org>2017-02-15 23:04:25 +0000
commit5625fe92467ac884efd681949d304d5d7663b6d7 (patch)
tree822cae5d08b8452f871520175f702861698fcf37 /sys/dev/aha
parent5d6770bd30ea2c49cb92566c406739ca4395dbd0 (diff)
downloadsrc-5625fe92467ac884efd681949d304d5d7663b6d7.tar.gz
src-5625fe92467ac884efd681949d304d5d7663b6d7.zip
Remove Micro Channel Architecture support. Of the commonly available
machines, only a few 486 machines that used it, and those haven't had enough memory to run FreeBSD for quite some time (often limited to 16MB). Not to be confused with the Machine Check Architecture, which is still very much alive and used (and untouched by this commit). No Objection From: arch@
Notes
Notes: svn path=/head/; revision=313783
Diffstat (limited to 'sys/dev/aha')
-rw-r--r--sys/dev/aha/aha_mca.c231
1 files changed, 0 insertions, 231 deletions
diff --git a/sys/dev/aha/aha_mca.c b/sys/dev/aha/aha_mca.c
deleted file mode 100644
index b954e07774ad..000000000000
--- a/sys/dev/aha/aha_mca.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*-
- * Copyright (c) 1999 Matthew N. Dodd <winter@jurai.net>
- * 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, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 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.
- *
- * Based on aha_isa.c
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <sys/rman.h>
-
-#include <isa/isavar.h>
-
-#include <dev/mca/mca_busreg.h>
-#include <dev/mca/mca_busvar.h>
-
-#include <dev/aha/ahareg.h>
-
-static struct mca_ident aha_mca_devs[] = {
- { 0x0f1f, "Adaptec AHA-1640 SCSI Adapter" },
- { 0, NULL },
-};
-
-#define AHA_MCA_IOPORT_POS MCA_ADP_POS(MCA_POS1)
-# define AHA_MCA_IOPORT_MASK1 0x07
-# define AHA_MCA_IOPORT_MASK2 0xc0
-# define AHA_MCA_IOPORT_SIZE 0x03
-# define AHA_MCA_IOPORT(pos) (0x30 + \
- (((uint32_t)pos & \
- AHA_MCA_IOPORT_MASK1) << 8) + \
- (((uint32_t)pos & \
- AHA_MCA_IOPORT_MASK2) >> 4))
-
-#define AHA_MCA_DRQ_POS MCA_ADP_POS(MCA_POS3)
-# define AHA_MCA_DRQ_MASK 0x0f
-# define AHA_MCA_DRQ(pos) (pos & AHA_MCA_DRQ_MASK)
-
-#define AHA_MCA_IRQ_POS MCA_ADP_POS(MCA_POS2)
-# define AHA_MCA_IRQ_MASK 0x07
-# define AHA_MCA_IRQ(pos) ((pos & AHA_MCA_IRQ_MASK) + 8)
-
-/*
- * Not needed as the board knows its config
- * internally and the ID will be fetched
- * via AOP_INQUIRE_SETUP_INFO command.
- */
-#define AHA_MCA_SCSIID_POS MCA_ADP_POS(MCA_POS2)
-#define AHA_MCA_SCSIID_MASK 0xe0
-#define AHA_MCA_SCSIID(pos) ((pos & AHA_MCA_SCSIID_MASK) >> 5)
-
-static int
-aha_mca_probe (device_t dev)
-{
- const char * desc;
- mca_id_t id = mca_get_id(dev);
- uint32_t iobase = 0;
- uint32_t iosize = 0;
- uint8_t drq = 0;
- uint8_t irq = 0;
- uint8_t pos;
-
- desc = mca_match_id(id, aha_mca_devs);
- if (!desc)
- return (ENXIO);
- device_set_desc(dev, desc);
-
- pos = mca_pos_read(dev, AHA_MCA_IOPORT_POS);
- iobase = AHA_MCA_IOPORT(pos);
- iosize = AHA_MCA_IOPORT_SIZE;
-
- pos = mca_pos_read(dev, AHA_MCA_DRQ_POS);
- drq = AHA_MCA_DRQ(pos);
-
- pos = mca_pos_read(dev, AHA_MCA_IRQ_POS);
- irq = AHA_MCA_IRQ(pos);
-
- mca_add_iospace(dev, iobase, iosize);
- mca_add_drq(dev, drq);
- mca_add_irq(dev, irq);
-
- return (0);
-}
-
-static int
-aha_mca_attach (device_t dev)
-{
- struct aha_softc * sc = device_get_softc(dev);
- int error = ENOMEM;
-
- sc->portrid = 0;
- sc->port = bus_alloc_resource_any(dev, SYS_RES_IOPORT, &sc->portrid,
- RF_ACTIVE);
- if (sc->port == NULL) {
- device_printf(dev, "No I/O space?!\n");
- goto bad;
- }
-
- sc->irqrid = 0;
- sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqrid,
- RF_ACTIVE);
- if (sc->irq == NULL) {
- device_printf(dev, "No IRQ?!\n");
- goto bad;
- }
-
- sc->drqrid = 0;
- sc->drq = bus_alloc_resource_any(dev, SYS_RES_DRQ, &sc->drqrid,
- RF_ACTIVE);
- if (sc->drq == NULL) {
- device_printf(dev, "No DRQ?!\n");
- goto bad;
- }
-
- aha_alloc(sc);
- error = aha_probe(sc);
- if (error) {
- device_printf(dev, "aha_probe() failed!\n");
- goto bad;
- }
-
- error = aha_fetch_adapter_info(sc);
- if (error) {
- device_printf(dev, "aha_fetch_adapter_info() failed!\n");
- goto bad;
- }
-
- isa_dmacascade(rman_get_start(sc->drq));
-
- error = bus_dma_tag_create(
- /* parent */ bus_get_dma_tag(dev),
- /* alignemnt */ 1,
- /* boundary */ 0,
- /* lowaddr */ BUS_SPACE_MAXADDR_24BIT,
- /* highaddr */ BUS_SPACE_MAXADDR,
- /* filter */ NULL,
- /* filterarg */ NULL,
- /* maxsize */ BUS_SPACE_MAXSIZE_24BIT,
- /* nsegments */ ~0,
- /* maxsegsz */ BUS_SPACE_MAXSIZE_24BIT,
- /* flags */ 0,
- /* lockfunc */ NULL,
- /* lockarg */ NULL,
- &sc->parent_dmat);
- if (error) {
- device_printf(dev, "bus_dma_tag_create() failed!\n");
- goto bad;
- }
-
- error = aha_init(sc);
- if (error) {
- device_printf(dev, "aha_init() failed\n");
- goto bad;
- }
-
- error = aha_attach(sc);
- if (error) {
- device_printf(dev, "aha_attach() failed\n");
- goto bad;
- }
-
- error = bus_setup_intr(dev, sc->irq, INTR_TYPE_CAM | INTR_ENTROPY |
- INTR_MPSAFE, NULL, aha_intr, sc, &sc->ih);
- if (error) {
- device_printf(dev, "Unable to register interrupt handler\n");
- aha_detach(sc);
- goto bad;
- }
-
- return (0);
-
-bad:
- aha_free(sc);
- bus_free_resource(dev, SYS_RES_IOPORT, sc->port);
- bus_free_resource(dev, SYS_RES_IRQ, sc->irq);
- bus_free_resource(dev, SYS_RES_DRQ, sc->drq);
- return (error);
-}
-
-static device_method_t aha_mca_methods[] = {
- DEVMETHOD(device_probe, aha_mca_probe),
- DEVMETHOD(device_attach, aha_mca_attach),
-
- { 0, 0 }
-};
-
-static driver_t aha_mca_driver = {
- "aha",
- aha_mca_methods,
- 1,
-/*
- sizeof(struct aha_softc *),
- */
-};
-
-static devclass_t aha_devclass;
-
-DRIVER_MODULE(aha, mca, aha_mca_driver, aha_devclass, 0, 0);
-MODULE_DEPEND(aha, mca, 1, 1, 1);