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
|