summaryrefslogtreecommitdiff
path: root/sys/arch/arc/pica/pica.h
blob: 24f7438e71a6c758ef16d3a67ed7984e889f8e14 (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
/*	$OpenBSD: pica.h,v 1.4 1996/09/14 15:58:28 pefo Exp $ */

/*
 * Copyright (c) 1994, 1995, 1996 Per Fogelstrom
 * 
 * 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 under OpenBSD by
 *	Per Fogelstrom.
 * 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.
 *
 */
#ifndef	_PICA_H_
#define	_PICA_H_ 1

/*
 * PICA's Physical address space
 */

#define PICA_PHYS_MIN		0x00000000	/* 256 Meg */
#define PICA_PHYS_MAX		0x0fffffff

/*
 * Memory map
 */

#define PICA_PHYS_MEMORY_START	0x00000000
#define PICA_PHYS_MEMORY_END	0x0fffffff	/* 256 Meg in 8 slots */

#define PICA_MEMORY_SIZE_REG	0xe00fffe0	/* Memory size register */
#define	PICA_CONFIG_REG		0xe00ffff0	/* Hardware config reg  */

/*
 * I/O map
 */

#define	R4030_P_LOCAL_IO_BASE	0x80000000	/* I/O Base address */
#define	R4030_V_LOCAL_IO_BASE	0xe0000000
#define	R4030_S_LOCAL_IO_BASE	0x00040000	/* Size */
#define R4030 R4030_V_LOCAL_IO_BASE

#define	R4030_SYS_CONFIG	(R4030+0x0000)	/* Global config register */
#define	R4030_SYS_TL_BASE	(R4030+0x0018)	/* DMA transl. table base */
#define	R4030_SYS_TL_LIMIT	(R4030+0x0020)	/* DMA transl. table limit */
#define	R4030_SYS_TL_IVALID	(R4030+0x0028)	/* DMA transl. cache inval */
#define	R4030_SYS_DMA0_REGS	(R4030+0x0100)	/* DMA ch0 base address */
#define	R4030_SYS_DMA1_REGS	(R4030+0x0120)	/* DMA ch0 base address */
#define	R4030_SYS_DMA2_REGS	(R4030+0x0140)	/* DMA ch0 base address */
#define	R4030_SYS_DMA3_REGS	(R4030+0x0160)	/* DMA ch0 base address */
#define	R4030_SYS_DMA_INT_SRC	(R4030+0x0200)	/* DMA int source status reg */
#define	R4030_SYS_NVRAM_PROT	(R4030+0x0220)	/* NV ram protect register */
#define	R4030_SYS_IT_VALUE	(R4030+0x0228)	/* Interval timer reload */
#define	R4030_SYS_IT_STAT	(R4030+0x0230)	/* Interval timer count */
#define	R4030_SYS_ISA_VECTOR	(R4030+0x0238)	/* ISA Interrupt vector */
#define	R4030_SYS_EXT_IMASK	(R4030+0x00e8)	/* External int enable mask */

#define PVLB R4030_V_LOCAL_IO_BASE
#define	PICA_SYS_SONIC		(PVLB+0x1000)	/* SONIC base address */
#define	PICA_SYS_SCSI		(PVLB+0x2000)	/* SCSI base address */
#define	PICA_SYS_FLOPPY		(PVLB+0x3000)	/* Floppy base address */
#define	PICA_SYS_CLOCK		(PVLB+0x4000)	/* Clock base address */
#define	PICA_SYS_KBD		(PVLB+0x5000)	/* Keybrd/mouse base address */
#define	PICA_SYS_COM1		(PVLB+0x6000)	/* Com port 1 */
#define	PICA_SYS_COM2		(PVLB+0x7000)	/* Com port 2 */
#define	PICA_SYS_PAR1		(PVLB+0x8000)	/* Parallel port 1 */
#define	PICA_SYS_NVRAM		(PVLB+0x9000)	/* Unprotected NV-ram */
#define	PICA_SYS_PNVRAM		(PVLB+0xa000)	/* Protected NV-ram */
#define	PICA_SYS_NVPROM		(PVLB+0xb000)	/* Read only NV-ram */
#define	PICA_SYS_SOUND		(PVLB+0xc000)	/* Sound port */

#define	PICA_SYS_ISA_AS		(PICA_V_ISA_IO+0x70)

#define	PICA_P_DRAM_CONF	0x800e0000	/* Dram config registers */
#define	PICA_V_DRAM_CONF	0xe00e0000
#define	PICA_S_DRAM_CONF	0x00020000

#define	PICA_P_INT_SOURCE	0xf0000000	/* Interrupt src registers */
#define	PICA_V_INT_SOURCE	R4030_V_LOCAL_IO_BASE+R4030_S_LOCAL_IO_BASE
#define	PICA_S_INT_SOURCE	0x00001000
#define PVIS PICA_V_INT_SOURCE
#define	PICA_SYS_LB_IS		(PVIS+0x0000)	/* Local bus int source */
#define	PICA_SYS_LB_IE		(PVIS+0x0002)	/* Local bus int enables */
#define PICA_SYS_LB_IE_PAR1	0x0001		/* Parallel port enable */
#define	PICA_SYS_LB_IE_FLOPPY	0x0002		/* Floppy ctrl enable */
#define	PICA_SYS_LB_IE_SOUND	0x0004		/* Sound port enable */
#define	PICA_SYS_LB_IE_VIDEO	0x0008		/* Video int enable */
#define	PICA_SYS_LB_IE_SONIC	0x0010		/* Ethernet ctrl enable */
#define	PICA_SYS_LB_IE_SCSI	0x0020		/* Scsi crtl enable */
#define PICA_SYS_LB_IE_KBD	0x0040		/* Keyboard ctrl enable */
#define PICA_SYS_LB_IE_MOUSE	0x0080		/* Mouse ctrl enable */
#define	PICA_SYS_LB_IE_COM1	0x0100		/* Serial port 1 enable */
#define	PICA_SYS_LB_IE_COM2	0x0200		/* Serial port 2 enable */

#define	PICA_P_LOCAL_VIDEO_CTRL	0x60000000	/* Local video control */
#define	PICA_V_LOCAL_VIDEO_CTRL	0xe0200000
#define	PICA_S_LOCAL_VIDEO_CTRL	0x00200000

#define	PICA_P_EXTND_VIDEO_CTRL	0x60200000	/* Extended video control */
#define	PICA_V_EXTND_VIDEO_CTRL	0xe0400000
#define	PICA_S_EXTND_VIDEO_CTRL	0x00200000

#define	PICA_P_LOCAL_VIDEO	0x40000000	/* Local video memory */
#define	PICA_V_LOCAL_VIDEO	0xe0800000
#define	PICA_S_LOCAL_VIDEO	0x00800000

#define	PICA_P_ISA_IO		0x90000000	/* ISA I/O control */
#define	PICA_V_ISA_IO		0xe2000000
#define	PICA_S_ISA_IO		0x01000000

#define	PICA_P_ISA_MEM		0x91000000	/* ISA Memory control */
#define	PICA_V_ISA_MEM		0xe3000000
#define	PICA_S_ISA_MEM		0x01000000

/*
 *  Addresses used by various display drivers.
 */
#define PICA_MONO_BASE	(PICA_V_LOCAL_VIDEO_CTRL + 0x3B4)
#define PICA_MONO_BUF	(PICA_V_LOCAL_VIDEO + 0xB0000)
#define PICA_CGA_BASE	(PICA_V_LOCAL_VIDEO_CTRL + 0x3D4)
#define PICA_CGA_BUF	(PICA_V_LOCAL_VIDEO + 0xB8000)

/*
 *  Interrupt vector descriptor for device on pica bus.
 */
struct pica_int_desc {
	int		int_mask;	/* Mask used in PICA_SYS_LB_IE */
	intr_handler_t	int_hand;	/* Interrupt handler */
	void		*param;		/* Parameter to send to handler */
	int		spl_mask;	/* Spl mask for interrupt */
};

int	pica_intrnull __P((void *));
#endif	/* _PICA_H_ */