[BACK]Return to busswreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / mvme88k / dev

File: [local] / sys / arch / mvme88k / dev / busswreg.h (download)

Revision 1.1, Tue Mar 4 16:04:37 2008 UTC (16 years, 2 months ago) by nbrk
Branch point for: MAIN

Initial revision

/*	$OpenBSD: busswreg.h,v 1.7 2005/12/11 21:31:36 miod Exp $ */

/*
 * Memory map for BusSwitch chip found in mvme197 boards.
 */
#ifndef	BUSSWREG_H
#define	BUSSWREG_H

#define BS_BASE		0xfff00000
#define	BS_SIZE		0x00000120

#define	BS_CHIPID	0x0000
#define	BS_CHIPREV	0x0001
#define	BS_GCSR		0x0002
#define	BS_IODATA	0x0004
#define	BS_IODIR	0x0006
#define	BS_PSAR1	0x0008
#define	BS_PEAR1	0x000a
#define	BS_PSAR2	0x000c
#define	BS_PEAR2	0x000e
#define	BS_PSAR3	0x0010
#define	BS_PEAR3	0x0012
#define	BS_PSAR4	0x0014
#define	BS_PEAR4	0x0016
#define	BS_PTR1		0x0018
#define	BS_PTSR1	0x001a
#define	BS_PTR2		0x001c
#define	BS_PTSR2	0x001e
#define	BS_PTR3		0x0020
#define	BS_PTSR3	0x0022
#define	BS_PTR4		0x0024
#define	BS_PTSR4	0x0026
#define	BS_SSAR1	0x0028
#define	BS_SEAR1	0x002a
#define	BS_SSAR2	0x002c
#define	BS_SEAR2	0x002e
#define	BS_SSAR3	0x0030
#define	BS_SEAR3	0x0032
#define	BS_SSAR4	0x0034
#define	BS_SEAR4	0x0036
#define	BS_STR1		0x0038
#define	BS_STSR1	0x003a
#define	BS_STR2		0x003c
#define	BS_STSR2	0x003e
#define	BS_STR3		0x0040
#define	BS_STSR3	0x0042
#define	BS_STR4		0x0044
#define	BS_STSR4	0x0046
#define	BS_PAR		0x0048
#define	BS_SAR		0x004c
#define	BS_BTIMER	0x0051
#define	BS_PADJUST	0x0052
#define	BS_PCOUNT	0x0053
#define	BS_PAL		0x0054
#define	BS_WPPA		0x0058
#define	BS_WPTPA	0x005c
#define	BS_WPPAT	0x005e
#define	BS_ROMCR	0x0060
#define	BS_TCTRL1	0x0062
#define	BS_TCTRL2	0x0063
#define	BS_LEVEL	0x0064
#define	BS_MASK		0x0065
#define	BS_ISEL0	0x0066
#define	BS_ISEL1	0x0067
#define	BS_ABORT	0x0068
#define	BS_CPINT	0x0069
#define	BS_TINT1	0x006a
#define	BS_TINT2	0x006b
#define	BS_WPINT	0x006c
#define	BS_PALINT	0x006d
#define	BS_XINT		0x006e
#define	BS_VBASE	0x006f
#define	BS_TCOMP1	0x0070
#define	BS_TCOUNT1	0x0074
#define	BS_TCOMP2	0x0078
#define	BS_TCOUNT2	0x007c
#define	BS_GPR		0x0080
#define	BS_XCTAGS	0x0090
#define	BS_XCCR		0x0100
#define	BS_VEC		0x0104

#define	BUSSWITCH_ID	0x21	/* value at CHIPID */

/* GCSR bit definitions */
#define BS_GCSR_APRI0	0x0001	/* Bus Request 0 Priority indicator (CPU0)*/
#define BS_GCSR_APRI1	0x0002	/* Bus Request 1 Priority indicator (CPU1)*/
#define BS_GCSR_APRI2	0x0003	/* Bus Request 2 Priority indicator (mc88410)*/
#define BS_GCSR_AMOD	0x0004	/* Arbitration Mode */
#define BS_GCSR_BREN	0x0008	/* Bus Request Enable */
#define BS_GCSR_CPUID	0x0010	/* CPU ID */
#define BS_GCSR_B410	0x0020	/* BUS410 indicator */
#define BS_GCSR_INVD	0x0040	/* Invalidate Decoder */
#define BS_GCSR_USR	0x0080	/* User Access Enable */
#define BS_GCSR_XIPL	0x0100	/* External IPL Enable */
#define BS_GCSR_TCPU1	0x0200	/* Test CPU 1 Registers */
#define BS_GCSR_XCC	0x0400	/* External Cache Controller */
#define BS_GCSR_INCB	0x0800	/* Increment On Burst */
#define BS_GCSR_TDPR	0x2000	/* Test Dual Processor Registers */
#define BS_GCSR_TBB	0x4000	/* Test Bus Busy */
#define BS_GCSR_POR	0x8000	/* Power On Reset */

/* System Attribute Registers bit definitions */
#define BS_SAR_DEN	0x01	/* Decode Enable */
#define BS_SAR_INVR	0x04	/* Invalidate On Reads */
#define BS_SAR_GBL	0x08	/* Global Access */

/* Bus Timer Register bit definitions */
#define BS_BTIMER_PBT8		0x00	/* Processor Bus Timout, 8 usec */
#define BS_BTIMER_PBT64		0x01	/* Processor Bus Timout, 64 usec */
#define BS_BTIMER_PBT256	0x02	/* Processor Bus Timout, 256 usec */
#define BS_BTIMER_PBTD		0x03	/* Processor Bus Timout, disable */
#define BS_BTIMER_SBT8		(0x00 << 2)	/* System Bus Timout, 8 usec */
#define BS_BTIMER_SBT64		(0x01 << 2)	/* System Bus Timout, 64 usec */
#define BS_BTIMER_SBT256	(0x02 << 2)	/* System Bus Timout, 256 usec */
#define BS_BTIMER_SBTD		(0x03 << 2)	/* System Bus Timout, disable */

/* Prescaler Adjust values */
#define BS_PADJUST_50	0xce	/* 50 MHz clock */
#define BS_PADJUST_40	0xd8	/* 40 MHz clock */
#define BS_PADJUST_33	0xdf	/* 33 MHz clock */
#define BS_PADJUST_25	0xe7	/* 25 MHz clock */

/* ROM Control Register bit definitions */
#define BS_ROMCR_WEN0	0x0100
#define BS_ROMCR_WEN1   0x0200
#define BS_ROMCR_SGLB	0x0400
#define BS_ROMCR_ROM0	0x8000

/* External Cache Control Register bit definitions */
#define BS_XCC_F0	0x00000001
#define BS_XCC_F1	0x00000002
#define BS_XCC_FBSY	0x00000004
#define BS_XCC_DIAG	0x00000008

/* Abort Control Register */
#define BS_ABORT_ICLR	0x08	/* abort interrupt clear */
#define BS_ABORT_IEN	0x10	/* abort interrupt enable */
#define BS_ABORT_INT	0x20	/* abort interrupt received */
#define BS_ABORT_ABT	0x40	/* abort interrupt asserted */

/* Cross Processor Interrupt Register */
#define BS_CPI_ICLR	0x08	/* cpi interrupt clear */
#define BS_CPI_IEN	0x10	/* cpi interrupt enable */
#define BS_CPI_INT	0x20	/* cpi interrupt received */
#define BS_CPI_STAT	0x40	/* cpi interrupt status */
#define BS_CPI_SCPI	0x80	/* send cross proc interrupt */

/* Timer Interrupt 1 Register */
#define BS_TINT1_ICLR	0x08	/* timer 1 interrupt clear */
#define BS_TINT1_IEN	0x10	/* timer 1 interrupt enable */
#define BS_TINT1_INT	0x20	/* timer 1 interrupt received */
#define BS_TINT1_LM	0x07	/* timer 1 level mask */
#define BS_TINT1_LEVEL(x)	(x & BS_TINT1_LM)

/* Timer Interrupt 2 Register */
#define BS_TINT2_ICLR	0x08	/* timer 1 interrupt clear */
#define BS_TINT2_IEN	0x10	/* timer 1 interrupt enable */
#define BS_TINT2_INT	0x20	/* timer 1 interrupt received */
#define BS_TINT2_LM	0x07	/* timer 1 level mask */
#define BS_TINT2_LEVEL(x)	(x & BS_TINT2_LM)

/* Write Post Control Register */
#define BS_WPINT_ICLR	0x08	/* WPINT interrupt clear */
#define BS_WPINT_IEN	0x10	/* WPINT interrupt enable */
#define BS_WPINT_INT	0x20	/* WPINT interrupt received */
#define BS_WPINT_LM	0x07	/* WPINT level mask */
#define BS_WPINT_LEVEL(x)	(x & BS_WPINT_LM)

/* Processor Address Log Interrupt Register */
#define BS_PALINT_ICLR	0x00	/* PALINT interrupt clear */
#define BS_PALINT_IEN	0x10	/* PALINT interrupt enable */
#define BS_PALINT_INT	0x20	/* PALINT interrupt received */
#define BS_PALINT_PLTY	0x80	/* PALINT polarity */
#define BS_PALINT_LM	0x07	/* PALINT level mask */
#define BS_PALINT_LEVEL(x)	(x & BS_PALINT_LM)

/* External Interrupt Register */
#define BS_XINT_ICLR	0x00	/* XINT interrupt clear */
#define BS_XINT_IEN	0x10	/* XINT interrupt enable */
#define BS_XINT_INT	0x20	/* XINT interrupt received */
#define BS_XINT_EL	0x40	/* XINT edge/level */
#define BS_XINT_PLTY	0x80	/* XINT polarity */
#define BS_XINT_LM	0x07	/* XINT level mask */
#define BS_XINT_LEVEL(x)	(x & BS_XINT_LM)

/* Vector Base Register (A read upon an interrupt reveals the source) */
#define BS_VBASE_SRC_TMR1	0x0
#define BS_VBASE_SRC_TMR2	0x1
#define BS_VBASE_SRC_WPE	0x2
#define BS_VBASE_SRC_PAL	0x3
#define BS_VBASE_SRC_EXT	0x4	/* external interrupt */
#define BS_VBASE_SRC_SPUR	0x7	/* spurious interrupt */

/* We lock off BusSwitch vectors at 0x40 */
#define BS_VECBASE	0x40
#define BS_NVEC		0x10

/* Bottom 4 bits of the vector returned during IACK cycle */
#define BS_TMR1IRQ	0x01	/* lowest */
#define BS_TMR2IRQ	0x02
#define BS_ABORTIRQ	0x03

/* Define the Abort vector */
#define BS_ABORTVEC  	(BS_VECBASE | BS_ABORTIRQ)

#endif	/* BUSSWREG_H */