| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | ** ----------------------------------------------------------------------------- | 
|  | 3 | ** | 
|  | 4 | **  Perle Specialix driver for Linux | 
|  | 5 | **  Ported from existing RIO Driver for SCO sources. | 
|  | 6 | * | 
|  | 7 | *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. | 
|  | 8 | * | 
|  | 9 | *      This program is free software; you can redistribute it and/or modify | 
|  | 10 | *      it under the terms of the GNU General Public License as published by | 
|  | 11 | *      the Free Software Foundation; either version 2 of the License, or | 
|  | 12 | *      (at your option) any later version. | 
|  | 13 | * | 
|  | 14 | *      This program is distributed in the hope that it will be useful, | 
|  | 15 | *      but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 16 | *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 17 | *      GNU General Public License for more details. | 
|  | 18 | * | 
|  | 19 | *      You should have received a copy of the GNU General Public License | 
|  | 20 | *      along with this program; if not, write to the Free Software | 
|  | 21 | *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 22 | ** | 
|  | 23 | **	Module		: board.h | 
|  | 24 | **	SID		: 1.2 | 
|  | 25 | **	Last Modified	: 11/6/98 11:34:07 | 
|  | 26 | **	Retrieved	: 11/6/98 11:34:20 | 
|  | 27 | ** | 
|  | 28 | **  ident @(#)board.h	1.2 | 
|  | 29 | ** | 
|  | 30 | ** ----------------------------------------------------------------------------- | 
|  | 31 | */ | 
|  | 32 |  | 
|  | 33 | #ifndef	__rio_board_h__ | 
|  | 34 | #define	__rio_board_h__ | 
|  | 35 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | /* | 
|  | 37 | ** board.h contains the definitions for the *hardware* of the host cards. | 
|  | 38 | ** It describes the memory overlay for the dual port RAM area. | 
|  | 39 | */ | 
|  | 40 |  | 
|  | 41 | #define	DP_SRAM1_SIZE	0x7C00 | 
|  | 42 | #define	DP_SRAM2_SIZE	0x0200 | 
|  | 43 | #define	DP_SRAM3_SIZE	0x7000 | 
|  | 44 | #define	DP_SCRATCH_SIZE	0x1000 | 
|  | 45 | #define	DP_PARMMAP_ADDR	0x01FE	/* offset into SRAM2 */ | 
|  | 46 | #define	DP_STARTUP_ADDR	0x01F8	/* offset into SRAM2 */ | 
|  | 47 |  | 
|  | 48 | /* | 
|  | 49 | **	The shape of the Host Control area, at offset 0x7C00, Write Only | 
|  | 50 | */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 51 | struct s_Ctrl { | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 52 | u8 DpCtl;		/* 7C00 */ | 
|  | 53 | u8 Dp_Unused2_[127]; | 
|  | 54 | u8 DpIntSet;		/* 7C80 */ | 
|  | 55 | u8 Dp_Unused3_[127]; | 
|  | 56 | u8 DpTpuReset;	/* 7D00 */ | 
|  | 57 | u8 Dp_Unused4_[127]; | 
|  | 58 | u8 DpIntReset;	/* 7D80 */ | 
|  | 59 | u8 Dp_Unused5_[127]; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 | }; | 
|  | 61 |  | 
|  | 62 | /* | 
|  | 63 | ** The PROM data area on the host (0x7C00), Read Only | 
|  | 64 | */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 65 | struct s_Prom { | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 66 | u16 DpSlxCode[2]; | 
|  | 67 | u16 DpRev; | 
|  | 68 | u16 Dp_Unused6_; | 
|  | 69 | u16 DpUniq[4]; | 
|  | 70 | u16 DpJahre; | 
|  | 71 | u16 DpWoche; | 
|  | 72 | u16 DpHwFeature[5]; | 
|  | 73 | u16 DpOemId; | 
|  | 74 | u16 DpSiggy[16]; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 75 | }; | 
|  | 76 |  | 
|  | 77 | /* | 
|  | 78 | ** Union of the Ctrl and Prom areas | 
|  | 79 | */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 80 | union u_CtrlProm {		/* This is the control/PROM area (0x7C00) */ | 
|  | 81 | struct s_Ctrl DpCtrl; | 
|  | 82 | struct s_Prom DpProm; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 83 | }; | 
|  | 84 |  | 
|  | 85 | /* | 
|  | 86 | ** The top end of memory! | 
|  | 87 | */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 88 | struct s_ParmMapS {		/* Area containing Parm Map Pointer */ | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 89 | u8 Dp_Unused8_[DP_PARMMAP_ADDR]; | 
|  | 90 | u16 DpParmMapAd; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 91 | }; | 
|  | 92 |  | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 93 | struct s_StartUpS { | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 94 | u8 Dp_Unused9_[DP_STARTUP_ADDR]; | 
|  | 95 | u8 Dp_LongJump[0x4]; | 
|  | 96 | u8 Dp_Unused10_[2]; | 
|  | 97 | u8 Dp_ShortJump[0x2]; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 98 | }; | 
|  | 99 |  | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 100 | union u_Sram2ParmMap {		/* This is the top of memory (0x7E00-0x7FFF) */ | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 101 | u8 DpSramMem[DP_SRAM2_SIZE]; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 102 | struct s_ParmMapS DpParmMapS; | 
|  | 103 | struct s_StartUpS DpStartUpS; | 
|  | 104 | }; | 
|  | 105 |  | 
|  | 106 | /* | 
|  | 107 | **	This is the DP RAM overlay. | 
|  | 108 | */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 109 | struct DpRam { | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 110 | u8 DpSram1[DP_SRAM1_SIZE];	/* 0000 - 7BFF */ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 111 | union u_CtrlProm DpCtrlProm;	/* 7C00 - 7DFF */ | 
|  | 112 | union u_Sram2ParmMap DpSram2ParmMap;	/* 7E00 - 7FFF */ | 
| Alan Cox | 74769ab | 2006-03-24 03:18:24 -0800 | [diff] [blame] | 113 | u8 DpScratch[DP_SCRATCH_SIZE];	/* 8000 - 8FFF */ | 
|  | 114 | u8 DpSram3[DP_SRAM3_SIZE];	/* 9000 - FFFF */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 115 | }; | 
|  | 116 |  | 
|  | 117 | #define	DpControl	DpCtrlProm.DpCtrl.DpCtl | 
|  | 118 | #define	DpSetInt	DpCtrlProm.DpCtrl.DpIntSet | 
|  | 119 | #define	DpResetTpu	DpCtrlProm.DpCtrl.DpTpuReset | 
|  | 120 | #define	DpResetInt	DpCtrlProm.DpCtrl.DpIntReset | 
|  | 121 |  | 
|  | 122 | #define	DpSlx		DpCtrlProm.DpProm.DpSlxCode | 
|  | 123 | #define	DpRevision	DpCtrlProm.DpProm.DpRev | 
|  | 124 | #define	DpUnique	DpCtrlProm.DpProm.DpUniq | 
|  | 125 | #define	DpYear		DpCtrlProm.DpProm.DpJahre | 
|  | 126 | #define	DpWeek		DpCtrlProm.DpProm.DpWoche | 
|  | 127 | #define	DpSignature	DpCtrlProm.DpProm.DpSiggy | 
|  | 128 |  | 
|  | 129 | #define	DpParmMapR	DpSram2ParmMap.DpParmMapS.DpParmMapAd | 
|  | 130 | #define	DpSram2		DpSram2ParmMap.DpSramMem | 
|  | 131 |  | 
|  | 132 | #endif |