summaryrefslogtreecommitdiff
path: root/drivers/char/rio/board.h
blob: 29c980204098bde676ac05ddef832bc16e4d5783 (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
/*
** -----------------------------------------------------------------------------
**
**  Perle Specialix driver for Linux
**  Ported from existing RIO Driver for SCO sources. 
 *
 *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
**	Module		: board.h
**	SID		: 1.2
**	Last Modified	: 11/6/98 11:34:07
**	Retrieved	: 11/6/98 11:34:20
**
**  ident @(#)board.h	1.2
**
** -----------------------------------------------------------------------------
*/

#ifndef	__rio_board_h__
#define	__rio_board_h__

#ifdef SCCS_LABELS
static char *_board_h_sccs_ = "@(#)board.h	1.2";
#endif

/*
** board.h contains the definitions for the *hardware* of the host cards.
** It describes the memory overlay for the dual port RAM area.
*/

#define	DP_SRAM1_SIZE	0x7C00
#define	DP_SRAM2_SIZE	0x0200
#define	DP_SRAM3_SIZE	0x7000
#define	DP_SCRATCH_SIZE	0x1000
#define	DP_PARMMAP_ADDR	0x01FE	/* offset into SRAM2 */
#define	DP_STARTUP_ADDR	0x01F8	/* offset into SRAM2 */

/*
**	The shape of the Host Control area, at offset 0x7C00, Write Only
*/
struct s_Ctrl {
	BYTE DpCtl;		/* 7C00 */
	BYTE Dp_Unused2_[127];
	BYTE DpIntSet;		/* 7C80 */
	BYTE Dp_Unused3_[127];
	BYTE DpTpuReset;	/* 7D00 */
	BYTE Dp_Unused4_[127];
	BYTE DpIntReset;	/* 7D80 */
	BYTE Dp_Unused5_[127];
};

/*
** The PROM data area on the host (0x7C00), Read Only
*/
struct s_Prom {
	WORD DpSlxCode[2];
	WORD DpRev;
	WORD Dp_Unused6_;
	WORD DpUniq[4];
	WORD DpJahre;
	WORD DpWoche;
	WORD DpHwFeature[5];
	WORD DpOemId;
	WORD DpSiggy[16];
};

/*
** Union of the Ctrl and Prom areas
*/
union u_CtrlProm {		/* This is the control/PROM area (0x7C00) */
	struct s_Ctrl DpCtrl;
	struct s_Prom DpProm;
};

/*
** The top end of memory!
*/
struct s_ParmMapS {		/* Area containing Parm Map Pointer */
	BYTE Dp_Unused8_[DP_PARMMAP_ADDR];
	WORD DpParmMapAd;
};

struct s_StartUpS {
	BYTE Dp_Unused9_[DP_STARTUP_ADDR];
	BYTE Dp_LongJump[0x4];
	BYTE Dp_Unused10_[2];
	BYTE Dp_ShortJump[0x2];
};

union u_Sram2ParmMap {		/* This is the top of memory (0x7E00-0x7FFF) */
	BYTE DpSramMem[DP_SRAM2_SIZE];
	struct s_ParmMapS DpParmMapS;
	struct s_StartUpS DpStartUpS;
};

/*
**	This is the DP RAM overlay.
*/
struct DpRam {
	BYTE DpSram1[DP_SRAM1_SIZE];	/* 0000 - 7BFF */
	union u_CtrlProm DpCtrlProm;	/* 7C00 - 7DFF */
	union u_Sram2ParmMap DpSram2ParmMap;	/* 7E00 - 7FFF */
	BYTE DpScratch[DP_SCRATCH_SIZE];	/* 8000 - 8FFF */
	BYTE DpSram3[DP_SRAM3_SIZE];	/* 9000 - FFFF */
};

#define	DpControl	DpCtrlProm.DpCtrl.DpCtl
#define	DpSetInt	DpCtrlProm.DpCtrl.DpIntSet
#define	DpResetTpu	DpCtrlProm.DpCtrl.DpTpuReset
#define	DpResetInt	DpCtrlProm.DpCtrl.DpIntReset

#define	DpSlx		DpCtrlProm.DpProm.DpSlxCode
#define	DpRevision	DpCtrlProm.DpProm.DpRev
#define	DpUnique	DpCtrlProm.DpProm.DpUniq
#define	DpYear		DpCtrlProm.DpProm.DpJahre
#define	DpWeek		DpCtrlProm.DpProm.DpWoche
#define	DpSignature	DpCtrlProm.DpProm.DpSiggy

#define	DpParmMapR	DpSram2ParmMap.DpParmMapS.DpParmMapAd
#define	DpSram2		DpSram2ParmMap.DpSramMem

#endif