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	"skfbi.h"
29#ifndef TAG_MODE
30#include	"fplus.h"
31#else
32#include	"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. */
47struct	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
60struct 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