1 /*	$NetBSD: tropicvar.h,v 1.14 2012/10/27 17:18:23 chs Exp $	*/
2 
3 /*
4  * Mach Operating System
5  * Copyright (c) 1991 Carnegie Mellon University
6  * Copyright (c) 1991 IBM Corporation
7  * All Rights Reserved.
8  *
9  * Permission to use, copy, modify and distribute this software and its
10  * documentation is hereby granted, provided that both the copyright
11  * notice and this permission notice appear in all copies of the
12  * software, derivative works or modified versions, and any portions
13  * thereof, and that both notices appear in supporting documentation,
14  * and that the name IBM not be used in advertising or publicity
15  * pertaining to distribution of the software without specific, written
16  * prior permission.
17  *
18  * CARNEGIE MELLON AND IBM ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS"
19  * CONDITION.  CARNEGIE MELLON AND IBM DISCLAIM ANY LIABILITY OF ANY KIND FOR
20  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
21  *
22  * Carnegie Mellon requests users of this software to return to
23  *
24  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
25  *  School of Computer Science
26  *  Carnegie Mellon University
27  *  Pittsburgh PA 15213-3890
28  *
29  * any improvements or extensions that they make and grant Carnegie Mellon
30  * the rights to redistribute these changes.
31  */
32 
33 /* $ACIS:if_lanvar.h 12.0$ */
34 
35 #include <sys/callout.h>
36 
37 /*
38  * This file contains structures used in the "tr" driver for the
39  *	IBM TOKEN-RING NETWORK PC ADAPTER
40  */
41 
42 /* Receive buffer control block */
43 struct rbcb {
44 	bus_size_t	rbufp;		/* offset of current receive buffer */
45 	bus_size_t	rbufp_next;	/* offset of next receive buffer */
46 	bus_size_t	rbuf_datap;	/* offset of data in receive buffer */
47 	unsigned short  data_len;	/* amount of data in this rec buffer */
48 };
49 
50 /*
51  *	Token-Ring software status per adapter
52  */
53 struct	tr_softc {
54 	device_t sc_dev;
55 	void 	*sc_ih;
56 	struct ethercom sc_ethercom;
57 	struct ifmedia	sc_media;
58 	u_char	sc_xmit_correlator;
59 	int	sc_xmit_buffers;
60 #if 1
61 	int	sc_xmit_head;
62 	int	sc_xmit_tail;
63 #endif
64 	int	sc_minbuf;
65 	int	sc_nbuf;
66 	bus_size_t sc_txca;
67 
68 	bus_space_tag_t sc_piot;
69 	bus_space_tag_t sc_memt;
70 	bus_space_handle_t sc_pioh;	/* handle pio area */
71 	bus_space_handle_t sc_sramh;	/* handle for the shared ram area */
72 	bus_space_handle_t sc_mmioh;	/* handle for the bios/mmio area */
73 
74 	struct callout sc_init_callout;
75 	struct callout sc_reinit_callout;
76 
77 	int (*sc_mediachange)(struct tr_softc *);
78 	void (*sc_mediastatus)(struct tr_softc *, struct ifmediareq *);
79 	struct rbcb rbc;	/* receiver buffer control block */
80 	bus_size_t sc_aca;	/* offset of adapter ACA */
81 	bus_size_t sc_ssb;	/* offset of System Status Block */
82 	bus_size_t sc_arb;	/* offset of Adapter Request Block */
83 	bus_size_t sc_srb;	/* offset of System Request Block */
84 	bus_size_t sc_asb;	/* offset of Adapter Status Block */
85 	u_int sc_maddr;		/* mapped shared memory address */
86 	u_int sc_memwinsz;	/* mapped shared memory window size */
87 	u_int sc_memsize;	/* memory installed on adapter */
88 	u_int sc_memreserved;	/* reserved memory on adapter */
89 	int sc_dhb4maxsz;	/* max. dhb size at 4MBIT ring speed */
90 	int sc_dhb16maxsz;	/* max. dbh size at 16MBIT ring speed */
91 	int sc_maxmtu;		/* max. MTU supported by adapter */
92 	unsigned char	sc_init_status;
93 	void * tr_sleepevent;     	/* tr event signalled on successful */
94 					/* open of adapter  */
95 	unsigned short exsap_station;	/* station assigned by open sap cmd */
96 
97 	void *sc_sdhook;
98 
99 	/* Power management hooks */
100 	int (*sc_enable)(struct tr_softc *);
101 	void (*sc_disable)(struct tr_softc *);
102 	int sc_enabled;
103 };
104 
105 int tr_config(struct tr_softc *);
106 int tr_attach(struct tr_softc *);
107 int tr_intr(void *);
108 void tr_init(void *);
109 int tr_ioctl(struct ifnet *, u_long, void *);
110 void tr_stop(struct tr_softc *);
111 int tr_reset(struct tr_softc *);
112 void tr_sleep(struct tr_softc *);
113 int tr_setspeed(struct tr_softc *, u_int8_t);
114 int tr_enable(struct tr_softc *);
115 void tr_disable(struct tr_softc *);
116 int tr_activate(device_t, enum devact);
117 int tr_detach(device_t, int flags);
118