Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/pica/dev Moved to /cvsroot/syssrc/sys/arch/arc/dev/...



details:   https://anonhg.NetBSD.org/src/rev/f0ee84e7fc93
branches:  trunk
changeset: 480957:f0ee84e7fc93
user:      soda <soda%NetBSD.org@localhost>
date:      Sun Jan 23 20:08:06 2000 +0000

description:
Moved to /cvsroot/syssrc/sys/arch/arc/dev/asc.c,v

diffstat:

 sys/arch/pica/dev/asc.c |  2066 -----------------------------------------------
 1 files changed, 0 insertions(+), 2066 deletions(-)

diffs (truncated from 2070 to 300 lines):

diff -r ed615e230e08 -r f0ee84e7fc93 sys/arch/pica/dev/asc.c
--- a/sys/arch/pica/dev/asc.c   Sun Jan 23 20:08:05 2000 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,2066 +0,0 @@
-/*     $NetBSD: asc.c,v 1.18 1999/04/12 20:38:20 pk Exp $      */
-
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell and Rick Macklem.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- *     @(#)asc.c       8.3 (Berkeley) 7/3/94
- */
-
-/* 
- * Mach Operating System
- * Copyright (c) 1991,1990,1989 Carnegie Mellon University
- * All Rights Reserved.
- * 
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
- * Carnegie Mellon requests users of this software to return to
- * 
- *  Software Distribution Coordinator  or  Software.Distribution%CS.CMU.EDU@localhost
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- * 
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-/*
- * HISTORY
- * Log:        scsi_53C94_hdw.c,v
- * Revision 2.5  91/02/05  17:45:07  mrt
- *     Added author notices
- *     [91/02/04  11:18:43  mrt]
- * 
- *     Changed to use new Mach copyright
- *     [91/02/02  12:17:20  mrt]
- * 
- * Revision 2.4  91/01/08  15:48:24  rpd
- *     Added continuation argument to thread_block.
- *     [90/12/27            rpd]
- * 
- * Revision 2.3  90/12/05  23:34:48  af
- *     Recovered from pmax merge.. and from the destruction of a disk.
- *     [90/12/03  23:40:40  af]
- * 
- * Revision 2.1.1.1  90/11/01  03:39:09  af
- *     Created, from the DEC specs:
- *     "PMAZ-AA TURBOchannel SCSI Module Functional Specification"
- *     Workstation Systems Engineering, Palo Alto, CA. Aug 27, 1990.
- *     And from the NCR data sheets
- *     "NCR 53C94, 53C95, 53C96 Advances SCSI Controller"
- *     [90/09/03            af]
- */
-
-/*
- *     File: scsi_53C94_hdw.h
- *     Author: Alessandro Forin, Carnegie Mellon University
- *     Date:   9/90
- *
- *     Bottom layer of the SCSI driver: chip-dependent functions
- *
- *     This file contains the code that is specific to the NCR 53C94
- *     SCSI chip (Host Bus Adapter in SCSI parlance): probing, start
- *     operation, and interrupt routine.
- */
-
-/*
- * This layer works based on small simple 'scripts' that are installed
- * at the start of the command and drive the chip to completion.
- * The idea comes from the specs of the NCR 53C700 'script' processor.
- *
- * There are various reasons for this, mainly
- * - Performance: identify the common (successful) path, and follow it;
- *   at interrupt time no code is needed to find the current status
- * - Code size: it should be easy to compact common operations
- * - Adaptability: the code skeleton should adapt to different chips without
- *   terrible complications.
- * - Error handling: and it is easy to modify the actions performed
- *   by the scripts to cope with strange but well identified sequences
- *
- */
-
-#include <asc.h>
-#if NASC > 0
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/dkstat.h>
-#include <sys/buf.h>
-#include <sys/proc.h>
-#include <sys/conf.h>
-#include <sys/errno.h>
-#include <sys/device.h>
-
-#include <dev/scsipi/scsi_all.h>
-#include <dev/scsipi/scsipi_all.h>
-#include <dev/scsipi/scsiconf.h>
-
-#include <machine/cpu.h>
-#include <machine/autoconf.h>
-#include <machine/bus.h>
-
-#include <pica/dev/dma.h>
-#include <pica/dev/scsi.h>
-#include <pica/dev/ascreg.h>
-
-#include <pica/pica/pica.h>
-#include <pica/pica/picatype.h>
-
-
-#define        readback(a)     { register int foo; foo = (a); }
-extern int cputype;
-
-/*
- * In 4ns ticks.
- */
-int    asc_to_scsi_period[] = {
-       32,
-       33,
-       34,
-       35,
-       5,
-       5,
-       6,
-       7,
-       8,
-       9,
-       10,
-       11,
-       12,
-       13,
-       14,
-       15,
-       16,
-       17,
-       18,
-       19,
-       20,
-       21,
-       22,
-       23,
-       24,
-       25,
-       26,
-       27,
-       28,
-       29,
-       30,
-       31,
-};
-
-/*
- * Internal forward declarations.
- */
-static void asc_reset();
-static void asc_startcmd();
-
-#ifdef DEBUG
-int    asc_debug = 1;
-int    asc_debug_cmd;
-int    asc_debug_bn;
-int    asc_debug_sz;
-#define NLOG 16
-struct asc_log {
-       u_int   status;
-       u_char  state;
-       u_char  msg;
-       int     target;
-       int     resid;
-} asc_log[NLOG], *asc_logp = asc_log;
-#define PACK(unit, status, ss, ir) \
-       ((unit << 24) | (status << 16) | (ss << 8) | ir)
-#endif
-
-/*
- * Scripts are entries in a state machine table.
- * A script has four parts: a pre-condition, an action, a command to the chip,
- * and an index into asc_scripts for the next state. The first triggers error
- * handling if not satisfied and in our case it is formed by the
- * values of the interrupt register and status register, this
- * basically captures the phase of the bus and the TC and BS
- * bits.  The action part is just a function pointer, and the
- * command is what the 53C94 should be told to do at the end
- * of the action processing.  This command is only issued and the
- * script proceeds if the action routine returns TRUE.
- * See asc_intr() for how and where this is all done.
- */
-typedef struct script {
-       int             condition;      /* expected state at interrupt time */
-       int             (*action)();    /* extra operations */
-       int             command;        /* command to the chip */
-       struct script   *next;          /* index into asc_scripts for next state */
-} script_t;
-
-/* Matching on the condition value */
-#define        SCRIPT_MATCH(ir, csr)           ((ir) | (((csr) & 0x67) << 8))
-
-/* forward decls of script actions */
-static int script_nop();               /* when nothing needed */
-static int asc_end();                  /* all come to an end */
-static int asc_get_status();           /* get status from target */
-static int asc_dma_in();               /* start reading data from target */
-static int asc_last_dma_in();          /* cleanup after all data is read */
-static int asc_resume_in();            /* resume data in after a message */
-static int asc_resume_dma_in();                /* resume DMA after a disconnect */
-static int asc_dma_out();              /* send data to target via dma */
-static int asc_last_dma_out();         /* cleanup after all data is written */
-static int asc_resume_out();           /* resume data out after a message */
-static int asc_resume_dma_out();       /* resume DMA after a disconnect */
-static int asc_sendsync();             /* negotiate sync xfer */
-static int asc_replysync();            /* negotiate sync xfer */
-static int asc_msg_in();               /* process a message byte */
-static int asc_disconnect();           /* process an expected disconnect */
-
-/* Define the index into asc_scripts for various state transitions */
-#define        SCRIPT_DATA_IN          0
-#define        SCRIPT_CONTINUE_IN      2
-#define        SCRIPT_DATA_OUT         3
-#define        SCRIPT_CONTINUE_OUT     5
-#define        SCRIPT_SIMPLE           6
-#define        SCRIPT_GET_STATUS       7
-#define        SCRIPT_DONE             8
-#define        SCRIPT_MSG_IN           9
-#define        SCRIPT_REPLY_SYNC       11
-#define        SCRIPT_TRY_SYNC         12
-#define        SCRIPT_DISCONNECT       15
-#define        SCRIPT_RESEL            16
-#define        SCRIPT_RESUME_IN        17
-#define        SCRIPT_RESUME_DMA_IN    18
-#define        SCRIPT_RESUME_OUT       19
-#define        SCRIPT_RESUME_DMA_OUT   20
-#define        SCRIPT_RESUME_NO_DATA   21
-
-/*
- * Scripts
- */
-script_t asc_scripts[] = {
-       /* start data in */
-       {SCRIPT_MATCH(ASC_INT_FC | ASC_INT_BS, ASC_PHASE_DATAI),        /*  0 */
-               asc_dma_in, ASC_CMD_XFER_INFO | ASC_CMD_DMA,
-               &asc_scripts[SCRIPT_DATA_IN + 1]},
-       {SCRIPT_MATCH(ASC_INT_BS, ASC_PHASE_STATUS),                    /*  1 */
-               asc_last_dma_in, ASC_CMD_I_COMPLETE,
-               &asc_scripts[SCRIPT_GET_STATUS]},
-
-       /* continue data in after a chunk is finished */
-       {SCRIPT_MATCH(ASC_INT_BS, ASC_PHASE_DATAI),                     /*  2 */
-               asc_dma_in, ASC_CMD_XFER_INFO | ASC_CMD_DMA,
-               &asc_scripts[SCRIPT_DATA_IN + 1]},
-
-       /* start data out */
-       {SCRIPT_MATCH(ASC_INT_FC | ASC_INT_BS, ASC_PHASE_DATAO),        /*  3 */
-               asc_dma_out, ASC_CMD_XFER_INFO | ASC_CMD_DMA,
-               &asc_scripts[SCRIPT_DATA_OUT + 1]},
-       {SCRIPT_MATCH(ASC_INT_BS, ASC_PHASE_STATUS),                    /*  4 */
-               asc_last_dma_out, ASC_CMD_I_COMPLETE,
-               &asc_scripts[SCRIPT_GET_STATUS]},



Home | Main Index | Thread Index | Old Index