xref: /OK3568_Linux_fs/kernel/drivers/net/fddi/skfp/h/targetos.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /******************************************************************************
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  *	(C)Copyright 1998,1999 SysKonnect,
5*4882a593Smuzhiyun  *	a business unit of Schneider & Koch & Co. Datensysteme GmbH.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  *	The information in this file is provided "AS IS" without warranty.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  ******************************************************************************/
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /*
12*4882a593Smuzhiyun  *	Operating system specific definitions for driver and
13*4882a593Smuzhiyun  *	hardware module.
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #ifndef	TARGETOS_H
17*4882a593Smuzhiyun #define TARGETOS_H
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun //-------- those should go into include/linux/pci.h
21*4882a593Smuzhiyun #define PCI_VENDOR_ID_SK		0x1148
22*4882a593Smuzhiyun #define PCI_DEVICE_ID_SK_FP		0x4000
23*4882a593Smuzhiyun //--------
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun //-------- those should go into include/linux/if_fddi.h
28*4882a593Smuzhiyun #define FDDI_MAC_HDR_LEN 13
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define FDDI_RII	0x01 /* routing information bit */
31*4882a593Smuzhiyun #define FDDI_RCF_DIR_BIT 0x80
32*4882a593Smuzhiyun #define FDDI_RCF_LEN_MASK 0x1f
33*4882a593Smuzhiyun #define FDDI_RCF_BROADCAST 0x8000
34*4882a593Smuzhiyun #define FDDI_RCF_LIMITED_BROADCAST 0xA000
35*4882a593Smuzhiyun #define FDDI_RCF_FRAME2K 0x20
36*4882a593Smuzhiyun #define FDDI_RCF_FRAME4K 0x30
37*4882a593Smuzhiyun //--------
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #undef ADDR
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun #include <asm/io.h>
43*4882a593Smuzhiyun #include <linux/netdevice.h>
44*4882a593Smuzhiyun #include <linux/fddidevice.h>
45*4882a593Smuzhiyun #include <linux/skbuff.h>
46*4882a593Smuzhiyun #include <linux/pci.h>
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun // is redefined by linux, but we need our definition
49*4882a593Smuzhiyun #undef ADDR
50*4882a593Smuzhiyun #ifdef MEM_MAPPED_IO
51*4882a593Smuzhiyun #define	ADDR(a) (smc->hw.iop+(a))
52*4882a593Smuzhiyun #else
53*4882a593Smuzhiyun #define	ADDR(a) (((a)>>7) ? (outp(smc->hw.iop+B0_RAP,(a)>>7), (smc->hw.iop+( ((a)&0x7F) | ((a)>>7 ? 0x80:0)) )) : (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0))))
54*4882a593Smuzhiyun #endif
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #include "hwmtm.h"
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #define TRUE  1
59*4882a593Smuzhiyun #define FALSE 0
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun // HWM Definitions
62*4882a593Smuzhiyun // -----------------------
63*4882a593Smuzhiyun #define FDDI_TRACE(string, arg1, arg2, arg3)	// Performance analysis.
64*4882a593Smuzhiyun #ifdef PCI
65*4882a593Smuzhiyun #define NDD_TRACE(string, arg1, arg2, arg3)	// Performance analysis.
66*4882a593Smuzhiyun #endif	// PCI
67*4882a593Smuzhiyun #define SMT_PAGESIZE	PAGE_SIZE	// Size of a memory page (power of 2).
68*4882a593Smuzhiyun // -----------------------
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun // SMT Definitions
72*4882a593Smuzhiyun // -----------------------
73*4882a593Smuzhiyun #define	TICKS_PER_SECOND	HZ
74*4882a593Smuzhiyun #define SMC_VERSION    		1
75*4882a593Smuzhiyun // -----------------------
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun // OS-Driver Definitions
79*4882a593Smuzhiyun // -----------------------
80*4882a593Smuzhiyun #define NO_ADDRESS 0xffe0	/* No Device (I/O) Address */
81*4882a593Smuzhiyun #define SKFP_MAX_NUM_BOARDS 8	/* maximum number of PCI boards */
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #define SK_BUS_TYPE_PCI		0
84*4882a593Smuzhiyun #define SK_BUS_TYPE_EISA	1
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define FP_IO_LEN		256	/* length of IO area used */
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define u8	unsigned char
89*4882a593Smuzhiyun #define u16	unsigned short
90*4882a593Smuzhiyun #define u32	unsigned int
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define MAX_TX_QUEUE_LEN	20 // number of packets queued by driver
93*4882a593Smuzhiyun #define MAX_FRAME_SIZE		4550
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #define	RX_LOW_WATERMARK	NUM_RECEIVE_BUFFERS  / 2
96*4882a593Smuzhiyun #define TX_LOW_WATERMARK	NUM_TRANSMIT_BUFFERS - 2
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun /*
99*4882a593Smuzhiyun ** Include the IOCTL stuff
100*4882a593Smuzhiyun */
101*4882a593Smuzhiyun #include <linux/sockios.h>
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define	SKFPIOCTL	SIOCDEVPRIVATE
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun struct s_skfp_ioctl {
106*4882a593Smuzhiyun 	unsigned short cmd;                /* Command to run */
107*4882a593Smuzhiyun 	unsigned short len;                /* Length of the data buffer */
108*4882a593Smuzhiyun 	unsigned char __user *data;        /* Pointer to the data buffer */
109*4882a593Smuzhiyun };
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun /*
112*4882a593Smuzhiyun ** Recognised ioctl commands for the driver
113*4882a593Smuzhiyun */
114*4882a593Smuzhiyun #define SKFP_GET_STATS		0x05 /* Get the driver statistics */
115*4882a593Smuzhiyun #define SKFP_CLR_STATS		0x06 /* Zero out the driver statistics */
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun // The per-adapter driver structure
118*4882a593Smuzhiyun struct s_smt_os {
119*4882a593Smuzhiyun 	struct net_device *dev;
120*4882a593Smuzhiyun 	struct net_device *next_module;
121*4882a593Smuzhiyun 	u32	bus_type;		/* bus type (0 == PCI, 1 == EISA) */
122*4882a593Smuzhiyun 	struct pci_dev 	pdev;		/* PCI device structure */
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun 	unsigned long base_addr;
125*4882a593Smuzhiyun 	unsigned char factory_mac_addr[8];
126*4882a593Smuzhiyun 	ulong	SharedMemSize;
127*4882a593Smuzhiyun 	ulong	SharedMemHeap;
128*4882a593Smuzhiyun 	void*	SharedMemAddr;
129*4882a593Smuzhiyun 	dma_addr_t SharedMemDMA;
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun 	ulong	QueueSkb;
132*4882a593Smuzhiyun 	struct	sk_buff_head SendSkbQueue;
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun 	ulong	MaxFrameSize;
135*4882a593Smuzhiyun 	u8	ResetRequested;
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun 	// MAC statistics structure
138*4882a593Smuzhiyun 	struct fddi_statistics MacStat;
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun 	// receive into this local buffer if no skb available
141*4882a593Smuzhiyun 	// data will be not valid, because multiple RxDs can
142*4882a593Smuzhiyun 	// point here at the same time, it must be at least
143*4882a593Smuzhiyun 	// MAX_FRAME_SIZE bytes in size
144*4882a593Smuzhiyun 	unsigned char *LocalRxBuffer;
145*4882a593Smuzhiyun 	dma_addr_t LocalRxBufferDMA;
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun 	// Version (required by SMT module).
148*4882a593Smuzhiyun 	u_long smc_version ;
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun 	// Required by Hardware Module (HWM).
151*4882a593Smuzhiyun 	struct hw_modul hwm ;
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun 	// For SMP-savety
154*4882a593Smuzhiyun 	spinlock_t DriverLock;
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun };
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun typedef struct s_smt_os skfddi_priv;
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #endif	 // _TARGETOS_
161