Remove ancient SimOS support.
authorSascha Wildner <swildner@dragonflybsd.org>
Sun, 11 Feb 2007 01:51:28 +0000 (01:51 +0000)
committerSascha Wildner <swildner@dragonflybsd.org>
Sun, 11 Feb 2007 01:51:28 +0000 (01:51 +0000)
sys/bus/pci/pci.c
sys/conf/files
sys/conf/options
sys/dev/disk/simos/simos.c [deleted file]
sys/dev/disk/simos/simos.h [deleted file]

index 4f76811..7611d68 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/pci/pci.c,v 1.141.2.15 2002/04/30 17:48:18 tmm Exp $
- * $DragonFly: src/sys/bus/pci/pci.c,v 1.36 2006/12/22 23:12:17 swildner Exp $
+ * $DragonFly: src/sys/bus/pci/pci.c,v 1.37 2007/02/11 01:51:28 swildner Exp $
  *
  */
 
 #include "opt_bus.h"
 #include "opt_pci.h"
 
-#include "opt_simos.h"
 #include "opt_compat_oldpci.h"
 
 #include <sys/param.h>
index a6c9373..0632ff7 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/conf/files,v 1.340.2.137 2003/06/04 17:10:30 sam Exp $
-# $DragonFly: src/sys/conf/files,v 1.151 2007/02/01 10:33:25 corecode Exp $
+# $DragonFly: src/sys/conf/files,v 1.152 2007/02/11 01:51:28 swildner Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1094,7 +1094,6 @@ bus/pci/pci_pcib.c                optional pci
 bus/pci/pcisupport.c           optional pci
 bus/pci/pci_if.m               optional pci
 bus/pci/pcib_if.m              optional pci
-dev/disk/simos/simos.c         optional simos
 dev/powermng/i386/alpm/alpm.c  optional alpm
 dev/misc/xrpu/xrpu.c           optional xrpu
 emulation/posix4/posix4_mib.c  standard
index c02cdf5..cc7a38f 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/conf/options,v 1.191.2.53 2003/06/04 17:56:58 sam Exp $
-# $DragonFly: src/sys/conf/options,v 1.62 2007/01/30 15:53:30 swildner Exp $
+# $DragonFly: src/sys/conf/options,v 1.63 2007/02/11 01:51:28 swildner Exp $
 #
 #        On the handling of kernel options
 #
@@ -465,9 +465,6 @@ COM_MULTIPORT               opt_sio.h
 BREAK_TO_DEBUGGER      opt_comconsole.h
 ALT_BREAK_TO_DEBUGGER  opt_comconsole.h
 
-# Include tweaks for running under the SimOS machine simulator.
-SIMOS                  opt_simos.h
-
 # options for bus/device framework
 BUS_DEBUG              opt_bus.h
 DEVICE_SYSCTLS         opt_bus.h
diff --git a/sys/dev/disk/simos/simos.c b/sys/dev/disk/simos/simos.c
deleted file mode 100644 (file)
index 7703ed8..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * 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.
- *
- * $FreeBSD: src/sys/pci/simos.c,v 1.7 1999/08/28 00:51:06 peter Exp $
- * $DragonFly: src/sys/dev/disk/simos/Attic/simos.c,v 1.8 2006/12/22 23:26:17 swildner Exp $
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-#include <sys/buf.h>
-#include <sys/proc.h>
-#include <sys/thread2.h>
-
-#include <bus/cam/cam.h>
-#include <bus/cam/cam_ccb.h>
-#include <bus/cam/cam_sim.h>
-#include <bus/cam/cam_xpt_sim.h>
-#include <bus/cam/cam_debug.h>
-
-#include <bus/cam/scsi/scsi_all.h>
-#include <bus/cam/scsi/scsi_message.h>
-
-#include <machine/clock.h>
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-#include <sys/kernel.h>
-
-#include "simos.h"
-
-#include <bus/pci/pcireg.h>
-#include <bus/pci/pcivar.h>
-
-#include <machine/alpha_cpu.h>
-
-struct simos_softc {
-       int                     sc_unit;
-       SimOS_SCSI*             sc_regs;
-
-       /*
-        * SimOS only supports one pending command.
-        */
-       struct cam_sim         *sc_sim;
-       struct cam_path        *sc_path;
-       struct ccb_scsiio      *sc_pending;
-};
-
-struct simos_softc* simosp[10];
-
-static u_long simos_unit;
-
-static const char *simos_probe (pcici_t tag, pcidi_t type);
-static void simos_attach (pcici_t config_d, int unit);
-static void simos_action (struct cam_sim *sim, union ccb *ccb);
-static void simos_poll (struct cam_sim *sim);
-
-struct pci_device simos_driver = {
-       "simos",
-       simos_probe,
-       simos_attach,
-       &simos_unit,
-       NULL
-};
-COMPAT_PCI_DRIVER (simos, simos_driver);
-
-static const char *
-simos_probe(pcici_t tag, pcidi_t type)
-{       
-       switch (type) {
-       case 0x1291|(0x1291<<16):
-               return "SimOS SCSI";
-       default:
-               return NULL;
-       }
-               
-}
-
-static void    
-simos_attach(pcici_t config_id, int unit)
-{
-       struct simos_softc* sc;
-       struct cam_devq *devq;
-
-       sc = kmalloc(sizeof(struct simos_softc), M_DEVBUF, M_WAITOK);
-       simosp[unit] = sc;
-       bzero(sc, sizeof *sc);
-
-       sc->sc_unit = unit;
-       sc->sc_regs = (SimOS_SCSI*) SIMOS_SCSI_ADDR;
-       sc->sc_pending = 0;
-
-       devq = cam_simq_alloc(/*maxopenings*/1);
-       if (devq == NULL)
-               return;
-
-       sc->sc_sim = cam_sim_alloc(simos_action, simos_poll, "simos", sc, unit,
-                                  /*untagged*/1, /*tagged*/0, devq);
-       cam_simq_release(devq);
-       if (sc->sc_sim == NULL) {
-               return;
-       }
-
-       if (xpt_bus_register(sc->sc_sim, /*bus*/0) != CAM_SUCCESS) {
-               cam_sim_free(sc->sc_sim);
-               return;
-       }
-
-       if (xpt_create_path(&sc->sc_path, /*periph*/NULL,
-                           cam_sim_path(sc->sc_sim), CAM_TARGET_WILDCARD,
-                           CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
-               xpt_bus_deregister(cam_sim_path(sc->sc_sim));
-               cam_sim_free(sc->sc_sim);
-               return;
-       }
-
-       alpha_register_pci_scsi(config_id->bus, config_id->slot, sc->sc_sim);
-
-       return;
-}
-
-static void
-simos_start(struct simos_softc* sc, struct ccb_scsiio *csio)
-{
-       struct scsi_generic *cmd;
-       int cmdlen;
-       caddr_t data;
-       int datalen;
-       u_int8_t* p;
-       int i, count, target;
-       vm_offset_t va;
-       vm_size_t size;
-
-       cmd = (struct scsi_generic *) &csio->cdb_io.cdb_bytes;
-       cmdlen = csio->cdb_len;
-       data = csio->data_ptr;
-       datalen = csio->dxfer_len;
-
-       /*
-        * Simos doesn't understand some commands
-        */
-       if (cmd->opcode == START_STOP || cmd->opcode == PREVENT_ALLOW
-           || cmd->opcode == SYNCHRONIZE_CACHE) {
-               csio->ccb_h.status = CAM_REQ_CMP;
-               xpt_done((union ccb *) csio);
-               return;
-       }
-
-       if (sc->sc_pending) {
-               /*
-                * Don't think this can happen.
-                */
-               kprintf("simos_start: can't start command while one is pending\n");
-               csio->ccb_h.status = CAM_BUSY;
-               xpt_done((union ccb *) csio);
-               return;
-       }
-
-       crit_enter();
-       
-       csio->ccb_h.status |= CAM_SIM_QUEUED;
-       sc->sc_pending = csio;
-
-       target = csio->ccb_h.target_id;
-
-       /*
-        * Copy the command into SimOS' buffer
-        */
-       p = (u_int8_t*) cmd;
-       count = cmdlen;
-       for (i = 0; i < count; i++)
-               sc->sc_regs->cmd[i] = *p++;
-       sc->sc_regs->length = count;
-       sc->sc_regs->target = target;
-       sc->sc_regs->lun = csio->ccb_h.target_lun;
-
-       /*
-        * Setup the segment descriptors.
-        */
-       va = (vm_offset_t) data;
-       size = datalen;
-       i = 0;
-       while (size > 0) {
-               vm_size_t len = PAGE_SIZE - (va & PAGE_MASK);
-               if (len > size)
-                       len = size;
-               sc->sc_regs->sgMap[i].pAddr = vtophys(va);
-               sc->sc_regs->sgMap[i].len = len;
-               size -= len;
-               va += len;
-               i++;
-       }
-       sc->sc_regs->sgLen = i;
-
-       /*
-        * Start the i/o.
-        */
-       alpha_wmb();
-       sc->sc_regs->startIO = 1;
-       alpha_wmb();
-
-       crit_exit();
-}
-
-static void
-simos_done(struct simos_softc* sc)
-{
-       struct ccb_scsiio* csio = sc->sc_pending;
-       int done;
-
-       /*
-        * Spurious interrupt caused by my bogus interrupt broadcasting.
-        */
-       if (!csio)
-               return;
-
-       sc->sc_pending = 0;
-
-       done = sc->sc_regs->done[csio->ccb_h.target_id];
-       if (!done)
-               return;
-
-       crit_enter();
-
-       if (done >> 16)
-               /* Error detected */
-               csio->ccb_h.status = CAM_CMD_TIMEOUT;
-       else
-               csio->ccb_h.status = CAM_REQ_CMP;
-
-       /*
-        * Ack the interrupt to clear it.
-        */
-       sc->sc_regs->done[csio->ccb_h.target_id] = 1;
-       alpha_wmb();
-       
-       xpt_done((union ccb *) csio);
-
-       crit_exit();
-}
-
-static void
-simos_action(struct cam_sim *sim, union ccb *ccb)
-{
-       struct simos_softc* sc = (struct simos_softc *)sim->softc;
-
-       switch (ccb->ccb_h.func_code) {
-       case XPT_SCSI_IO:
-       {
-               struct ccb_scsiio *csio;
-
-               csio = &ccb->csio;
-               simos_start(sc, csio);
-               break;
-       }
-
-       case XPT_CALC_GEOMETRY:
-       {
-               struct    ccb_calc_geometry *ccg;
-               u_int32_t size_mb;
-               u_int32_t secs_per_cylinder;
-
-               ccg = &ccb->ccg;
-               size_mb = ccg->volume_size
-                       / ((1024L * 1024L) / ccg->block_size);
-
-               ccg->heads = 64;
-               ccg->secs_per_track = 32;
-
-               secs_per_cylinder = ccg->heads * ccg->secs_per_track;
-               ccg->cylinders = ccg->volume_size / secs_per_cylinder;
-
-               ccb->ccb_h.status = CAM_REQ_CMP;
-               xpt_done(ccb);
-               break;
-       }
-
-       case XPT_RESET_BUS:
-       {
-               ccb->ccb_h.status = CAM_REQ_CMP;
-               xpt_done(ccb);
-               break;
-       }
-
-       case XPT_PATH_INQ:
-       {
-               struct ccb_pathinq *cpi = &ccb->cpi;
-               
-               cpi->version_num = 1; /* XXX??? */
-               cpi->max_target = 2;
-               cpi->max_lun = 0;
-               cpi->initiator_id = 7;
-               cpi->bus_id = sim->bus_id;
-               cpi->base_transfer_speed = 3300;
-               strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
-               strncpy(cpi->hba_vid, "SimOS", HBA_IDLEN);
-               strncpy(cpi->dev_name, sim->sim_name, DEV_IDLEN);
-               cpi->unit_number = sim->unit_number;
-
-               cpi->ccb_h.status = CAM_REQ_CMP;
-               xpt_done(ccb);
-               break;
-       }
-
-       default:
-               ccb->ccb_h.status = CAM_REQ_INVALID;
-               xpt_done(ccb);
-               break;
-       }
-}
-
-static void
-simos_poll(struct cam_sim *sim)
-{       
-       simos_done(cam_sim_softc(sim));
-}
-
-void
-simos_intr(int unit)
-{
-       /* XXX bogus */
-       struct simos_softc* sc = simosp[unit];
-
-       simos_done(sc);
-}
diff --git a/sys/dev/disk/simos/simos.h b/sys/dev/disk/simos/simos.h
deleted file mode 100644 (file)
index 5b74094..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * 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.
- *
- * $FreeBSD: src/sys/pci/simos.h,v 1.2 1999/08/28 00:51:06 peter Exp $
- * $DragonFly: src/sys/dev/disk/simos/Attic/simos.h,v 1.2 2003/06/17 04:28:57 dillon Exp $
- */
-
-/*
- * Copyright (C) 1998 by the Board of Trustees
- *    of Leland Stanford Junior University.
- * Copyright (C) 1998 Digital Equipment Corporation
- *
- * This file is part of the SimOS distribution.
- * See LICENSE file for terms of the license.
- *
- */
-
-
-
-
-#ifndef _SIMOS_SCSI_H
-#define _SIMOS_SCSI_H
-
-#define SIMOS_SCSI_ADDR       0xfffffcc500000000
-#define SIMOS_SCSI_ADDR_32    0xffffffffa5000000
-#define SIMOS_SCSI_MAXDMA_LEN 128
-#define SIMOS_SCSI_MAXTARG    16
-#define SIMOS_SCSI_MAXLUN     16
-
-#define SIMOS_SCSI_REGS     ((struct SimOS_SCSI *)SIMOS_SCSI_ADDR)
-#define SIMOS_SCSI_REGS_32  ((struct SimOS_SCSI *)SIMOS_SCSI_ADDR_32)
-
-typedef unsigned long SCSIReg;
-
-
-typedef struct SimOS_SCSI {
-   SCSIReg startIO;   /* write-only */
-   SCSIReg done[SIMOS_SCSI_MAXTARG];  /* read-write (write=ack) */
-
-   SCSIReg target;                     /* data fields */
-   SCSIReg lun;
-   SCSIReg cmd[12];
-   SCSIReg length;
-   SCSIReg sgLen;
-   struct {
-      SCSIReg pAddr;
-      SCSIReg len;
-   } sgMap[SIMOS_SCSI_MAXDMA_LEN];
-   
-   
-} SimOS_SCSI;
-
-#endif