summaryrefslogtreecommitdiff
path: root/sys/arch/pc532/include/icu.h
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
commitd6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch)
treeece253b876159b39c620e62b6c9b1174642e070e /sys/arch/pc532/include/icu.h
initial import of NetBSD tree
Diffstat (limited to 'sys/arch/pc532/include/icu.h')
-rw-r--r--sys/arch/pc532/include/icu.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/sys/arch/pc532/include/icu.h b/sys/arch/pc532/include/icu.h
new file mode 100644
index 00000000000..e669036e5d1
--- /dev/null
+++ b/sys/arch/pc532/include/icu.h
@@ -0,0 +1,134 @@
+/* $NetBSD: icu.h,v 1.5 1995/08/25 07:52:18 phil Exp $ */
+
+/*
+ * Copyright (c) 1993 Philip A. Nelson.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Philip A. Nelson.
+ * 4. The name of Philip A. Nelson may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY PHILIP NELSON ``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 PHILIP NELSON 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.
+ *
+ * icu.h
+ */
+
+/* icu.h: defines for use with the ns32532 icu. */
+
+#ifndef _MACHINE_ICU_H_
+#define _MACHINE_ICU_H_
+
+/* We don't use vector interrupts, but make it right anyway */
+#define VEC_ICU 0x10
+
+/* The address of the ICU! */
+#define ICU_ADR 0xfffffe00
+
+/* ICU clock speed. */
+#define ICU_CLK_HZ 3686400/4 /* raw ICU clock speed */
+
+/* ICU registers
+ */
+#define HVCT 0
+#define SVCT 1
+#define ELTG 2
+#define TPL 4
+#define IPND 6
+#define ISRV 8
+#define IMSK 10
+#define CSRC 12
+#define FPRT 14
+#define MCTL 16
+#define OCASN 17
+#define CIPTR 18
+#define PDAT 19
+#define IPS 20
+#define PDIR 21
+#define CCTL 22
+#define CICTL 23
+#define LCSV 24
+#define HCSV 26
+#define LCCV 28
+#define HCCV 30
+
+/* Byte and Word access to ICU registers
+ */
+#define ICUB(n) *((unsigned char *)(ICU_ADR + n))
+#define ICUW(n) *((unsigned short *)(ICU_ADR + n))
+
+#ifndef LOCORE
+/* Interrupt trigger modes
+ */
+enum {HIGH_LEVEL, LOW_LEVEL, RISING_EDGE, FALLING_EDGE} int_modes;
+#endif /* !LOCORE */
+
+/* Hardware interrupt request lines.
+ */
+#define IR_CLK 2 /* highest priority */
+#define IR_SCSI0 5 /* Adaptec 6250 */
+#define IR_SCSI1 4 /* NCR DP8490 */
+#define IR_TTY0 13
+#define IR_TTY0RDY 12
+#define IR_TTY1 11
+#define IR_TTY1RDY 10
+#define IR_TTY2 9
+#define IR_TTY2RDY 8
+#define IR_TTY3 7
+#define IR_TTY3RDY 6
+
+/* edge polarity
+ * 0 0 falling edge
+ * 0 1 rising edge
+ * 1 0 low level
+ * 1 1 high level
+ *
+ */
+#define IEDGE 0
+#define IPOLARITY 0
+
+#define ints_off bicpsrw PSR_I
+#define ints_on bispsrw PSR_I
+
+/* SCSI controllers */
+#define AIC6250 0
+#define DP8490 1
+#define ICU_SCSI_BIT 0x80
+
+#ifndef LOCORE
+/*
+ * Select a SCSI controller.
+ */
+static __inline int
+scsi_select_ctlr(int ctlr)
+{
+ int old;
+
+ old = (ICUB(PDAT) & ICU_SCSI_BIT) == 0;
+ if (ctlr == DP8490)
+ ICUB(PDAT) &= ~ICU_SCSI_BIT; /* select = 0 for 8490 */
+ else
+ ICUB(PDAT) |= ICU_SCSI_BIT; /* select = 1 for AIC6250 */
+ return(old);
+}
+#endif /* !LOCORE */
+#endif /* _MACHINE_ICU_H_ */