summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/dev/pcctworeg.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/mvme88k/dev/pcctworeg.h')
-rw-r--r--sys/arch/mvme88k/dev/pcctworeg.h197
1 files changed, 76 insertions, 121 deletions
diff --git a/sys/arch/mvme88k/dev/pcctworeg.h b/sys/arch/mvme88k/dev/pcctworeg.h
index 268d481ef5c..41a95b770fa 100644
--- a/sys/arch/mvme88k/dev/pcctworeg.h
+++ b/sys/arch/mvme88k/dev/pcctworeg.h
@@ -1,141 +1,101 @@
-/* $OpenBSD: pcctworeg.h,v 1.6 2002/01/14 21:34:39 miod Exp $ */
+/* $OpenBSD: pcctworeg.h,v 1.7 2004/04/24 19:51:48 miod Exp $ */
/*
- * Memory map for PCC2 chip found in mvme1x7 boards.
+ * Memory map for PCC2 chip found in MVME1x7 boards.
*
* PCCchip2 control and status register can be accessed as bytes (8 bits),
* two-bytes (16 bits), or four-bytes (32 bits).
*/
-struct pcctworeg {
- volatile u_char pcc2_chipid;
- volatile u_char pcc2_chiprev;
- volatile u_char pcc2_genctl;
- volatile u_char pcc2_vecbase; /* irq vector base */
- volatile u_long pcc2_t1cmp; /* timer1 compare */
- volatile u_long pcc2_t1count; /* timer1 count */
- volatile u_long pcc2_t2cmp; /* timer2 compare */
- volatile u_long pcc2_t2count; /* timer2 count */
- volatile u_char pcc2_pscalecnt; /* timer prescaler counter */
- volatile u_char pcc2_pscaleadj; /* timer prescaler adjust */
- volatile u_char pcc2_t2ctl; /* timer2 ctrl reg */
- volatile u_char pcc2_t1ctl; /* timer1 ctrl reg */
- volatile u_char pcc2_gpioirq; /* gpio irq */
- volatile u_char pcc2_gpio; /* gpio i/o */
- volatile u_char pcc2_t2irq;
- volatile u_char pcc2_t1irq;
- volatile u_char pcc2_sccerr;
- volatile u_char pcc2_sccirq;
- volatile u_char pcc2_scctx;
- volatile u_char pcc2_sccrx;
- volatile u_char :8;
- volatile u_char :8;
- volatile u_char :8;
- volatile u_char pcc2_sccmoiack;
- volatile u_char :8;
- volatile u_char pcc2_scctxiack;
- volatile u_char :8;
- volatile u_char pcc2_sccrxiack;
- volatile u_char pcc2_ieerr;
- volatile u_char :8;
- volatile u_char pcc2_ieirq;
- volatile u_char pcc2_iefailirq;
- volatile u_char pcc2_ncrerr;
- volatile u_char :8;
- volatile u_char :8;
- volatile u_char pcc2_ncrirq;
- volatile u_char pcc2_prtairq;
- volatile u_char pcc2_prtfirq;
- volatile u_char pcc2_prtsirq;
- volatile u_char pcc2_prtpirq;
- volatile u_char pcc2_prtbirq;
- volatile u_char :8;
- volatile u_char pcc2_prtstat;
- volatile u_char pcc2_prtctl;
- volatile u_short pcc2_speed; /* DO NOT USE */
- volatile u_short pcc2_prtdat;
- volatile u_short :16;
- /* The following regs are not valid on MVME197 */
- volatile u_char pcc2_ipl;
- volatile u_char pcc2_mask;
-};
-#define PCC2_PCC2CHIP_OFF 0x42000
-#define PCC2_CHIPID 0x20
-#define PCC2_BASE_ADDR 0xFFF42000 /* base address */
-#define PCC2_SIZE 0x1000 /* size */
-#define PCC2_CHIP_REV 0x00
-
-/* General Control Register */
-
+#define PCC2_BASE 0x00042000
+#define PCC2_SIZE 0x0040
+
+#define PCCTWO_CHIPID 0x0000
+#define PCCTWO_CHIPREV 0x0001
+#define PCCTWO_GENCTL 0x0002
+#define PCCTWO_VECBASE 0x0003
+#define PCCTWO_T1CMP 0x0004
+#define PCCTWO_T1COUNT 0x0008
+#define PCCTWO_T2CMP 0x000c
+#define PCCTWO_T2COUNT 0x0010
+#define PCCTWO_PSCALECNT 0x0014
+#define PCCTWO_PSCALEADJ 0x0015
+#define PCCTWO_T2CTL 0x0016
+#define PCCTWO_T1CTL 0x0017
+#define PCCTWO_GPIO_ICR 0x0018
+#define PCCTWO_GPIO_PCR 0x0019
+#define PCCTWO_T2ICR 0x001a
+#define PCCTWO_T1ICR 0x001b
+#define PCCTWO_SCCERR 0x001c
+#define PCCTWO_SCCICR 0x001d
+#define PCCTWO_SCCTX 0x001e
+#define PCCTWO_SCCRX 0x001f
+#define PCCTWO_SCCMOIACK 0x0023
+#define PCCTWO_SCCTXIACK 0x0025
+#define PCCTWO_SCCRXIACK 0x0027
+#define PCCTWO_IEERR 0x0028
+#define PCCTWO_IEICR 0x002a
+#define PCCTWO_IEBERR 0x002b
+#define PCCTWO_SCSIERR 0x002c
+#define PCCTWO_SCSIICR 0x002f
+#define PCCTWO_PRTICR 0x0030
+#define PCCTWO_PTRFICR 0x0031
+#define PCCTWO_PTRSICR 0x0032
+#define PCCTWO_PTRPICR 0x0033
+#define PCCTWO_PRTBICR 0x0034
+#define PCCTWO_PRTSTATUS 0x0036
+#define PCCTWO_PRTCTL 0x0037
+#define PCCTWO_SPEED 0x0038
+#define PCCTWO_PRTDATA 0x003a
+/* The following registers are not valid on MVME197 */
+#define PCCTWO_IPL 0x003e
+#define PCCTWO_MASK 0x003f
+
+#define PCC2_ID 0x20 /* value at CHIPID */
+
+/* General Control Register */
#define PCC2_DR0 0x80
#define PCC2_C040 0x04
#define PCC2_MIEN 0x02
#define PCC2_FAST 0x01
/* Top 4 bits of the PCC2 VBR. Will be the top 4 bits of the vector */
-
#define PCC2_VECT 0x50
/* Bottom 4 bits of the vector returned during IACK cycle */
-#define PPBSY 0x00 /* lowest */
-#define PPSE 0x01
-#define PPSEL 0x02
-#define PPFLT 0x03
-#define PPACK 0x04
-#define SCSIIRQ 0x05
-#define LANCERR 0x06
-#define LANCIRQ 0x07
-#define TIMER1IRQ 0x08
-#define TIMER2IRQ 0x09
-#define GPIOIRQ 0x0a
-#define SRXEIRQ 0x0c
-#define SMOIRQ 0x0d
-#define STxIRQ 0x0e
-#define SRxIRQ 0x0f
-
+#define PCC2V_PPBUSY 0x00 /* lowest */
+#define PCC2V_PPPE 0x01
+#define PCC2V_PPSELECT 0x02
+#define PCC2V_PPFAULT 0x03
+#define PCC2V_PPACK 0x04
+#define PCC2V_SCSI 0x05
+#define PCC2V_IEFAIL 0x06
+#define PCC2V_IE 0x07
+#define PCC2V_TIMER2 0x08
+#define PCC2V_TIMER1 0x09
+#define PCC2V_GPIO 0x0a
+#define PCC2V_SCC_RXE 0x0c
+#define PCC2V_SCC_M (PCC2V_SCC_RXE + 1)
+#define PCC2V_SCC_TX (PCC2V_SCC_M + 1)
+#define PCC2V_SCC_RX (PCC2V_SCC_TX + 1)
/*
* Vaddrs for interrupt mask and pri registers
*/
-extern u_char *volatile pcc2intr_mask;
-extern u_char *volatile pcc2intr_ipl;
-
-/*
- * points to system's PCCTWO. This is not active until the pcctwo0
- * device has been attached.
- */
-extern struct pcctworeg *sys_pcc2;
+extern u_int8_t *volatile pcc2intr_mask;
+extern u_int8_t *volatile pcc2intr_ipl;
/*
* We lock off our interrupt vector at 0x50.
*/
#define PCC2_VECBASE 0x50
-#define PCC2_NVEC 16
-
-/*
- * Vectors we use
- */
-#define PCC2V_NCR 0x05
-#define PCC2V_IEFAIL 0x06
-#define PCC2V_IE 0x07
-#define PCC2V_TIMER2 0x08
-#define PCC2V_TIMER1 0x09
-#define PCC2V_GPIO 0x0a
-#define PCC2V_SCC_RXE 0x0c
-#define PCC2V_SCC_M 0x0d
-#define PCC2V_SCC_TX 0x0e
-#define PCC2V_SCC_RX 0x0f
+#define PCC2_NVEC 0x10
#define PCC2_TCTL_CEN 0x01
#define PCC2_TCTL_COC 0x02
#define PCC2_TCTL_COVF 0x04
#define PCC2_TCTL_OVF 0xf0
-#define PCC2_TICTL_CEN 0x01
-#define PCC2_TICTL_COC 0x02
-#define PCC2_TICTL_COVF 0x04
-#define PCC2_TTCTL_OVF_MASK (1 << 4) /* overflow bits mask */
-
#define PCC2_GPIO_PLTY 0x80
#define PCC2_GPIO_EL 0x40
@@ -143,10 +103,11 @@ extern struct pcctworeg *sys_pcc2;
#define PCC2_GPIOCR_O 0x1
#define PCC2_SCC_AVEC 0x08
-#define PCC2_SCCRX_INHIBIT (0 << 6)
-#define PCC2_SCCRX_SNOOP (1 << 6)
-#define PCC2_SCCRX_INVAL (2 << 6)
-#define PCC2_SCCRX_RESV (3 << 6)
+
+#define PCC2_SC_INHIBIT (0 << 6)
+#define PCC2_SC_SNOOP (1 << 6)
+#define PCC2_SC_INVAL (2 << 6)
+#define PCC2_SC_RESV (3 << 6)
#define pcc2_timer_us2lim(us) (us) /* timer increments in "us" */
@@ -156,19 +117,13 @@ extern struct pcctworeg *sys_pcc2;
#define PCC2_IRQ_INT 0x20
/* Tick Timer Interrupt Control Register */
-
-#define PCC2_TTIRQ_INT 0x20
-#define PCC2_TTIRQ_IEN 0x10
-#define PCC2_TTIRQ_ICLR 0x08
-#define PCC2_TTIRQ_IL 0x07 /* mask for IL2-IL0 */
+#define PCC2_TTIRQ_INT 0x20
+#define PCC2_TTIRQ_IEN 0x10
+#define PCC2_TTIRQ_ICLR 0x08
+#define PCC2_TTIRQ_IL 0x07 /* mask for IL2-IL0 */
#define PCC2_IEERR_SCLR 0x01
#define PCC2_GENCTL_FAST 0x01
#define PCC2_GENCTL_IEN 0x02
#define PCC2_GENCTL_C040 0x03
-
-#define PCC2_SC_INHIBIT (0 << 6)
-#define PCC2_SC_SNOOP (1 << 6)
-#define PCC2_SC_INVAL (2 << 6)
-#define PCC2_SC_RESV (3 << 6)