1 /******************************************************************************
2  *
3  *	(C)Copyright 1998,1999 SysKonnect,
4  *	a business unit of Schneider & Koch & Co. Datensysteme GmbH.
5  *
6  *	This program is free software; you can redistribute it and/or modify
7  *	it under the terms of the GNU General Public License as published by
8  *	the Free Software Foundation; either version 2 of the License, or
9  *	(at your option) any later version.
10  *
11  *	The information in this file is provided "AS IS" without warranty.
12  *
13  ******************************************************************************/
14 
15 #ifndef	_TARGETHW_
16 #define _TARGETHW_
17 
18 	/*
19 	 *  PCI Watermark definition
20 	 */
21 #ifdef	PCI
22 #define	RX_WATERMARK	24
23 #define TX_WATERMARK	24
24 #define SK_ML_ID_1	0x20
25 #define SK_ML_ID_2	0x30
26 #endif
27 
28 #include	"h/skfbi.h"
29 #ifndef TAG_MODE
30 #include	"h/fplus.h"
31 #else
32 #include	"h/fplustm.h"
33 #endif
34 
35 #ifndef	HW_PTR
36 #define HW_PTR  void __iomem *
37 #endif
38 
39 #ifdef MULT_OEM
40 #define	OI_STAT_LAST		0	/* end of OEM data base */
41 #define	OI_STAT_PRESENT		1	/* entry present but not empty */
42 #define	OI_STAT_VALID		2	/* holds valid ID, but is not active */
43 #define	OI_STAT_ACTIVE		3	/* holds valid ID, entry is active */
44 					/* active = adapter is supported */
45 
46 /* Memory representation of IDs must match representation in adapter. */
47 struct	s_oem_ids {
48 	u_char	oi_status ;		/* Stat: last, present, valid, active */
49 	u_char	oi_mark[5] ;		/* "PID00" .. "PID07" ..	*/
50 	u_char 	oi_id[4] ;		/* id bytes, representation as	*/
51 					/* defined by hardware,		*/
52 #ifdef PCI
53 	u_char 	oi_sub_id[4] ;		/* sub id bytes, representation as */
54 					/* defined by hardware,		*/
55 #endif
56 } ;
57 #endif	/* MULT_OEM */
58 
59 
60 struct s_smt_hw {
61 	/*
62 	 * global
63 	 */
64 	HW_PTR	iop ;			/* IO base address */
65 	short	dma ;			/* DMA channel */
66 	short	irq ;			/* IRQ level */
67 	short	eprom ;			/* FLASH prom */
68 
69 #ifndef SYNC
70 	u_short	n_a_send ;		/* pending send requests */
71 #endif
72 
73 #if	defined(PCI)
74 	short	slot ;			/* slot number */
75 	short   max_slots ;		/* maximum number of slots */
76 	short	wdog_used ;		/* TRUE if the watch dog is used */
77 #endif
78 
79 #ifdef	PCI
80 	u_short	pci_handle ;		/* handle to access the BIOS func */
81 	u_long	is_imask ;		/* int maske for the int source reg */
82 	u_long	phys_mem_addr ;		/* physical memory address */
83 	u_short	mc_dummy ;		/* work around for MC compiler bug */
84 	/*
85 	 * state of the hardware
86 	 */
87 	u_short hw_state ;		/* started or stopped */
88 
89 #define	STARTED		1
90 #define	STOPPED		0
91 
92 	int	hw_is_64bit ;		/* does we have a 64 bit adapter */
93 #endif
94 
95 #ifdef	TAG_MODE
96 	u_long	pci_fix_value ;		/* value parsed by PCIFIX */
97 #endif
98 
99 	/*
100 	 * hwt.c
101 	 */
102 	u_long	t_start ;		/* HWT start */
103 	u_long	t_stop ;		/* HWT stop */
104 	u_short	timer_activ ;		/* HWT timer active */
105 
106 	/*
107 	 * PIC
108 	 */
109 	u_char	pic_a1 ;
110 	u_char	pic_21 ;
111 
112 	/*
113 	 * GENERIC ; do not modify beyond this line
114 	 */
115 
116 	/*
117 	 * physical and canonical address
118 	 */
119 	struct fddi_addr fddi_home_addr ;
120 	struct fddi_addr fddi_canon_addr ;
121 	struct fddi_addr fddi_phys_addr ;
122 
123 	/*
124 	 * mac variables
125 	 */
126 	struct mac_parameter mac_pa ;	/* tmin, tmax, tvx, treq .. */
127 	struct mac_counter mac_ct ;	/* recv., lost, error  */
128 	u_short	mac_ring_is_up ;	/* ring is up flag */
129 
130 	struct s_smt_fp	fp ;		/* formac+ */
131 
132 #ifdef MULT_OEM
133 	struct s_oem_ids *oem_id ;	/* pointer to selected id */
134 	int oem_min_status ;		/* IDs to take care of */
135 #endif	/* MULT_OEM */
136 
137 } ;
138 #endif
139