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
|
/* $FreeBSD$ */
/* $NecBSD: if_snreg.h,v 1.3 1999/01/24 01:39:52 kmatsuda Exp $ */
/* $NetBSD$ */
/*-
* Copyright (c) 1997, 1998, 1999
* Kouichi Matsuda. All rights reserved.
*
* 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 by Kouichi Matsuda for
* NetBSD/pc98.
* 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.
*/
/*
* Modified for NetBSD/pc98 1.2.1 from NetBSD/mac68k 1.2D by Kouichi Matsuda.
* Make adapted for NEC PC-9801-83, 84, PC-9801-103, 104, PC-9801N-25 and
* PC-9801N-J02R, which uses National Semiconductor DP83934AVQB as
* Ethernet Controller and National Semiconductor NS46C46 as (64 * 16 bits)
* Microwire Serial EEPROM.
*/
/*
* XXX: Should not be HERE. (Should be shared with...)
*/
/*
* NEC/SONIC port mappings, offset from iobase.
*/
#define SNEC_CTRL 0 /* SONIC control port (word) */
#define SNEC_CTRLB 1 /* NEC/SONIC control port (byte) */
#define SNEC_RSVD0 2 /* not used */
#define SNEC_ADDR 3 /* SONIC, NEC/SONIC register address set port */
#define SNEC_RSVD1 4 /* not used */
#define SNEC_RSVD2 5 /* not used */
#define SNEC_NREGS 6
/* bank memory size */
#define SNEC_NMEMS (PAGE_SIZE * 2)
/* how many bank */
#define SNEC_NBANK 0x10
/* internal buffer size */
#define SNEC_NBUF (SNEC_NMEMS * SNEC_NBANK)
/*
* NEC/SONIC specific internal registers.
*/
/*
* Memory Bank Select Register (MEMBS)
*/
#define SNECR_MEMBS 0x80
#define SNECR_MEMBS_BSEN 0x01 /* enable memory bank select */
#define SNECR_MEMBS_EBNMSK 0x1c /* encoded bank select number */
/* Translate bank number to encoded bank select number. */
#define SNECR_MEMBS_B2EB(bank) (bank << 2)
#define SNECR_MEMBS_PCMCIABUS 0x80 /* bus type identification */
/*
* Memory Base Address Select Register (MEMSEL)
*/
#define SNECR_MEMSEL 0x82
/* Translate base phys address to encoded select number. */
#define SNECR_MEMSEL_PHYS2EN(maddr) ((maddr >> 13) & 0x0f)
/*
* Encoded Irq Select Register (IRQSEL)
*/
#define SNECR_IRQSEL 0x84
/*
* EEPROM Access Register (EEP)
*/
#define SNECR_EEP 0x86
#define SNECR_EEP_DI 0x10 /* EEPROM Serial Data Input (high) */
#define SNECR_EEP_CS 0x20 /* EEPROM Chip Select (high) */
#define SNECR_EEP_SK 0x40 /* EEPROM Serial Data Clock (high) */
#define SNECR_EEP_DO 0x80 /* EEPROM Serial Data Output (high) */
/* EEPROM data locations */
#define SNEC_EEPROM_KEY0 6 /* Station Address Check Sum Key #1 */
#define SNEC_EEPROM_KEY1 7 /* Station Address Check Sum Key #2 */
#define SNEC_EEPROM_SA0 8 /* Station Address #1 */
#define SNEC_EEPROM_SA1 9 /* Station Address #2 */
#define SNEC_EEPROM_SA2 10 /* Station Address #3 */
#define SNEC_EEPROM_SA3 11 /* Station Address #4 */
#define SNEC_EEPROM_SA4 12 /* Station Address #5 */
#define SNEC_EEPROM_SA5 13 /* Station Address #6 */
#define SNEC_EEPROM_CKSUM 14 /* Station Address Check Sum */
#define SNEC_EEPROM_SIZE 32 /* valid EEPROM data (max 128 bytes) */
/*
* Bus and Mode Identification Register (IDENT)
*/
#define SNECR_IDENT 0x88
/* Bit 0: Bus Identification. */
#define SNECR_IDENT_CBUS 0x01 /* on PC-98 C-Bus */
#define SNECR_IDENT_PCMCIABUS 0x00 /* on PCMCIA Bus */
/* Bit 2: always 1 */
#define SNECR_IDENT_MAGIC 0x04
/* Bit 4: Bus Configuration Mode Identification. */
#define SNECR_IDENT_PNP 0x10 /* Plug and Play (C-Bus and PCMCIA) */
#define SNECR_IDENT_LEGACY 0x00 /* Legacy C-Bus */
#define SNECR_IDENT_LEGACY_CBUS \
(SNECR_IDENT_LEGACY | SNECR_IDENT_MAGIC | SNECR_IDENT_CBUS)
#define SNECR_IDENT_PNP_CBUS \
(SNECR_IDENT_PNP | SNECR_IDENT_MAGIC | SNECR_IDENT_CBUS)
#define SNECR_IDENT_PNP_PCMCIABUS \
(SNECR_IDENT_PNP | SNECR_IDENT_MAGIC | SNECR_IDENT_PCMCIABUS)
/*
* XXX: parent bus type aliases
*/
#define SNEC_TYPE_LEGACY 0
#define SNEC_TYPE_PNP 1
|