[TG3]: Add tagged status support.
[linux-2.6/verdex.git] / drivers / net / sk98lin / h / skgeinit.h
blob184f47c5a60f9db351d983e610fdd7305cc213cd
1 /******************************************************************************
3 * Name: skgeinit.h
4 * Project: Gigabit Ethernet Adapters, Common Modules
5 * Version: $Revision: 1.83 $
6 * Date: $Date: 2003/09/16 14:07:37 $
7 * Purpose: Structures and prototypes for the GE Init Module
9 ******************************************************************************/
11 /******************************************************************************
13 * (C)Copyright 1998-2002 SysKonnect.
14 * (C)Copyright 2002-2003 Marvell.
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
21 * The information in this file is provided "AS IS" without warranty.
23 ******************************************************************************/
25 #ifndef __INC_SKGEINIT_H_
26 #define __INC_SKGEINIT_H_
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
32 /* defines ********************************************************************/
34 #define SK_TEST_VAL 0x11335577UL
36 /* modifying Link LED behaviour (used with SkGeLinkLED()) */
37 #define SK_LNK_OFF LED_OFF
38 #define SK_LNK_ON (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
39 #define SK_LNK_BLINK (LED_ON | LED_BLK_ON | LED_SYNC_ON)
40 #define SK_LNK_PERM (LED_ON | LED_BLK_OFF | LED_SYNC_ON)
41 #define SK_LNK_TST (LED_ON | LED_BLK_ON | LED_SYNC_OFF)
43 /* parameter 'Mode' when calling SK_HWAC_LINK_LED() */
44 #define SK_LED_OFF LED_OFF
45 #define SK_LED_ACTIVE (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
46 #define SK_LED_STANDBY (LED_ON | LED_BLK_ON | LED_SYNC_OFF)
48 /* addressing LED Registers in SkGeXmitLED() */
49 #define XMIT_LED_INI 0
50 #define XMIT_LED_CNT (RX_LED_VAL - RX_LED_INI)
51 #define XMIT_LED_CTRL (RX_LED_CTRL- RX_LED_INI)
52 #define XMIT_LED_TST (RX_LED_TST - RX_LED_INI)
54 /* parameter 'Mode' when calling SkGeXmitLED() */
55 #define SK_LED_DIS 0
56 #define SK_LED_ENA 1
57 #define SK_LED_TST 2
59 /* Counter and Timer constants, for a host clock of 62.5 MHz */
60 #define SK_XMIT_DUR 0x002faf08UL /* 50 ms */
61 #define SK_BLK_DUR 0x01dcd650UL /* 500 ms */
63 #define SK_DPOLL_DEF 0x00ee6b28UL /* 250 ms at 62.5 MHz */
65 #define SK_DPOLL_MAX 0x00ffffffUL /* 268 ms at 62.5 MHz */
66 /* 215 ms at 78.12 MHz */
68 #define SK_FACT_62 100 /* is given in percent */
69 #define SK_FACT_53 85 /* on GENESIS: 53.12 MHz */
70 #define SK_FACT_78 125 /* on YUKON: 78.12 MHz */
72 /* Timeout values */
73 #define SK_MAC_TO_53 72 /* MAC arbiter timeout */
74 #define SK_PKT_TO_53 0x2000 /* Packet arbiter timeout */
75 #define SK_PKT_TO_MAX 0xffff /* Maximum value */
76 #define SK_RI_TO_53 36 /* RAM interface timeout */
78 #define SK_PHY_ACC_TO 600000 /* PHY access timeout */
80 /* RAM Buffer High Pause Threshold values */
81 #define SK_RB_ULPP ( 8 * 1024) /* Upper Level in kB/8 */
82 #define SK_RB_LLPP_S (10 * 1024) /* Lower Level for small Queues */
83 #define SK_RB_LLPP_B (16 * 1024) /* Lower Level for big Queues */
85 #ifndef SK_BMU_RX_WM
86 #define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */
87 #endif
88 #ifndef SK_BMU_TX_WM
89 #define SK_BMU_TX_WM 0x600 /* BMU Tx Watermark */
90 #endif
92 /* XMAC II Rx High Watermark */
93 #define SK_XM_RX_HI_WM 0x05aa /* 1450 */
95 /* XMAC II Tx Threshold */
96 #define SK_XM_THR_REDL 0x01fb /* .. for redundant link usage */
97 #define SK_XM_THR_SL 0x01fb /* .. for single link adapters */
98 #define SK_XM_THR_MULL 0x01fb /* .. for multiple link usage */
99 #define SK_XM_THR_JUMBO 0x03fc /* .. for jumbo frame usage */
101 /* values for GIPortUsage */
102 #define SK_RED_LINK 1 /* redundant link usage */
103 #define SK_MUL_LINK 2 /* multiple link usage */
104 #define SK_JUMBO_LINK 3 /* driver uses jumbo frames */
106 /* Minimum RAM Buffer Rx Queue Size */
107 #define SK_MIN_RXQ_SIZE 16 /* 16 kB */
109 /* Minimum RAM Buffer Tx Queue Size */
110 #define SK_MIN_TXQ_SIZE 16 /* 16 kB */
112 /* Queue Size units */
113 #define QZ_UNITS 0x7
114 #define QZ_STEP 8
116 /* Percentage of queue size from whole memory */
117 /* 80 % for receive */
118 #define RAM_QUOTA_RX 80L
119 /* 0% for sync transfer */
120 #define RAM_QUOTA_SYNC 0L
121 /* the rest (20%) is taken for async transfer */
123 /* Get the rounded queue size in Bytes in 8k steps */
124 #define ROUND_QUEUE_SIZE(SizeInBytes) \
125 ((((unsigned long) (SizeInBytes) + (QZ_STEP*1024L)-1) / 1024) & \
126 ~(QZ_STEP-1))
128 /* Get the rounded queue size in KBytes in 8k steps */
129 #define ROUND_QUEUE_SIZE_KB(Kilobytes) \
130 ROUND_QUEUE_SIZE((Kilobytes) * 1024L)
132 /* Types of RAM Buffer Queues */
133 #define SK_RX_SRAM_Q 1 /* small receive queue */
134 #define SK_RX_BRAM_Q 2 /* big receive queue */
135 #define SK_TX_RAM_Q 3 /* small or big transmit queue */
137 /* parameter 'Dir' when calling SkGeStopPort() */
138 #define SK_STOP_TX 1 /* Stops the transmit path, resets the XMAC */
139 #define SK_STOP_RX 2 /* Stops the receive path */
140 #define SK_STOP_ALL 3 /* Stops Rx and Tx path, resets the XMAC */
142 /* parameter 'RstMode' when calling SkGeStopPort() */
143 #define SK_SOFT_RST 1 /* perform a software reset */
144 #define SK_HARD_RST 2 /* perform a hardware reset */
146 /* Init Levels */
147 #define SK_INIT_DATA 0 /* Init level 0: init data structures */
148 #define SK_INIT_IO 1 /* Init level 1: init with IOs */
149 #define SK_INIT_RUN 2 /* Init level 2: init for run time */
151 /* Link Mode Parameter */
152 #define SK_LMODE_HALF 1 /* Half Duplex Mode */
153 #define SK_LMODE_FULL 2 /* Full Duplex Mode */
154 #define SK_LMODE_AUTOHALF 3 /* AutoHalf Duplex Mode */
155 #define SK_LMODE_AUTOFULL 4 /* AutoFull Duplex Mode */
156 #define SK_LMODE_AUTOBOTH 5 /* AutoBoth Duplex Mode */
157 #define SK_LMODE_AUTOSENSE 6 /* configured mode auto sensing */
158 #define SK_LMODE_INDETERMINATED 7 /* indeterminated */
160 /* Auto-negotiation timeout in 100ms granularity */
161 #define SK_AND_MAX_TO 6 /* Wait 600 msec before link comes up */
163 /* Auto-negotiation error codes */
164 #define SK_AND_OK 0 /* no error */
165 #define SK_AND_OTHER 1 /* other error than below */
166 #define SK_AND_DUP_CAP 2 /* Duplex capabilities error */
169 /* Link Speed Capabilities */
170 #define SK_LSPEED_CAP_AUTO (1<<0) /* Automatic resolution */
171 #define SK_LSPEED_CAP_10MBPS (1<<1) /* 10 Mbps */
172 #define SK_LSPEED_CAP_100MBPS (1<<2) /* 100 Mbps */
173 #define SK_LSPEED_CAP_1000MBPS (1<<3) /* 1000 Mbps */
174 #define SK_LSPEED_CAP_INDETERMINATED (1<<4) /* indeterminated */
176 /* Link Speed Parameter */
177 #define SK_LSPEED_AUTO 1 /* Automatic resolution */
178 #define SK_LSPEED_10MBPS 2 /* 10 Mbps */
179 #define SK_LSPEED_100MBPS 3 /* 100 Mbps */
180 #define SK_LSPEED_1000MBPS 4 /* 1000 Mbps */
181 #define SK_LSPEED_INDETERMINATED 5 /* indeterminated */
183 /* Link Speed Current State */
184 #define SK_LSPEED_STAT_UNKNOWN 1
185 #define SK_LSPEED_STAT_10MBPS 2
186 #define SK_LSPEED_STAT_100MBPS 3
187 #define SK_LSPEED_STAT_1000MBPS 4
188 #define SK_LSPEED_STAT_INDETERMINATED 5
191 /* Link Capability Parameter */
192 #define SK_LMODE_CAP_HALF (1<<0) /* Half Duplex Mode */
193 #define SK_LMODE_CAP_FULL (1<<1) /* Full Duplex Mode */
194 #define SK_LMODE_CAP_AUTOHALF (1<<2) /* AutoHalf Duplex Mode */
195 #define SK_LMODE_CAP_AUTOFULL (1<<3) /* AutoFull Duplex Mode */
196 #define SK_LMODE_CAP_INDETERMINATED (1<<4) /* indeterminated */
198 /* Link Mode Current State */
199 #define SK_LMODE_STAT_UNKNOWN 1 /* Unknown Duplex Mode */
200 #define SK_LMODE_STAT_HALF 2 /* Half Duplex Mode */
201 #define SK_LMODE_STAT_FULL 3 /* Full Duplex Mode */
202 #define SK_LMODE_STAT_AUTOHALF 4 /* Half Duplex Mode obtained by Auto-Neg */
203 #define SK_LMODE_STAT_AUTOFULL 5 /* Full Duplex Mode obtained by Auto-Neg */
204 #define SK_LMODE_STAT_INDETERMINATED 6 /* indeterminated */
206 /* Flow Control Mode Parameter (and capabilities) */
207 #define SK_FLOW_MODE_NONE 1 /* No Flow-Control */
208 #define SK_FLOW_MODE_LOC_SEND 2 /* Local station sends PAUSE */
209 #define SK_FLOW_MODE_SYMMETRIC 3 /* Both stations may send PAUSE */
210 #define SK_FLOW_MODE_SYM_OR_REM 4 /* Both stations may send PAUSE or
211 * just the remote station may send PAUSE
213 #define SK_FLOW_MODE_INDETERMINATED 5 /* indeterminated */
215 /* Flow Control Status Parameter */
216 #define SK_FLOW_STAT_NONE 1 /* No Flow Control */
217 #define SK_FLOW_STAT_REM_SEND 2 /* Remote Station sends PAUSE */
218 #define SK_FLOW_STAT_LOC_SEND 3 /* Local station sends PAUSE */
219 #define SK_FLOW_STAT_SYMMETRIC 4 /* Both station may send PAUSE */
220 #define SK_FLOW_STAT_INDETERMINATED 5 /* indeterminated */
222 /* Master/Slave Mode Capabilities */
223 #define SK_MS_CAP_AUTO (1<<0) /* Automatic resolution */
224 #define SK_MS_CAP_MASTER (1<<1) /* This station is master */
225 #define SK_MS_CAP_SLAVE (1<<2) /* This station is slave */
226 #define SK_MS_CAP_INDETERMINATED (1<<3) /* indeterminated */
228 /* Set Master/Slave Mode Parameter (and capabilities) */
229 #define SK_MS_MODE_AUTO 1 /* Automatic resolution */
230 #define SK_MS_MODE_MASTER 2 /* This station is master */
231 #define SK_MS_MODE_SLAVE 3 /* This station is slave */
232 #define SK_MS_MODE_INDETERMINATED 4 /* indeterminated */
234 /* Master/Slave Status Parameter */
235 #define SK_MS_STAT_UNSET 1 /* The M/S status is not set */
236 #define SK_MS_STAT_MASTER 2 /* This station is master */
237 #define SK_MS_STAT_SLAVE 3 /* This station is slave */
238 #define SK_MS_STAT_FAULT 4 /* M/S resolution failed */
239 #define SK_MS_STAT_INDETERMINATED 5 /* indeterminated */
241 /* parameter 'Mode' when calling SkXmSetRxCmd() */
242 #define SK_STRIP_FCS_ON (1<<0) /* Enable FCS stripping of Rx frames */
243 #define SK_STRIP_FCS_OFF (1<<1) /* Disable FCS stripping of Rx frames */
244 #define SK_STRIP_PAD_ON (1<<2) /* Enable pad byte stripping of Rx fr */
245 #define SK_STRIP_PAD_OFF (1<<3) /* Disable pad byte stripping of Rx fr */
246 #define SK_LENERR_OK_ON (1<<4) /* Don't chk fr for in range len error */
247 #define SK_LENERR_OK_OFF (1<<5) /* Check frames for in range len error */
248 #define SK_BIG_PK_OK_ON (1<<6) /* Don't set Rx Error bit for big frames */
249 #define SK_BIG_PK_OK_OFF (1<<7) /* Set Rx Error bit for big frames */
250 #define SK_SELF_RX_ON (1<<8) /* Enable Rx of own packets */
251 #define SK_SELF_RX_OFF (1<<9) /* Disable Rx of own packets */
253 /* parameter 'Para' when calling SkMacSetRxTxEn() */
254 #define SK_MAC_LOOPB_ON (1<<0) /* Enable MAC Loopback Mode */
255 #define SK_MAC_LOOPB_OFF (1<<1) /* Disable MAC Loopback Mode */
256 #define SK_PHY_LOOPB_ON (1<<2) /* Enable PHY Loopback Mode */
257 #define SK_PHY_LOOPB_OFF (1<<3) /* Disable PHY Loopback Mode */
258 #define SK_PHY_FULLD_ON (1<<4) /* Enable GMII Full Duplex */
259 #define SK_PHY_FULLD_OFF (1<<5) /* Disable GMII Full Duplex */
261 /* States of PState */
262 #define SK_PRT_RESET 0 /* the port is reset */
263 #define SK_PRT_STOP 1 /* the port is stopped (similar to SW reset) */
264 #define SK_PRT_INIT 2 /* the port is initialized */
265 #define SK_PRT_RUN 3 /* the port has an active link */
267 /* PHY power down modes */
268 #define PHY_PM_OPERATIONAL_MODE 0 /* PHY operational mode */
269 #define PHY_PM_DEEP_SLEEP 1 /* coma mode --> minimal power */
270 #define PHY_PM_IEEE_POWER_DOWN 2 /* IEEE 22.2.4.1.5 compl. power down */
271 #define PHY_PM_ENERGY_DETECT 3 /* energy detect */
272 #define PHY_PM_ENERGY_DETECT_PLUS 4 /* energy detect plus */
274 /* Default receive frame limit for Workaround of XMAC Errata */
275 #define SK_DEF_RX_WA_LIM SK_CONSTU64(100)
277 /* values for GILedBlinkCtrl (LED Blink Control) */
278 #define SK_ACT_LED_BLINK (1<<0) /* Active LED blinking */
279 #define SK_DUP_LED_NORMAL (1<<1) /* Duplex LED normal */
280 #define SK_LED_LINK100_ON (1<<2) /* Link 100M LED on */
282 /* Link Partner Status */
283 #define SK_LIPA_UNKNOWN 0 /* Link partner is in unknown state */
284 #define SK_LIPA_MANUAL 1 /* Link partner is in detected manual state */
285 #define SK_LIPA_AUTO 2 /* Link partner is in auto-negotiation state */
287 /* Maximum Restarts before restart is ignored (3Com WA) */
288 #define SK_MAX_LRESTART 3 /* Max. 3 times the link is restarted */
290 /* Max. Auto-neg. timeouts before link detection in sense mode is reset */
291 #define SK_MAX_ANEG_TO 10 /* Max. 10 times the sense mode is reset */
293 /* structures *****************************************************************/
296 * MAC specific functions
298 typedef struct s_GeMacFunc {
299 int (*pFnMacUpdateStats)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
300 int (*pFnMacStatistic)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
301 SK_U16 StatAddr, SK_U32 SK_FAR *pVal);
302 int (*pFnMacResetCounter)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
303 int (*pFnMacOverflow)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
304 SK_U16 IStatus, SK_U64 SK_FAR *pVal);
305 } SK_GEMACFUNC;
308 * Port Structure
310 typedef struct s_GePort {
311 #ifndef SK_DIAG
312 SK_TIMER PWaTimer; /* Workaround Timer */
313 SK_TIMER HalfDupChkTimer;
314 #endif /* SK_DIAG */
315 SK_U32 PPrevShorts; /* Previous Short Counter checking */
316 SK_U32 PPrevFcs; /* Previous FCS Error Counter checking */
317 SK_U64 PPrevRx; /* Previous RxOk Counter checking */
318 SK_U64 PRxLim; /* Previous RxOk Counter checking */
319 SK_U64 LastOctets; /* For half duplex hang check */
320 int PLinkResCt; /* Link Restart Counter */
321 int PAutoNegTimeOut;/* Auto-negotiation timeout current value */
322 int PAutoNegTOCt; /* Auto-negotiation Timeout Counter */
323 int PRxQSize; /* Port Rx Queue Size in kB */
324 int PXSQSize; /* Port Synchronous Transmit Queue Size in kB */
325 int PXAQSize; /* Port Asynchronous Transmit Queue Size in kB */
326 SK_U32 PRxQRamStart; /* Receive Queue RAM Buffer Start Address */
327 SK_U32 PRxQRamEnd; /* Receive Queue RAM Buffer End Address */
328 SK_U32 PXsQRamStart; /* Sync Tx Queue RAM Buffer Start Address */
329 SK_U32 PXsQRamEnd; /* Sync Tx Queue RAM Buffer End Address */
330 SK_U32 PXaQRamStart; /* Async Tx Queue RAM Buffer Start Address */
331 SK_U32 PXaQRamEnd; /* Async Tx Queue RAM Buffer End Address */
332 SK_U32 PRxOverCnt; /* Receive Overflow Counter */
333 int PRxQOff; /* Rx Queue Address Offset */
334 int PXsQOff; /* Synchronous Tx Queue Address Offset */
335 int PXaQOff; /* Asynchronous Tx Queue Address Offset */
336 int PhyType; /* PHY used on this port */
337 int PState; /* Port status (reset, stop, init, run) */
338 SK_U16 PhyId1; /* PHY Id1 on this port */
339 SK_U16 PhyAddr; /* MDIO/MDC PHY address */
340 SK_U16 PIsave; /* Saved Interrupt status word */
341 SK_U16 PSsave; /* Saved PHY status word */
342 SK_U16 PGmANegAdv; /* Saved GPhy AutoNegAdvertisment register */
343 SK_BOOL PHWLinkUp; /* The hardware Link is up (wiring) */
344 SK_BOOL PLinkBroken; /* Is Link broken ? */
345 SK_BOOL PCheckPar; /* Do we check for parity errors ? */
346 SK_BOOL HalfDupTimerActive;
347 SK_U8 PLinkCap; /* Link Capabilities */
348 SK_U8 PLinkModeConf; /* Link Mode configured */
349 SK_U8 PLinkMode; /* Link Mode currently used */
350 SK_U8 PLinkModeStatus;/* Link Mode Status */
351 SK_U8 PLinkSpeedCap; /* Link Speed Capabilities(10/100/1000 Mbps) */
352 SK_U8 PLinkSpeed; /* configured Link Speed (10/100/1000 Mbps) */
353 SK_U8 PLinkSpeedUsed; /* current Link Speed (10/100/1000 Mbps) */
354 SK_U8 PFlowCtrlCap; /* Flow Control Capabilities */
355 SK_U8 PFlowCtrlMode; /* Flow Control Mode */
356 SK_U8 PFlowCtrlStatus;/* Flow Control Status */
357 SK_U8 PMSCap; /* Master/Slave Capabilities */
358 SK_U8 PMSMode; /* Master/Slave Mode */
359 SK_U8 PMSStatus; /* Master/Slave Status */
360 SK_BOOL PAutoNegFail; /* Auto-negotiation fail flag */
361 SK_U8 PLipaAutoNeg; /* Auto-negotiation possible with Link Partner */
362 SK_U8 PCableLen; /* Cable Length */
363 SK_U8 PMdiPairLen[4]; /* MDI[0..3] Pair Length */
364 SK_U8 PMdiPairSts[4]; /* MDI[0..3] Pair Diagnostic Status */
365 SK_U8 PPhyPowerState; /* PHY current power state */
366 int PMacColThres; /* MAC Collision Threshold */
367 int PMacJamLen; /* MAC Jam length */
368 int PMacJamIpgVal; /* MAC Jam IPG */
369 int PMacJamIpgData; /* MAC IPG Jam to Data */
370 int PMacIpgData; /* MAC Data IPG */
371 SK_BOOL PMacLimit4; /* reset collision counter and backoff algorithm */
372 } SK_GEPORT;
375 * Gigabit Ethernet Initialization Struct
376 * (has to be included in the adapter context)
378 typedef struct s_GeInit {
379 int GIChipId; /* Chip Identification Number */
380 int GIChipRev; /* Chip Revision Number */
381 SK_U8 GIPciHwRev; /* PCI HW Revision Number */
382 SK_BOOL GIGenesis; /* Genesis adapter ? */
383 SK_BOOL GIYukon; /* YUKON-A1/Bx chip */
384 SK_BOOL GIYukonLite; /* YUKON-Lite chip */
385 SK_BOOL GICopperType; /* Copper Type adapter ? */
386 SK_BOOL GIPciSlot64; /* 64-bit PCI Slot */
387 SK_BOOL GIPciClock66; /* 66 MHz PCI Clock */
388 SK_BOOL GIVauxAvail; /* VAUX available (YUKON) */
389 SK_BOOL GIYukon32Bit; /* 32-Bit YUKON adapter */
390 SK_U16 GILedBlinkCtrl; /* LED Blink Control */
391 int GIMacsFound; /* Number of MACs found on this adapter */
392 int GIMacType; /* MAC Type used on this adapter */
393 int GIHstClkFact; /* Host Clock Factor (62.5 / HstClk * 100) */
394 int GIPortUsage; /* Driver Port Usage */
395 int GILevel; /* Initialization Level completed */
396 int GIRamSize; /* The RAM size of the adapter in kB */
397 int GIWolOffs; /* WOL Register Offset (HW-Bug in Rev. A) */
398 SK_U32 GIRamOffs; /* RAM Address Offset for addr calculation */
399 SK_U32 GIPollTimerVal; /* Descr. Poll Timer Init Val (HstClk ticks) */
400 SK_U32 GIValIrqMask; /* Value for Interrupt Mask */
401 SK_U32 GITimeStampCnt; /* Time Stamp High Counter (YUKON only) */
402 SK_GEPORT GP[SK_MAX_MACS];/* Port Dependent Information */
403 SK_GEMACFUNC GIFunc; /* MAC depedent functions */
404 } SK_GEINIT;
407 * Error numbers and messages for skxmac2.c and skgeinit.c
409 #define SKERR_HWI_E001 (SK_ERRBASE_HWINIT)
410 #define SKERR_HWI_E001MSG "SkXmClrExactAddr() has got illegal parameters"
411 #define SKERR_HWI_E002 (SKERR_HWI_E001+1)
412 #define SKERR_HWI_E002MSG "SkGeInit(): Level 1 call missing"
413 #define SKERR_HWI_E003 (SKERR_HWI_E002+1)
414 #define SKERR_HWI_E003MSG "SkGeInit() called with illegal init Level"
415 #define SKERR_HWI_E004 (SKERR_HWI_E003+1)
416 #define SKERR_HWI_E004MSG "SkGeInitPort(): Queue Size illegal configured"
417 #define SKERR_HWI_E005 (SKERR_HWI_E004+1)
418 #define SKERR_HWI_E005MSG "SkGeInitPort(): cannot init running ports"
419 #define SKERR_HWI_E006 (SKERR_HWI_E005+1)
420 #define SKERR_HWI_E006MSG "SkGeMacInit(): PState does not match HW state"
421 #define SKERR_HWI_E007 (SKERR_HWI_E006+1)
422 #define SKERR_HWI_E007MSG "SkXmInitDupMd() called with invalid Dup Mode"
423 #define SKERR_HWI_E008 (SKERR_HWI_E007+1)
424 #define SKERR_HWI_E008MSG "SkXmSetRxCmd() called with invalid Mode"
425 #define SKERR_HWI_E009 (SKERR_HWI_E008+1)
426 #define SKERR_HWI_E009MSG "SkGeCfgSync() called although PXSQSize zero"
427 #define SKERR_HWI_E010 (SKERR_HWI_E009+1)
428 #define SKERR_HWI_E010MSG "SkGeCfgSync() called with invalid parameters"
429 #define SKERR_HWI_E011 (SKERR_HWI_E010+1)
430 #define SKERR_HWI_E011MSG "SkGeInitPort(): Receive Queue Size too small"
431 #define SKERR_HWI_E012 (SKERR_HWI_E011+1)
432 #define SKERR_HWI_E012MSG "SkGeInitPort(): invalid Queue Size specified"
433 #define SKERR_HWI_E013 (SKERR_HWI_E012+1)
434 #define SKERR_HWI_E013MSG "SkGeInitPort(): cfg changed for running queue"
435 #define SKERR_HWI_E014 (SKERR_HWI_E013+1)
436 #define SKERR_HWI_E014MSG "SkGeInitPort(): unknown GIPortUsage specified"
437 #define SKERR_HWI_E015 (SKERR_HWI_E014+1)
438 #define SKERR_HWI_E015MSG "Illegal Link mode parameter"
439 #define SKERR_HWI_E016 (SKERR_HWI_E015+1)
440 #define SKERR_HWI_E016MSG "Illegal Flow control mode parameter"
441 #define SKERR_HWI_E017 (SKERR_HWI_E016+1)
442 #define SKERR_HWI_E017MSG "Illegal value specified for GIPollTimerVal"
443 #define SKERR_HWI_E018 (SKERR_HWI_E017+1)
444 #define SKERR_HWI_E018MSG "FATAL: SkGeStopPort() does not terminate (Tx)"
445 #define SKERR_HWI_E019 (SKERR_HWI_E018+1)
446 #define SKERR_HWI_E019MSG "Illegal Speed parameter"
447 #define SKERR_HWI_E020 (SKERR_HWI_E019+1)
448 #define SKERR_HWI_E020MSG "Illegal Master/Slave parameter"
449 #define SKERR_HWI_E021 (SKERR_HWI_E020+1)
450 #define SKERR_HWI_E021MSG "MacUpdateStats(): cannot update statistic counter"
451 #define SKERR_HWI_E022 (SKERR_HWI_E021+1)
452 #define SKERR_HWI_E022MSG "MacStatistic(): illegal statistic base address"
453 #define SKERR_HWI_E023 (SKERR_HWI_E022+1)
454 #define SKERR_HWI_E023MSG "SkGeInitPort(): Transmit Queue Size too small"
455 #define SKERR_HWI_E024 (SKERR_HWI_E023+1)
456 #define SKERR_HWI_E024MSG "FATAL: SkGeStopPort() does not terminate (Rx)"
457 #define SKERR_HWI_E025 (SKERR_HWI_E024+1)
458 #define SKERR_HWI_E025MSG ""
460 /* function prototypes ********************************************************/
462 #ifndef SK_KR_PROTO
465 * public functions in skgeinit.c
467 extern void SkGePollRxD(
468 SK_AC *pAC,
469 SK_IOC IoC,
470 int Port,
471 SK_BOOL PollRxD);
473 extern void SkGePollTxD(
474 SK_AC *pAC,
475 SK_IOC IoC,
476 int Port,
477 SK_BOOL PollTxD);
479 extern void SkGeYellowLED(
480 SK_AC *pAC,
481 SK_IOC IoC,
482 int State);
484 extern int SkGeCfgSync(
485 SK_AC *pAC,
486 SK_IOC IoC,
487 int Port,
488 SK_U32 IntTime,
489 SK_U32 LimCount,
490 int SyncMode);
492 extern void SkGeLoadLnkSyncCnt(
493 SK_AC *pAC,
494 SK_IOC IoC,
495 int Port,
496 SK_U32 CntVal);
498 extern void SkGeStopPort(
499 SK_AC *pAC,
500 SK_IOC IoC,
501 int Port,
502 int Dir,
503 int RstMode);
505 extern int SkGeInit(
506 SK_AC *pAC,
507 SK_IOC IoC,
508 int Level);
510 extern void SkGeDeInit(
511 SK_AC *pAC,
512 SK_IOC IoC);
514 extern int SkGeInitPort(
515 SK_AC *pAC,
516 SK_IOC IoC,
517 int Port);
519 extern void SkGeXmitLED(
520 SK_AC *pAC,
521 SK_IOC IoC,
522 int Led,
523 int Mode);
525 extern void SkGeInitRamIface(
526 SK_AC *pAC,
527 SK_IOC IoC);
529 extern int SkGeInitAssignRamToQueues(
530 SK_AC *pAC,
531 int ActivePort,
532 SK_BOOL DualNet);
535 * public functions in skxmac2.c
537 extern void SkMacRxTxDisable(
538 SK_AC *pAC,
539 SK_IOC IoC,
540 int Port);
542 extern void SkMacSoftRst(
543 SK_AC *pAC,
544 SK_IOC IoC,
545 int Port);
547 extern void SkMacHardRst(
548 SK_AC *pAC,
549 SK_IOC IoC,
550 int Port);
552 extern void SkMacClearRst(
553 SK_AC *pAC,
554 SK_IOC IoC,
555 int Port);
557 extern void SkXmInitMac(
558 SK_AC *pAC,
559 SK_IOC IoC,
560 int Port);
562 extern void SkGmInitMac(
563 SK_AC *pAC,
564 SK_IOC IoC,
565 int Port);
567 extern void SkMacInitPhy(
568 SK_AC *pAC,
569 SK_IOC IoC,
570 int Port,
571 SK_BOOL DoLoop);
573 extern void SkMacIrqDisable(
574 SK_AC *pAC,
575 SK_IOC IoC,
576 int Port);
578 extern void SkMacFlushTxFifo(
579 SK_AC *pAC,
580 SK_IOC IoC,
581 int Port);
583 extern void SkMacFlushRxFifo(
584 SK_AC *pAC,
585 SK_IOC IoC,
586 int Port);
588 extern void SkMacIrq(
589 SK_AC *pAC,
590 SK_IOC IoC,
591 int Port);
593 extern int SkMacAutoNegDone(
594 SK_AC *pAC,
595 SK_IOC IoC,
596 int Port);
598 extern void SkMacAutoNegLipaPhy(
599 SK_AC *pAC,
600 SK_IOC IoC,
601 int Port,
602 SK_U16 IStatus);
604 extern void SkMacSetRxTxEn(
605 SK_AC *pAC,
606 SK_IOC IoC,
607 int Port,
608 int Para);
610 extern int SkMacRxTxEnable(
611 SK_AC *pAC,
612 SK_IOC IoC,
613 int Port);
615 extern void SkMacPromiscMode(
616 SK_AC *pAC,
617 SK_IOC IoC,
618 int Port,
619 SK_BOOL Enable);
621 extern void SkMacHashing(
622 SK_AC *pAC,
623 SK_IOC IoC,
624 int Port,
625 SK_BOOL Enable);
627 extern void SkXmPhyRead(
628 SK_AC *pAC,
629 SK_IOC IoC,
630 int Port,
631 int Addr,
632 SK_U16 SK_FAR *pVal);
634 extern void SkXmPhyWrite(
635 SK_AC *pAC,
636 SK_IOC IoC,
637 int Port,
638 int Addr,
639 SK_U16 Val);
641 extern void SkGmPhyRead(
642 SK_AC *pAC,
643 SK_IOC IoC,
644 int Port,
645 int Addr,
646 SK_U16 SK_FAR *pVal);
648 extern void SkGmPhyWrite(
649 SK_AC *pAC,
650 SK_IOC IoC,
651 int Port,
652 int Addr,
653 SK_U16 Val);
655 extern void SkXmClrExactAddr(
656 SK_AC *pAC,
657 SK_IOC IoC,
658 int Port,
659 int StartNum,
660 int StopNum);
662 extern void SkXmInitDupMd(
663 SK_AC *pAC,
664 SK_IOC IoC,
665 int Port);
667 extern void SkXmInitPauseMd(
668 SK_AC *pAC,
669 SK_IOC IoC,
670 int Port);
672 extern void SkXmAutoNegLipaXmac(
673 SK_AC *pAC,
674 SK_IOC IoC,
675 int Port,
676 SK_U16 IStatus);
678 extern int SkXmUpdateStats(
679 SK_AC *pAC,
680 SK_IOC IoC,
681 unsigned int Port);
683 extern int SkGmUpdateStats(
684 SK_AC *pAC,
685 SK_IOC IoC,
686 unsigned int Port);
688 extern int SkXmMacStatistic(
689 SK_AC *pAC,
690 SK_IOC IoC,
691 unsigned int Port,
692 SK_U16 StatAddr,
693 SK_U32 SK_FAR *pVal);
695 extern int SkGmMacStatistic(
696 SK_AC *pAC,
697 SK_IOC IoC,
698 unsigned int Port,
699 SK_U16 StatAddr,
700 SK_U32 SK_FAR *pVal);
702 extern int SkXmResetCounter(
703 SK_AC *pAC,
704 SK_IOC IoC,
705 unsigned int Port);
707 extern int SkGmResetCounter(
708 SK_AC *pAC,
709 SK_IOC IoC,
710 unsigned int Port);
712 extern int SkXmOverflowStatus(
713 SK_AC *pAC,
714 SK_IOC IoC,
715 unsigned int Port,
716 SK_U16 IStatus,
717 SK_U64 SK_FAR *pStatus);
719 extern int SkGmOverflowStatus(
720 SK_AC *pAC,
721 SK_IOC IoC,
722 unsigned int Port,
723 SK_U16 MacStatus,
724 SK_U64 SK_FAR *pStatus);
726 extern int SkGmCableDiagStatus(
727 SK_AC *pAC,
728 SK_IOC IoC,
729 int Port,
730 SK_BOOL StartTest);
732 extern int SkGmEnterLowPowerMode(
733 SK_AC *pAC,
734 SK_IOC IoC,
735 int Port,
736 SK_U8 Mode);
738 extern int SkGmLeaveLowPowerMode(
739 SK_AC *pAC,
740 SK_IOC IoC,
741 int Port);
743 #ifdef SK_DIAG
744 extern void SkGePhyRead(
745 SK_AC *pAC,
746 SK_IOC IoC,
747 int Port,
748 int Addr,
749 SK_U16 *pVal);
751 extern void SkGePhyWrite(
752 SK_AC *pAC,
753 SK_IOC IoC,
754 int Port,
755 int Addr,
756 SK_U16 Val);
758 extern void SkMacSetRxCmd(
759 SK_AC *pAC,
760 SK_IOC IoC,
761 int Port,
762 int Mode);
763 extern void SkMacCrcGener(
764 SK_AC *pAC,
765 SK_IOC IoC,
766 int Port,
767 SK_BOOL Enable);
768 extern void SkMacTimeStamp(
769 SK_AC *pAC,
770 SK_IOC IoC,
771 int Port,
772 SK_BOOL Enable);
773 extern void SkXmSendCont(
774 SK_AC *pAC,
775 SK_IOC IoC,
776 int Port,
777 SK_BOOL Enable);
778 #endif /* SK_DIAG */
780 #else /* SK_KR_PROTO */
783 * public functions in skgeinit.c
785 extern void SkGePollRxD();
786 extern void SkGePollTxD();
787 extern void SkGeYellowLED();
788 extern int SkGeCfgSync();
789 extern void SkGeLoadLnkSyncCnt();
790 extern void SkGeStopPort();
791 extern int SkGeInit();
792 extern void SkGeDeInit();
793 extern int SkGeInitPort();
794 extern void SkGeXmitLED();
795 extern void SkGeInitRamIface();
796 extern int SkGeInitAssignRamToQueues();
799 * public functions in skxmac2.c
801 extern void SkMacRxTxDisable();
802 extern void SkMacSoftRst();
803 extern void SkMacHardRst();
804 extern void SkMacClearRst();
805 extern void SkMacInitPhy();
806 extern int SkMacRxTxEnable();
807 extern void SkMacPromiscMode();
808 extern void SkMacHashing();
809 extern void SkMacIrqDisable();
810 extern void SkMacFlushTxFifo();
811 extern void SkMacFlushRxFifo();
812 extern void SkMacIrq();
813 extern int SkMacAutoNegDone();
814 extern void SkMacAutoNegLipaPhy();
815 extern void SkMacSetRxTxEn();
816 extern void SkXmInitMac();
817 extern void SkXmPhyRead();
818 extern void SkXmPhyWrite();
819 extern void SkGmInitMac();
820 extern void SkGmPhyRead();
821 extern void SkGmPhyWrite();
822 extern void SkXmClrExactAddr();
823 extern void SkXmInitDupMd();
824 extern void SkXmInitPauseMd();
825 extern void SkXmAutoNegLipaXmac();
826 extern int SkXmUpdateStats();
827 extern int SkGmUpdateStats();
828 extern int SkXmMacStatistic();
829 extern int SkGmMacStatistic();
830 extern int SkXmResetCounter();
831 extern int SkGmResetCounter();
832 extern int SkXmOverflowStatus();
833 extern int SkGmOverflowStatus();
834 extern int SkGmCableDiagStatus();
835 extern int SkGmEnterLowPowerMode();
836 extern int SkGmLeaveLowPowerMode();
838 #ifdef SK_DIAG
839 extern void SkGePhyRead();
840 extern void SkGePhyWrite();
841 extern void SkMacSetRxCmd();
842 extern void SkMacCrcGener();
843 extern void SkMacTimeStamp();
844 extern void SkXmSendCont();
845 #endif /* SK_DIAG */
847 #endif /* SK_KR_PROTO */
849 #ifdef __cplusplus
851 #endif /* __cplusplus */
853 #endif /* __INC_SKGEINIT_H_ */