MOXA linux-2.6.x / linux-2.6.19-uc1 from UC-7110-LX-BOOTLOADER-1.9_VERSION-4.2.tgz
[linux-2.6.19-moxart.git] / drivers / net / ks8695 / ks8695_drv.h
blob535669de7905438699e0c85d445c43cb772060f5
1 /*
2 Copyright (c) 2002, Micrel Kendin Operations
4 Written 2002 by LIQUN RUAN
6 This software may be used and distributed according to the terms of
7 the GNU General Public License (GPL), incorporated herein by reference.
8 Drivers based on or derived from this code fall under the GPL and must
9 retain the authorship, copyright and license notice. This file is not
10 a complete program and may only be used when the entire operating
11 system is licensed under the GPL.
13 The author may be reached as lruan@kendin.com
14 Micrel Kendin Operations
15 486 Mercury Dr.
16 Sunnyvale, CA 94085
18 This driver is for Kendin's KS8695 SOHO Router Chipset as ethernet driver.
20 Support and updates available at
21 www.kendin.com/ks8695/
24 #ifndef __KS8695DRV_H
25 #define __KS8695DRV_H
27 struct _ADAPTER_STRUCT;
28 typedef struct _ADAPTER_STRUCT ADAPTER_STRUCT, *PADAPTER_STRUCT;
30 #include "ks8695_kcompat.h"
31 //#include <linux/module.h>
32 #include <linux/types.h>
33 #include <asm/byteorder.h>
34 #include "ks8695_chipdef.h"
36 #include "ks8695_fxhw.h"
38 #define BAR_0 0
40 #define DRV_INFO(S, args...) printk(KERN_INFO "eth info: " S "\n" , ##args)
41 #define DRV_DBG(S, args...) printk(KERN_DEBUG "eth dbg: " S "\n" , ## args)
42 #define DRV_ERR(S, args...) printk(KERN_ERR "eth err: " S "\n" , ## args)
43 #define DRV_WARN(S, args...) printk(KERN_WARNING "eth warning: " S "\n" , ## args)
45 #include <linux/init.h>
46 #include <linux/mm.h>
47 #include <linux/errno.h>
48 #include <linux/ioport.h>
49 #include <linux/pci.h>
50 #include <linux/kernel.h>
51 #include <linux/netdevice.h>
52 #include <linux/etherdevice.h>
53 #include <linux/skbuff.h>
54 #include <linux/delay.h>
55 #include <linux/timer.h>
56 #include <linux/interrupt.h>
57 #include <linux/string.h>
58 #include <asm/bitops.h>
59 #include <asm/io.h>
60 #include <asm/irq.h>
61 #include <linux/capability.h>
63 #define TRUE 1
64 #define FALSE 0
66 /* command line options defaults */
67 #define TXDESC_DEFAULT 128
68 #define TXDESC_MAX 256
69 #define TXDESC_MIN 64
71 #define RXDESC_DEFAULT 128
72 #define RXDESC_MAX 256
73 #define RXDESC_MIN 64
75 #define OPTION_UNSET -1
76 #define OPTION_DISABLED 0
77 #define OPTION_ENABLED 1
79 #if defined(CONFIG_MACH_LITE300) || defined(CONFIG_MACH_CM4002) || \
80 defined(CONFIG_MACH_CM4008) || defined(CONFIG_MACH_CM41xx) || \
81 defined(CONFIG_MACH_SE4200)
82 #define RXCHECKSUM_DEFAULT OPTION_DISABLED
83 #define TXCHECKSUM_DEFAULT OPTION_DISABLED
84 #else
85 #define RXCHECKSUM_DEFAULT OPTION_ENABLED
86 #define TXCHECKSUM_DEFAULT OPTION_ENABLED
87 #endif
88 #define FLOWCONTROL_DEFAULT OPTION_ENABLED
90 #define PBL_DEFAULT 8 /* 0 for unlimited, other value for (4 * x), our VxWorks shows that 8 is optimized */
92 // Supported RX Buffer Sizes
93 #define BUFFER_1568 1568 /* 0x620 */
94 #define BUFFER_2048 2048
95 #define BUFFER_4K 4096
97 // standard ethernet header
98 #define ENET_HEADER_SIZE 14
99 #define MAXIMUM_ETHERNET_PACKET_SIZE 1514
100 #define MINIMUM_ETHERNET_PACKET_SIZE 60
101 #define ETH_CRC_LENGTH 4
102 #define ETH_LENGTH_OF_ADDRESS 6
104 #define KS8695_ROUNDUP(size, unit) (unit * ((size + unit - 1) / unit))
106 // socket buffer
107 struct ks8695_buffer {
108 struct sk_buff *skb;
109 dma_addr_t dma;
110 unsigned long length;
111 int direction;
114 // Adapter->flags definitions
115 #define KS8695_BOARD_OPEN 0
117 /* board specific private data structure */
118 struct _ADAPTER_STRUCT {
119 struct _ADAPTER_STRUCT *next;
120 struct _ADAPTER_STRUCT *prev;
122 unsigned long flags;
123 uint32_t bd_number;
124 struct timer_list timer_id;
126 struct net_device *netdev;
127 struct pci_dev *pdev;
128 struct net_device_stats net_stats;
130 DMA_INFO stDMAInfo; /* DMA information */
131 u8 rev; /* revision, for KS8695P */
134 #define DI (Adapter->stDMAInfo) /* Dma Information */
135 #define DPI (Adapter->stDMAInfo.port) /* Dma Port Inforamtion */
137 /* ks8695_main.c */
138 extern int ks8695_init_module(void);
139 extern void ks8695_exit_module(void);
140 extern int ks8695_probe(struct pci_dev *pdev,
141 const struct pci_device_id *ent);
142 extern void ks8695_remove(struct pci_dev *pdev);
143 extern void ks8695_delete(PADAPTER_STRUCT Adapter);
144 extern int ks8695_open(struct net_device *netdev);
145 extern int ks8695_close(struct net_device *netdev);
146 extern void ks8695_set_multi(struct net_device *netdev);
147 extern int ks8695_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
148 extern struct net_device_stats *ks8695_get_stats(struct net_device *netdev);
149 extern int ks8695_change_mtu(struct net_device *netdev, int new_mtu);
150 extern int ks8695_set_mac(struct net_device *netdev, void *p);
151 extern irqreturn_t ks8695_isr(int irq, void *data);
152 /* for I-cache lockdown or FIQ purpose */
153 extern void ks8695_isre(void); /* to fix compiler complain if integrated with kernel */
154 extern irqreturn_t ks8695_isr_link(int irq, void *data);
155 extern int ks8695_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
156 extern void ks8695_watchdog(unsigned long data);
158 /* ks8695_fxhw.c */
159 extern BOOLEAN ks8695_ChipInit(PADAPTER_STRUCT Adapter, BOOLEAN bResetPhy);
160 extern void macSetLoopback(PADAPTER_STRUCT Adapter, BOOLEAN bLoopback);
161 extern void macStopAll(PADAPTER_STRUCT Adapter);
162 extern void macStartRx(PADAPTER_STRUCT Adapter, BOOLEAN bStart);
163 extern void macStartTx(PADAPTER_STRUCT Adapter, BOOLEAN bStart);
164 extern int macSetStationEx(PADAPTER_STRUCT Adapter, UCHAR *pMac, UINT uIndex);
165 extern int macResetStationEx(PADAPTER_STRUCT Adapter, UCHAR *pMac);
166 extern void macGetStationAddress(PADAPTER_STRUCT Adapter, uint8_t *pMacAddress);
167 extern void macEnableInterrupt(PADAPTER_STRUCT Adapter, BOOLEAN bEnable);
168 extern void macSetStationAddress(PADAPTER_STRUCT Adapter, uint8_t *pMacAddress);
169 extern int macGetIndexStationEx(PADAPTER_STRUCT Adapter);
171 /* switch related */
172 extern void swSetLED(PADAPTER_STRUCT Adapter, BOOLEAN bLED1, LED_SELECTOR nSel);
173 extern int swGetPhyStatus(PADAPTER_STRUCT Adapter, UINT uPort);
174 extern UINT swReadSNMPReg(PADAPTER_STRUCT Adapter, UINT uIndex);
175 extern void swResetSNMPInfo(PADAPTER_STRUCT Adapter);
176 extern void swEnableSwitch(PADAPTER_STRUCT Adapter, UINT enable);
177 extern void swDetectPhyConnection(PADAPTER_STRUCT Adapter, UINT uPort);
178 extern BOOLEAN swPhyLoopback(PADAPTER_STRUCT Adapter, UINT uPort, BOOLEAN bLoopback);
179 extern BOOLEAN swGetWANLinkStatus(PADAPTER_STRUCT Adapter);
180 extern void swAutoNegoAdvertisement(PADAPTER_STRUCT Adapter, UINT uPort);
181 extern void swPhyReset(PADAPTER_STRUCT Adapter, UINT uPort);
182 extern void swConfigureMediaType(PADAPTER_STRUCT Adapter, UINT uPort, UINT uSpeed, UINT uDuplex);
183 extern void swConfigTagRemoval(PADAPTER_STRUCT Adapter, UINT uPort, UINT bRemoval);
184 extern void swConfigTagInsertion(PADAPTER_STRUCT Adapter, UINT uPort, UINT bInsert);
185 extern void swConfigurePort(PADAPTER_STRUCT Adapter, UINT uPort);
187 extern void gpioSet(PADAPTER_STRUCT Adapter, UINT uPort, UINT bSet);
189 #ifdef CONFIG_ARCH_KS8695P
190 extern void enablePhyLoopback(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable);
191 extern void enableRemoteLoopback(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable);
192 extern void enablePhyIsolate(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable);
193 extern void forcePhyLink(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable);
194 extern void dumpDynamicMacTable(PADAPTER_STRUCT Adapter);
195 extern void dumpStaticMacTable(PADAPTER_STRUCT Adapter);
196 void enableTxRateControl(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable,
197 UINT bEnableLow, UINT bEnableHigh);
198 void enableRxRateControl(PADAPTER_STRUCT Adapter, UINT uPort, UINT bEnable,
199 UINT bEnableLow, UINT bEnableHigh);
200 void setTxRate(PADAPTER_STRUCT Adapter, UINT uPort, UINT lrate, UINT hrate);
201 void setRxRate(PADAPTER_STRUCT Adapter, UINT uPort, UINT lrate, UINT hrate);
202 #endif
204 #endif /* __KS8695DRV_H */