summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/1394/adapters/hci1394_rio_regs.h
blob: 83acf1008497632ab30dbc44434872a6a0a9002c (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
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright (c) 1999-2000 by Sun Microsystems, Inc.
 * All rights reserved.
 */

#ifndef	_SYS_1394_ADAPTERS_HCI1394_RIO_REGS_H
#define	_SYS_1394_ADAPTERS_HCI1394_RIO_REGS_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

/*
 * hci1394_rio_regs.h
 *    Sun Microsystems RIO chipset
 *    See the RIO specification (r1.0), section 5.9, for a description
 *    of the vendor specific registers.
 */

#ifdef	__cplusplus
extern "C" {
#endif


/*
 * RIO's vendor specific register mapping information.  What register set it
 * uses and the offset/size of the register set.
 */
#define	RIOREG_REG_BASE		0x2
#define	RIOREG_OFFSET		0x0
#define	RIOREG_LENGTH		0x800

/*
 * For RIO pass 1, we will setup the GUID in as part of the vendor specific
 * init. This is to support the RIO PPX card (since it does not have firmware
 * to setup the GUID.
 */
#define	RIOREG_GUID_MASK		0x000000FFFFFFFFFF
#define	RIOREG_GUID_SUN_MICROSYSTEMS	0x0800200000000000
#define	RIOREG_SUNW_RIO_PASS1		0x01080020

/*
 * RIO vendor specific registers.  These are the offsets of the registers. They
 * should be used as paramteres to hci1394_vendor_reg_write() and
 * hci1394_vendor_reg_read().
 */
#define	RIOREG_INTR_EVENT	0x00
#define	RIOREG_INTR_MASK	0x04
#define	RIOREG_DMA_BURST_SIZE	0x08
#define	RIOREG_XMIT_CONTROL	0x0C
#define	RIOREG_HOST_CONTROL	0x10
#define	RIOREG_STATS_RETRIES	0x14
#define	RIOREG_STATS_ERRORS	0x18
#define	RIOREG_STATS_PHYSICAL	0x1C

/* RIO interrupt event & mask bit offsets */
#define	RIOREG_INTR_STATS1	0x001
#define	RIOREG_INTR_STATS2	0x002
#define	RIOREG_INTR_STATS3	0x004
#define	RIOREG_INTR_STATS4	0x008
#define	RIOREG_INTR_STATS5	0x010
#define	RIOREG_INTR_STATS6	0x020
#define	RIOREG_INTR_STATS7	0x040
#define	RIOREG_INTR_STATS8	0x080
#define	RIOREG_INTR_LINKON	0x100

/* dma_burst_size (field defs) */
#define	RIOREG_INF_BURST_SHIFT	0
#define	RIOREG_DBURST_SHIFT	1
#define	RIOREG_RXBURST_SHIFT	26
#define	RIOREG_TXBURST_SHIFT	28
#define	RIOREG_PFBURST_SHIFT	30
#define	RIOREG_INF_BURST_MASK	(1 << RIOREG_INF_BURST_SHIFT)
#define	RIOREG_DBURST_MASK	(1 << RIOREG_DBURST_SHIFT)
#define	RIOREG_RXBURST_MASK	(3 << RIOREG_RXBURST_SHIFT)
#define	RIOREG_TXBURST_MASK	(3 << RIOREG_TXBURST_SHIFT)
#define	RIOREG_PFBURST_MASK	(3 << RIOREG_PFBURST_SHIFT)

/* dma_burst_size (values) */
#define	RIOREG_BURST_32		0 /* 32 bytes or less */
#define	RIOREG_BURST_64		1 /* 64 bytes or less */
#define	RIOREG_BURST_128	2 /* 128 bytes or less */
#define	RIOREG_BURST_256	3 /* 256 bytes or less */

/* xmit ctrl (field defs) */
#define	RIOREG_XMIT_BND1_SHIFT	0
#define	RIOREG_XMIT_BND2_SHIFT	8
#define	RIOREG_XMIT_BND1_MASK	(0xFF << RIOREG_XMIT_BND1_SHIFT)
#define	RIOREG_XMIT_BND2_MASK	(0xFF << RIOREG_XMIT_BND2_SHIFT)

/* host control (field defs) */
#define	RIOREG_HOST_ATREQ	0x00000001
#define	RIOREG_HOST_ATRESP	0x00000002
#define	RIOREG_HOST_IT1		0x00000004
#define	RIOREG_HOST_IT2		0x00000008
#define	RIOREG_HOST_IT3		0x00000010
#define	RIOREG_HOST_IT4		0x00000020
#define	RIOREG_HOST_ARREQ	0x00000040
#define	RIOREG_HOST_ARRESP	0x00000080
#define	RIOREG_HOST_IR1		0x00000100
#define	RIOREG_HOST_IR2		0x00000200
#define	RIOREG_HOST_IR3		0x00000400
#define	RIOREG_HOST_IR4		0x00000800
#define	RIOREG_HOST_BWCAT	0x02000000
#define	RIOREG_HOST_BRCAT	0x04000000
#define	RIOREG_HOST_ISOCTL	0xC0000000

/* Allow Descriptor pre-fetching */
#define	RIOREG_HOST_CONTROL_SETTING	\
	(RIOREG_HOST_ATREQ | RIOREG_HOST_ATRESP | RIOREG_HOST_IT1 | \
	RIOREG_HOST_IT2 | RIOREG_HOST_IT3 | RIOREG_HOST_IT4 | \
	RIOREG_HOST_ARREQ | RIOREG_HOST_ARRESP | RIOREG_HOST_IR1 | \
	RIOREG_HOST_IR2 | RIOREG_HOST_IR3 | RIOREG_HOST_IR4)

/* stats_retries (field defs) */
#define	RIOREG_RET_PHYS		0xFF000000
#define	RIOREG_RET_ATS		0x0000FF00
#define	RIOREG_RET_ATQ		0x000000FF

/* stats_errors (field defs) */
#define	RIOREG_ERR_EACKR	0x000000FF
#define	RIOREG_ERR_EACKX	0x0000FF00
#define	RIOREG_ERR_BUS		0x0FFF0000

/* stats_phys (field defs) */
#define	RIOREG_PHYS_WRQ		0x000000FF
#define	RIOREG_PHYS_RDQ		0x00FF0000


#ifdef	__cplusplus
}
#endif

#endif /* _SYS_1394_ADAPTERS_HCI1394_RIO_REGS_H */