summaryrefslogtreecommitdiffstats
path: root/sys/dev/snc/if_sncreg.h
blob: 30b0bb7559928aba66ea23e6b0aa3d71d759ab8c (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
/*	$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	(NBPG * 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

OpenPOWER on IntegriCloud