summaryrefslogtreecommitdiff
path: root/sys/dev/ic/cpc700reg.h
blob: 1fcff82906336721a7053c3ea5b41e64c7179549 (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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*	$NetBSD: cpc700reg.h,v 1.5 2008/04/28 20:23:49 martin Exp $	*/

/*
 * Copyright (c) 2002 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Lennart Augustsson (lennart@augustsson.net) at Sandburst Corp.
 *
 * 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.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``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 FOUNDATION OR CONTRIBUTORS
 * 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.
 */

/* PCI memory space */
#define CPC_PCI_MEM_BASE	0x80000000
#define CPC_PCI_MEM_END		0xf7ffffff

/* PCI IO space */
#define CPC_PCI_IO_BASE		0xf8000000
#define CPC_PCI_IO_START	0xf8800000 /* for allocation */
#define CPC_PCI_IO_END		0xfbffffff

/* PCI config space */
#define CPC_PCICFGADR		0xfec00000
#define   CPC_PCI_CONFIG_ENABLE		0x80000000
#define CPC_PCICFGDATA		0xfec00004

/* Config space regs */
#define CPC_PCI_BRDGERR		0x48
#define CPC_PCI_CLEARERR	0x0000ff00

#define CPC_BRIDGE_OPTIONS2	0x60
#define  CPC_BRIDGE_O2_ILAT_MASK	0x00f8
#define  CPC_BRIDGE_O2_ILAT_SHIFT	3
#define  CPC_BRIDGE_O2_ILAT_PRIM_ASYNC	18
#define  CPC_BRIDGE_O2_SLAT_MASK	0x0f00
#define  CPC_BRIDGE_O2_SLAT_SHIFT	8
#define  CPC_BRIDGE_O2_2LAT_PRIM_ASYNC	2

/* PCI interrupt acknowledge & special cycle */
#define CPC_INTR_ACK		0xfed00000

#define CPC_PMM0_LOCAL		0xff400000
#define CPC_PMM0_MASK_ATTR	0xff400004
#define CPC_PMM0_PCI_LOW	0xff400008
#define CPC_PMM0_PCI_HIGH	0xff40000c
#define CPC_PMM1_LOCAL		0xff400010
#define CPC_PMM1_MASK_ATTR	0xff400014
#define CPC_PMM1_PCI_LOW	0xff400018
#define CPC_PMM1_PCI_HIGH	0xff40001c
#define CPC_PMM2_LOCAL		0xff400020
#define CPC_PMM2_MASK_ATTR	0xff400024
#define CPC_PMM2_PCI_LOW	0xff400028
#define CPC_PMM2_PCI_HIGH	0xff40002c
#define CPC_PTM1_LOCAL		0xff400030
#define CPC_PTM1_MEMSIZE	0xff400034
#define CPC_PTM2_LOCAL		0xff400038
#define CPC_PTM2_MEMSIZE	0xff40003c

/* serial ports */
#define CPC_COM0		0xff600300
#define CPC_COM1		0xff600400
#define CPC_COM_SPEED(bus)	((bus) / (2 * 4))

/* processor interface registers */
#define CPC_PIF_CFGADR		0xff500000
#define  CPC_PIF_CFG_PRIFOPT1		0x00
#define  CPC_PIF_CFG_ERRDET1		0x04
#define  CPC_PIF_CFG_ERREN1		0x08
#define  CPC_PIF_CFG_CPUERAD		0x0c
#define  CPC_PIF_CFG_CPUERAT		0x10
#define  CPC_PIF_CFG_PLBMIFOPT		0x18
#define  CPC_PIF_CFG_PLBMTLSA1		0x20
#define  CPC_PIF_CFG_PLBMTLEA1		0x24
#define  CPC_PIF_CFG_PLBMTLSA2		0x28
#define  CPC_PIF_CFG_PLBMTLEA2		0x2c
#define  CPC_PIF_CFG_PLBMTLSA3		0x30
#define  CPC_PIF_CFG_PLBMTLEA3		0x34
#define  CPC_PIF_CFG_PLBSNSSA0		0x38
#define  CPC_PIF_CFG_PLBSNSEA0		0x3c
#define  CPC_PIF_CFG_BESR		0x40
#define  CPC_PIF_CFG_BESRSET		0x44
#define  CPC_PIF_CFG_BEAR		0x4c
#define  CPC_PIF_CFG_PLBSWRINT		0x80
#define CPC_PIF_CFGDATA		0xff500004

/* interrupt controller */
#define CPC_UIC_BASE		0xff500880
#define CPC_UIC_SIZE		0x00000024
#define CPC_UIC_SR		0x00000000 /* UIC status (read/clear) */
#define CPC_UIC_SRS		0x00000004 /* UIC status (set) */
#define CPC_UIC_ER		0x00000008 /* UIC enable */
#define CPC_UIC_CR		0x0000000c /* UIC critical */
#define CPC_UIC_PR		0x00000010 /* UIC polarity 0=low, 1=high*/
#define CPC_UIC_TR		0x00000014 /* UIC trigger 0=level; 1=edge */
#define CPC_UIC_MSR		0x00000018 /* UIC masked status */
#define CPC_UIC_VR		0x0000001c /* UIC vector */
#define CPC_UIC_VCR		0x00000020 /* UIC vector configuration */
#define   CPC_UIC_CVR_PRI	  0x00000001 /* 0=intr31 high, 1=intr0 high */
/*
 * if intr0 high then interrupt vector at (vcr&~3) + N*512
 * if intr31 high then interrupt vector at (vcr&~3) + (31-N)*512
 */

/* UIC interrupt bits.  Note, MSB is bit 0 */
/* Internal */
#define CPC_IB_ECC		0
#define CPC_IB_PCI_WR_RANGE	1
#define CPC_IB_PCI_WR_CMD	2
#define CPC_IB_UART_0		3
#define CPC_IB_UART_1		4
#define CPC_IB_IIC_0		5
#define CPC_IB_IIC_1		6
/* 6-16 GPT compare&capture */
/* 20-31 external */
#define CPC_IB_EXT0		20
#define CPC_IB_EXT1		21
#define CPC_IB_EXT2		22
#define CPC_IB_EXT3		23
#define CPC_IB_EXT4		24
#define CPC_IB_EXT5		25
#define CPC_IB_EXT6		26
#define CPC_IB_EXT7		27
#define CPC_IB_EXT8		28
#define CPC_IB_EXT9		29
#define CPC_IB_EXT10		30
#define CPC_IB_EXT11		31

#define CPC_INTR_MASK(irq) (0x80000000 >> (irq))


/* IIC */
#define CPC_IIC0		0xff620000
#define CPC_IIC1		0xff630000
#define CPC_IIC_SIZE		0x00000014
/* offsets from base */
#define CPC_IIC_MDBUF		0x00000000
#define CPC_IIC_SDBUF		0x00000002
#define CPC_IIC_LMADR		0x00000004
#define CPC_IIC_HNADR		0x00000005
#define CPC_IIC_CNTL		0x00000006
#define CPC_IIC_MDCNTL		0x00000007
#define CPC_IIC_STS		0x00000008
#define CPC_IIC_EXTSTS		0x00000009
#define CPC_IIC_LSADR		0x0000000a
#define CPC_IIC_HSADR		0x0000000b
#define CPC_IIC_CLKDIV		0x0000000c
#define CPC_IIC_INTRMSK		0x0000000d
#define CPC_IIC_FRCNT		0x0000000e
#define CPC_IIC_TCNTLSS		0x0000000f
#define CPC_IIC_DIRECTCNTL	0x00000010

/* timer */
#define CPC_TIMER		0xff650000
#define CPC_GPTTBC		0x00000000