summaryrefslogtreecommitdiff
path: root/sys/arch/sgimips/dev/picreg.h
blob: 4d3216acc8ef565cbd0f7585444388c30264bd0e (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
/*	$NetBSD: picreg.h,v 1.5 2006/03/08 23:46:24 lukem Exp $	*/

/*
 * Copyright (c) 2002 Steve Rumble
 * 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. 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.
 */

#ifndef _ARCH_SGIMIPS_DEV_PICREG_H_
#define	_ARCH_SGIMIPS_DEV_PICREG_H_

#define PIC_CPUCTRL		0x00	/* CPU control */

#define PIC_CPUCTRL_REFRESH	0x0001	/* refresh enable */
#define PIC_CPUCTRL_BIGENDIAN	0x0002	/* big endian mode */
#define PIC_CPUCTRL_DBREFILL	0x0004	/* data block refill */
#define PIC_CPUCTRL_IBREFILL	0x0008	/* instruction block refill */
#define PIC_CPUCTRL_GDMAINTR	0x0010	/* gfx intr on completion */
#define PIC_CPUCTRL_GDMASYNC	0x0020	/* gfx dma sync */
#define PIC_CPUCTRL_FREFRESH	0x0040	/* fast refresh on 33 MHz+ gio */
#define PIC_CPUCTRL_NOVMEERR	0x0080	/* disables vme bus errors */
#define PIC_CPUCTRL_FREFRESHB	0x0080	/* fast refresh on revs. a+b */
#define PIC_CPUCTRL_GR2		0x0100	/* gio gr2 mode (?) */
#define PIC_CPUCTRL_SYSRESET	0x0200	/* vme sysreset line */
#define PIC_CPUCTRL_MPR		0x0400	/* memory read parity enable */
#define PIC_CPUCTRL_SLAVE	0x0800	/* slave accesses permitted */
#define PIC_CPUCTRL_VMEARB	0x1000	/* vme arbiter enable */
#define PIC_CPUCTRL_WPR		0x2000	/* write bad parity */
#define PIC_CPUCTRL_WDOG	0x4000	/* watchdog enable */
#define PIC_CPUCTRL_GFXRESET	0x8000	/* reset graphics */

#define PIC_MODE		0x04	/* system mode */

#define PIC_MODE_DBSIZ		0x0003	/* data block size */
#define PIC_MODE_IBSIZ		0x000c	/* instruction block size */
#define PIC_MODE_ISTREAM	0x0010	/* instruction streaming */
#define	PIC_MODE_NOCACHE	0x0020	/* cache disabled */
#define PIC_MODE_STOREPARTIAL	0x0040	/* store partial */
#define	PIC_MODE_BUSDRIVE	0x0080	/* bus drive */

#define PIC_SYSID		0x08	/* system id */

#define PIC_SYSID_FPU		0x0001	/* fpu exists */
#define PIC_SYSID_GDMAERR	0x0004	/* graphics dma error */
#define PIC_SYSID_GDMADONE	0x0008	/* graphics dma complete */
#define PIC_SYSID_VMERMW	0x0010	/* vme read-mod-write */
#define PIC_SYSID_REVSHIFT	0x0006	/* Rev bits shifted */
#define PIC_SYSID_REVMASK	0x0007	/* PIC revision */

#define PIC_MEMCFG0		0x10000	/* memory config register 0 */
#define PIC_MEMCFG1		0x10004	/* memory config register 1 */
#define PIC_MEMCFG0_PHYSADDR	(0x1fa00000 + PIC_MEMCFG0)
#define PIC_MEMCFG1_PHYSADDR	(0x1fa00000 + PIC_MEMCFG1)

#define PIC_MEMCFG_4MB		0x0000	/* 4 megabytes (never occurs) */
#define PIC_MEMCFG_8MB		0x0001	/* 8 megabytes */
#define PIC_MEMCFG_16MB		0x0003	/* 16 megabytes */
#define PIC_MEMCFG_32MB		0x0007	/* 32 megabytes */
#define PIC_MEMCFG_64MB		0x000f	/* 64 megabytes */

#define PIC_MEMCFG_BADSIZ	0x0000	/* bad memory size */
#define PIC_MEMCFG_ADDRMASK	0x003f	/* memory address mask */
#define PIC_MEMCFG_BADADDR	0x003f	/* no memory in bank */
#define	PIC_MEMCFG_SIZMASK	0x0f00	/* bank size mask */

/*
 * The bank memory address is computed the same way mc's is.
 * Size is similar, only having one less bit (max. 64MB per bank).
 */
#define PIC_MEMCFG_ADDR(x)						\
	((x & PIC_MEMCFG_ADDRMASK) << 22)
#define PIC_MEMCFG_SIZ(x)						\
	(((x & PIC_MEMCFG_SIZMASK) + 0x100) << 14)

#define PIC_WRONLY_REFRESH	0x10100	/* write only refresh timer */

#define PIC_PARITY_ERROR	0x10200	/* parity errors */

#define PIC_PARITY_ERROR_GDMA	0x0001	/* graphics dma */
#define PIC_PARITY_ERROR_DMA	0x0002
#define PIC_PARITY_ERROR_CPU	0x0004
#define PIC_PARITY_ERROR_VME	0x0008
#define PIC_PARITY_ERROR_BYTE3	0x0010	/* error in fourth byte */
#define PIC_PARITY_ERROR_BYTE2	0x0020	/* error in third byte */
#define PIC_PARITY_ERROR_BYTE1	0x0040	/* error in second byte */
#define PIC_PARITY_ERROR_BYTE0	0x0080	/* error in first byte */

#define	PIC_PARITY_ADDR_CPU	0x10204	/* cpu error address */
#define PIC_PARITY_ADDR_DMA	0x10208	/* dma error address */
#define PIC_PARITY_ERROR_CLEAR	0x10210	/* clear parity errors */

/*
 * GIO slot configuration registers described by the 'GIO BUS Specification'
 * apparently no IP20 counterpart on mc.
 */
#define PIC_GIO32ARB_SLOT0	0x20000	/* set slot 0 config */
#define	PIC_GIO32ARB_SLOT1	0x20004	/* set slot 1 config */

#define PIC_GIO32ARB_SLOT_SLAVE	0x0001	/* slave only */
#define PIC_GIO32ARB_SLOT_LONG	0x0002	/* long burst */

#define PIC_GIO32ARB_BURST	0x20008	/* set gio burst */

#define PIC_GIO32ARB_DEFBURST	0x0001	/* default burst value */

#define PIC_GIO32ARB_DELAY	0x2000c	/* set gio delay */

#define PIC_GIO32ARB_DEFDELAY	0x00f2	/* default delay value */

#endif	/* _ARCH_SGIMIPS_DEV_PICREG_H_ */