1 /******************************************************************************
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_
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() */
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 */
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 */
86 #define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */
89 #define SK_BMU_TX_WM 0x600 /* BMU Tx Watermark */
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 */
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) & \
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 */
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
);
310 typedef struct s_GePort
{
312 SK_TIMER PWaTimer
; /* Workaround Timer */
313 SK_TIMER HalfDupChkTimer
;
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 */
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 */
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 ********************************************************/
465 * public functions in skgeinit.c
467 extern void SkGePollTxD(
473 extern void SkGeYellowLED(
478 extern int SkGeCfgSync(
486 extern void SkGeLoadLnkSyncCnt(
492 extern void SkGeStopPort(
504 extern void SkGeDeInit(
508 extern int SkGeInitPort(
513 extern void SkGeXmitLED(
519 extern int SkGeInitAssignRamToQueues(
525 * public functions in skxmac2.c
527 extern void SkMacRxTxDisable(
532 extern void SkMacSoftRst(
537 extern void SkMacHardRst(
542 extern void SkXmInitMac(
547 extern void SkGmInitMac(
552 extern void SkMacInitPhy(
558 extern void SkMacIrqDisable(
563 extern void SkMacFlushTxFifo(
568 extern void SkMacIrq(
573 extern int SkMacAutoNegDone(
578 extern void SkMacAutoNegLipaPhy(
584 extern int SkMacRxTxEnable(
589 extern void SkMacPromiscMode(
595 extern void SkMacHashing(
601 extern void SkXmPhyRead(
606 SK_U16 SK_FAR
*pVal
);
608 extern void SkXmPhyWrite(
615 extern void SkGmPhyRead(
620 SK_U16 SK_FAR
*pVal
);
622 extern void SkGmPhyWrite(
629 extern void SkXmClrExactAddr(
636 extern void SkXmAutoNegLipaXmac(
642 extern int SkXmUpdateStats(
647 extern int SkGmUpdateStats(
652 extern int SkXmMacStatistic(
657 SK_U32 SK_FAR
*pVal
);
659 extern int SkGmMacStatistic(
664 SK_U32 SK_FAR
*pVal
);
666 extern int SkXmResetCounter(
671 extern int SkGmResetCounter(
676 extern int SkXmOverflowStatus(
681 SK_U64 SK_FAR
*pStatus
);
683 extern int SkGmOverflowStatus(
688 SK_U64 SK_FAR
*pStatus
);
690 extern int SkGmCableDiagStatus(
697 extern void SkGePhyRead(
704 extern void SkGePhyWrite(
711 extern void SkMacSetRxCmd(
716 extern void SkMacCrcGener(
721 extern void SkMacTimeStamp(
726 extern void SkXmSendCont(
733 #else /* SK_KR_PROTO */
736 * public functions in skgeinit.c
738 extern void SkGePollTxD();
739 extern void SkGeYellowLED();
740 extern int SkGeCfgSync();
741 extern void SkGeLoadLnkSyncCnt();
742 extern void SkGeStopPort();
743 extern int SkGeInit();
744 extern void SkGeDeInit();
745 extern int SkGeInitPort();
746 extern void SkGeXmitLED();
747 extern int SkGeInitAssignRamToQueues();
750 * public functions in skxmac2.c
752 extern void SkMacRxTxDisable();
753 extern void SkMacSoftRst();
754 extern void SkMacHardRst();
755 extern void SkMacInitPhy();
756 extern int SkMacRxTxEnable();
757 extern void SkMacPromiscMode();
758 extern void SkMacHashing();
759 extern void SkMacIrqDisable();
760 extern void SkMacFlushTxFifo();
761 extern void SkMacIrq();
762 extern int SkMacAutoNegDone();
763 extern void SkMacAutoNegLipaPhy();
764 extern void SkXmInitMac();
765 extern void SkXmPhyRead();
766 extern void SkXmPhyWrite();
767 extern void SkGmInitMac();
768 extern void SkGmPhyRead();
769 extern void SkGmPhyWrite();
770 extern void SkXmClrExactAddr();
771 extern void SkXmAutoNegLipaXmac();
772 extern int SkXmUpdateStats();
773 extern int SkGmUpdateStats();
774 extern int SkXmMacStatistic();
775 extern int SkGmMacStatistic();
776 extern int SkXmResetCounter();
777 extern int SkGmResetCounter();
778 extern int SkXmOverflowStatus();
779 extern int SkGmOverflowStatus();
780 extern int SkGmCableDiagStatus();
783 extern void SkGePhyRead();
784 extern void SkGePhyWrite();
785 extern void SkMacSetRxCmd();
786 extern void SkMacCrcGener();
787 extern void SkMacTimeStamp();
788 extern void SkXmSendCont();
791 #endif /* SK_KR_PROTO */
795 #endif /* __cplusplus */
797 #endif /* __INC_SKGEINIT_H_ */