summaryrefslogtreecommitdiff
path: root/sys/arch/sgimips/dev/crimereg.h
blob: fc1df306bfe3b99d319c74ea9a9c93bda1548ea2 (plain)
1
2
3
4
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*	$NetBSD: crimereg.h,v 1.11 2021/11/10 17:19:29 msaitoh Exp $	*/

/*
 * Copyright (c) 2000 Soren S. Jorvang
 * 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 for the
 *          NetBSD Project.  See http://www.NetBSD.org/ for
 *          information about NetBSD.
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
 */

/*
 * O2 CRIME register definitions
 */

#define CRIME_BASE	0x14000000	/* all registers 64-bit access */

/* Offset 0x00 -- revision register */
#define CRIME_REV		0x00
#define CRIME_ID_IDBITS		0x000000f0
#define CRIME_ID_IDSHIFT	4
#define CRIME_ID_REV		0x0000000f
#define CRIME_REV_PETTY		0x00
#define CRIME_REV_11		0x11
#define CRIME_REV_13		0x13
#define CRIME_REV_14		0x14

/* offset 0x08 -- control register.  Only lower 14 bits are valid */
#define CRIME_CONTROL			0x08
#define CRIME_CONTROL_TRITON_SYSADC	 0x2000
#define CRIME_CONTROL_CRIME_SYSADC	 0x1000
#define CRIME_CONTROL_HARD_RESET	 0x0800
#define CRIME_CONTROL_SOFT_RESET	 0x0400
#define CRIME_CONTROL_DOG_ENABLE	 0x0200
#define CRIME_CONTROL_ENDIANNESS	 0x0100 /* assert for BE */
#define CRIME_CONTROL_CQUEUE_HWM	 0x000f
#define CRIME_CONTROL_CQUEUE_SHFT	 0
#define CRIME_CONTROL_WBUF_HWM		 0x00f0
#define CRIME_CONTROL_WBUF_SHFT		 8

/*
 * macros to manipulate CRIME High Water Mark bits in
 * the CRIME control register.  Examples:
 *
 * foo = CRM_CONTROL_GET_CQUEUE_HWM(*(__uint64_t *)CRM_CONTROL)
 * CRM_CONTROL_SET_CQUEUE_HWM(*(__uint64_t *)CRM_CONTROL, 4)
 *
 * foo = CRM_CONTROL_GET_WBUF_HWM(*(__uint64_t *)CRM_CONTROL)
 * CRM_CONTROL_SET_WBUF_HWM(*(__uint64_t *)CRM_CONTROL, 4)
 */
#define CRM_CONTROL_GET_CQUEUE_HWM(x)   \
	(((x) & CRM_CONTROL_CQUEUE_HWM) >> CRM_CONTROL_CQUEUE_SHFT)
#define CRM_CONTROL_SET_CQUEUE_HWM(x,v) \
	(((v) << CRM_CONTROL_CQUEUE_SHFT) | ((x) & ~CRM_CONTROL_CQUEUE_HWM))

#define CRM_CONTROL_GET_WBUF_HWM(x)     \
	(((x) & CRM_CONTROL_WBUF_HWM) >> CRM_CONTROL_WBUF_SHFT)
#define CRM_CONTROL_SET_WBUF_HWM(x,v)   \
	(((v) << CRM_CONTROL_WBUF_SHFT) | ((x) & ~CRM_CONTROL_WBUF_HWM))


/* Offset 0x010 -- interrupt status register.  All 32 bits valid */
#define CRIME_INTSTAT		0x10
#define CRIME_INT_VICE		0x80000000
#define CRIME_INT_SOFT2		0x40000000 /* Also CPU_SysCorErr */
#define CRIME_INT_SOFT1		0x20000000
#define CRIME_INT_SOFT0		0x10000000
#define CRIME_INT_RE5		0x08000000
#define CRIME_INT_RE4		0x04000000
#define CRIME_INT_RE3		0x02000000
#define CRIME_INT_RE2		0x01000000
#define CRIME_INT_RE1		0x00800000
#define CRIME_INT_RE0		0x00400000
#define CRIME_INT_MEMERR	0x00200000
#define CRIME_INT_CRMERR	0x00100000
#define CRIME_INT_GBE3		0x00080000
#define CRIME_INT_GBE2		0x00040000
#define CRIME_INT_GBE1		0x00020000
#define CRIME_INT_GBE0		0x00010000
#define CRIME_INT_PCI_SHARED2	0x00008000 /* from here, actually mace irqs */
#define CRIME_INT_PCI_SHARED1	0x00004000
#define CRIME_INT_PCI_SHARED0	0x00002000
#define CRIME_INT_PCI_SLOT2	0x00001000
#define CRIME_INT_PCI_SLOT1	0x00000800
#define CRIME_INT_PCI_SLOT0	0x00000400
#define CRIME_INT_PCI_SCSI1	0x00000200
#define CRIME_INT_PCI_SCSI0	0x00000100
#define CRIME_INT_PCI_BRIDGE	0x00000080
#define CRIME_INT_PERIPH_AUD	0x00000040
#define CRIME_INT_PERIPH_MISC	0x00000020
#define CRIME_INT_PERIPH_SERIAL	0x00000010
#define CRIME_INT_ETHERNET	0x00000008
#define CRIME_INT_VID_OUT	0x00000004
#define CRIME_INT_VID_IN2	0x00000002
#define CRIME_INT_VID_IN1	0x00000001

/* Masks, hard interrupts, soft interrupts.  */
#define CRIME_INTMASK		0x18
#define CRIME_SOFTINT		0x20
#define CRIME_HARDINT		0x28

/*
 * Offset 0x030 -- watchdog register.  33 bits are valid
 * Bit 32:  power on reset
 * Bit 31:  warm reset
 * Write zero here to reset watchdog
 */

#define CRIME_DOG		0x30
#define CRIME_WATCHDOG		CRIME_DOG
#define CRIME_TIME		0x38
#define CRIME_TIME_MASK		0x0000ffffffffffffULL
#define CRIME_CPU_ERROR_ADDR	0x40
#define CRIME_CPU_ERROR_STAT	0x48
#define CRIME_CPU_ERROR_ENA	0x50
#define CRIME_VICE_ERROR_ADDR	0x58
#define CRIME_MEM_CONTROL	0x0200
#define CRIME_MEM_BANK_CTRL0	0x0208
#define CRIME_MEM_BANK_CTRL1	0x0218
#define CRIME_MEM_BANK_CTRL2	0x0210
#define CRIME_MEM_BANK_CTRL3	0x0228
#define CRIME_MEM_BANK_CTRL4	0x0220
#define CRIME_MEM_BANK_CTRL5	0x0238
#define CRIME_MEM_BANK_CTRL6	0x0230
#define CRIME_MEM_BANK_CTRL7	0x0248
#define CRIME_MEM_REFRESH_CNTR	0x0248
#define CRIME_MEM_ERROR_STAT	0x0250
#define CRIME_MEM_ERROR_ADDR	0x0258
#define CRIME_MEM_ERROR_ECC_SYN	0x0260
#define CRIME_MEM_ERROR_ECC_CHK	0x0268
#define CRIME_MEM_ERROR_ECC_REPL 0x0270

#define McGriff CRIME_DOG /* Baseball compatibility */