skgeinit.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:23k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /******************************************************************************
  2.  *
  3.  * Name: skgeinit.h
  4.  * Project: GEnesis, PCI Gigabit Ethernet Adapter
  5.  * Version: $Revision: 1.51 $
  6.  * Date: $Date: 2001/02/09 12:26:38 $
  7.  * Purpose: Structures and prototypes for the GE Init Module
  8.  *
  9.  ******************************************************************************/
  10. /******************************************************************************
  11.  *
  12.  * (C)Copyright 1998-2001 SysKonnect GmbH.
  13.  *
  14.  * This program is free software; you can redistribute it and/or modify
  15.  * it under the terms of the GNU General Public License as published by
  16.  * the Free Software Foundation; either version 2 of the License, or
  17.  * (at your option) any later version.
  18.  *
  19.  * The information in this file is provided "AS IS" without warranty.
  20.  *
  21.  ******************************************************************************/
  22. /******************************************************************************
  23.  *
  24.  * History:
  25.  *
  26.  * $Log: skgeinit.h,v $
  27.  * Revision 1.51  2001/02/09 12:26:38  cgoos
  28.  * Inserted #ifdef DIAG for half duplex workaround timer.
  29.  *
  30.  * Revision 1.50  2001/02/07 07:56:40  rassmann
  31.  * Corrected copyright.
  32.  *
  33.  * Revision 1.49  2001/01/31 15:32:18  gklug
  34.  * fix: problem with autosensing an SR8800 switch
  35.  * add: counter for autoneg timeouts
  36.  *
  37.  * Revision 1.48  2000/11/09 11:30:10  rassmann
  38.  * WA: Waiting after releasing reset until BCom chip is accessible.
  39.  *
  40.  * Revision 1.47  2000/10/18 12:22:40  cgoos
  41.  * Added workaround for half duplex hangup.
  42.  *
  43.  * Revision 1.46  2000/08/10 11:28:00  rassmann
  44.  * Editorial changes.
  45.  * Preserving 32-bit alignment in structs for the adapter context.
  46.  *
  47.  * Revision 1.45  1999/11/22 13:56:19  cgoos
  48.  * Changed license header to GPL.
  49.  *
  50.  * Revision 1.44  1999/10/26 07:34:15  malthoff
  51.  * The define SK_LNK_ON has been lost in v1.41.
  52.  *
  53.  * Revision 1.43  1999/10/06 09:30:16  cgoos
  54.  * Changed SK_XM_THR_JUMBO.
  55.  *
  56.  * Revision 1.42  1999/09/16 12:58:26  cgoos
  57.  * Changed SK_LED_STANDY macro to be independent of HW link sync.
  58.  *
  59.  * Revision 1.41  1999/07/30 06:56:14  malthoff
  60.  * Correct comment for SK_MS_STAT_UNSET.
  61.  *
  62.  * Revision 1.40  1999/05/27 13:38:46  cgoos
  63.  * Added SK_BMU_TX_WM.
  64.  * Made SK_BMU_TX_WM and SK_BMU_RX_WM user-definable.
  65.  * Changed XMAC Tx treshold to max. values.
  66.  *
  67.  * Revision 1.39  1999/05/20 14:35:26  malthoff
  68.  * Remove prototypes for SkGeLinkLED().
  69.  *
  70.  * Revision 1.38  1999/05/19 11:59:12  cgoos
  71.  * Added SK_MS_CAP_INDETERMINATED define.
  72.  *
  73.  * Revision 1.37  1999/05/19 07:32:33  cgoos
  74.  * Changes for 1000Base-T.
  75.  * LED-defines for HWAC_LINK_LED macro.
  76.  *
  77.  * Revision 1.36  1999/04/08 14:00:24  gklug
  78.  * add:Port struct field PLinkResCt
  79.  *
  80.  * Revision 1.35  1999/03/25 07:43:07  malthoff
  81.  * Add error string for SKERR_HWI_E018MSG.
  82.  *
  83.  * Revision 1.34  1999/03/12 16:25:57  malthoff
  84.  * Remove PPollRxD and PPollTxD.
  85.  * Add SKERR_HWI_E017MSG. and SK_DPOLL_MAX.
  86.  *
  87.  * Revision 1.33  1999/03/12 13:34:41  malthoff
  88.  * Add Autonegotiation error codes.
  89.  * Change defines for parameter Mode in SkXmSetRxCmd().
  90.  * Replace __STDC__ by SK_KR_PROTO.
  91.  *
  92.  * Revision 1.32  1999/01/25 14:40:20  mhaveman
  93.  * Added new return states for the virtual management port if multiple
  94.  * ports are active but differently configured.
  95.  *
  96.  * Revision 1.31  1998/12/11 15:17:02  gklug
  97.  * add: Link partnet autoneg states : Unknown Manual and Autonegotiation
  98.  *
  99.  * Revision 1.30  1998/12/07 12:17:04  gklug
  100.  * add: Link Partner autonegotiation flag
  101.  *
  102.  * Revision 1.29  1998/12/01 10:54:42  gklug
  103.  * add: variables for XMAC Errata
  104.  *
  105.  * Revision 1.28  1998/12/01 10:14:15  gklug
  106.  * add: PIsave saves the Interrupt status word
  107.  *
  108.  * Revision 1.27  1998/11/26 15:24:52  mhaveman
  109.  * Added link status states SK_LMODE_STAT_AUTOHALF and
  110.  * SK_LMODE_STAT_AUTOFULL which are used by PNMI.
  111.  *
  112.  * Revision 1.26  1998/11/26 14:53:01  gklug
  113.  * add:autoNeg Timeout variable
  114.  *
  115.  * Revision 1.25  1998/11/26 08:58:50  gklug
  116.  * add: Link Mode configuration (AUTO Sense mode)
  117.  *
  118.  * Revision 1.24  1998/11/24 13:30:27  gklug
  119.  * add: PCheckPar to port struct
  120.  *
  121.  * Revision 1.23  1998/11/18 13:23:26  malthoff
  122.  * Add SK_PKT_TO_MAX.
  123.  *
  124.  * Revision 1.22  1998/11/18 13:19:54  gklug
  125.  * add: PPrevShorts and PLinkBroken to port struct for WA XMAC Errata #C1
  126.  *
  127.  * Revision 1.21  1998/10/26 08:02:57  malthoff
  128.  * Add GIRamOffs.
  129.  *
  130.  * Revision 1.20  1998/10/19 07:28:37  malthoff
  131.  * Add prototyp for SkGeInitRamIface().
  132.  *
  133.  * Revision 1.19  1998/10/14 14:47:48  malthoff
  134.  * SK_TIMER should not be defined for Diagnostics.
  135.  * Add SKERR_HWI_E015MSG and SKERR_HWI_E016MSG.
  136.  *
  137.  * Revision 1.18  1998/10/14 14:00:03  gklug
  138.  * add: timer to port struct for workaround of Errata #2
  139.  *
  140.  * Revision 1.17  1998/10/14 11:23:09  malthoff
  141.  * Add prototype for SkXmAutoNegDone().
  142.  * Fix SkXmSetRxCmd() prototype statement.
  143.  *
  144.  * Revision 1.16  1998/10/14 05:42:29  gklug
  145.  * add: HWLinkUp flag to Port struct
  146.  *
  147.  * Revision 1.15  1998/10/09 08:26:33  malthoff
  148.  * Rename SK_RB_ULPP_B to SK_RB_LLPP_B.
  149.  *
  150.  * Revision 1.14  1998/10/09 07:11:13  malthoff
  151.  * bug fix: SK_FACT_53 is 85 not 117.
  152.  * Rework time out init values.
  153.  * Add GIPortUsage and corresponding defines.
  154.  * Add some error log messages.
  155.  *
  156.  * Revision 1.13  1998/10/06 14:13:14  malthoff
  157.  * Add prototyp for SkGeLoadLnkSyncCnt().
  158.  *
  159.  * Revision 1.12  1998/10/05 11:29:53  malthoff
  160.  * bug fix: A comment was not closed.
  161.  *
  162.  * Revision 1.11  1998/10/05 08:01:59  malthoff
  163.  * Add default Timeout- Threshold- and
  164.  * Watermark constants. Add QRam start and end
  165.  * variables. Also add vars to store the polling
  166.  * mode and receive command. Add new Error Log
  167.  * Messages and function prototypes.
  168.  *
  169.  * Revision 1.10  1998/09/28 13:34:48  malthoff
  170.  * Add mode bits for LED functions.
  171.  * Move Autoneg and Flow Ctrl bits from shgesirq.h
  172.  * Add the required Error Log Entries
  173.  * and Function Prototypes.
  174.  *
  175.  * Revision 1.9  1998/09/16 14:38:41  malthoff
  176.  * Rework the SK_LNK_xxx defines.
  177.  * Add error log message defines.
  178.  * Add prototypes for skxmac2.c
  179.  *
  180.  * Revision 1.8  1998/09/11 05:29:18  gklug
  181.  * add: init state of a port
  182.  *
  183.  * Revision 1.7  1998/09/08 08:35:52  gklug
  184.  * add: defines of the Init Levels
  185.  *
  186.  * Revision 1.6  1998/09/03 13:48:42  gklug
  187.  * add: Link strati, capabilities to Port struct
  188.  *
  189.  * Revision 1.5  1998/09/03 13:30:59  malthoff
  190.  * Add SK_LNK_BLINK and SK_LNK_PERM.
  191.  *
  192.  * Revision 1.4  1998/09/03 09:55:31  malthoff
  193.  * Add constants for parameters Dir and RstMode
  194.  * when calling SkGeStopPort().
  195.  * Rework the prototyp section.
  196.  * Add Queue Address offsets PRxQOff, PXsQOff, and PXaQOff.
  197.  * Remove Ioc with IoC.
  198.  *
  199.  * Revision 1.3  1998/08/19 09:11:54  gklug
  200.  * fix: struct are removed from c-source (see CCC)
  201.  * add: typedefs for all structs
  202.  *
  203.  * Revision 1.2  1998/07/28 12:38:26  malthoff
  204.  * The prototypes got the parameter 'IoC'.
  205.  *
  206.  * Revision 1.1  1998/07/23 09:50:24  malthoff
  207.  * Created.
  208.  *
  209.  *
  210.  ******************************************************************************/
  211. #ifndef __INC_SKGEINIT_H_
  212. #define __INC_SKGEINIT_H_
  213. #ifdef __cplusplus
  214. extern "C" {
  215. #endif /* __cplusplus */
  216. /* defines ********************************************************************/
  217. /*
  218.  * defines for modifying Link LED behaviour (has been used with SkGeLinkLED())
  219.  */
  220. #define SK_LNK_OFF LED_OFF
  221. #define SK_LNK_ON (LED_ON | LED_BLK_OFF| LED_SYNC_OFF)
  222. #define SK_LNK_BLINK (LED_ON | LED_BLK_ON | LED_SYNC_ON)
  223. #define SK_LNK_PERM (LED_ON | LED_BLK_OFF| LED_SYNC_ON)
  224. #define SK_LNK_TST (LED_ON | LED_BLK_ON | LED_SYNC_OFF)
  225. /*
  226.  * defines for parameter 'Mode' when calling SK_HWAC_LINK_LED()
  227.  */
  228. #define SK_LED_OFF LED_OFF
  229. #define SK_LED_ACTIVE (LED_ON | LED_BLK_OFF| LED_SYNC_OFF)
  230. #define SK_LED_STANDBY (LED_ON | LED_BLK_ON| LED_SYNC_OFF)
  231. /*
  232.  * defines for parameter 'Mode' when calling SkGeXmitLED()
  233.  */
  234. #define SK_LED_DIS 0
  235. #define SK_LED_ENA 1
  236. #define SK_LED_TST 2
  237. /*
  238.  * Counter and Timer constants, for a host clock of 62.5 MHz
  239.  */
  240. #define SK_XMIT_DUR 0x002faf08L /*  50 ms */
  241. #define SK_BLK_DUR 0x01dcd650L /* 500 ms */
  242. #define SK_DPOLL_DEF 0x00EE6B28L /* 250 ms */
  243. #define SK_DPOLL_MAX 0x00FFFFFFL /* ca. 268ms */
  244. #define SK_FACT_62 100 /* is given in percent */
  245. #define SK_FACT_53  85
  246. /*
  247.  * Timeout values
  248.  */
  249. #define SK_MAC_TO_53 72 /* MAC arbiter timeout */
  250. #define SK_PKT_TO_53 0x2000 /* Packet arbiter timeout */
  251. #define SK_PKT_TO_MAX 0xffff /* Maximum value */
  252. #define SK_RI_TO_53 36 /* RAM interface timeout */
  253. /*
  254.  * RAM Buffer High Pause Threshold values
  255.  */
  256. #define SK_RB_ULPP ( 8 * 1024) /* Upper Level in kB/8 */
  257. #define SK_RB_LLPP_S (10 * 1024) /* Lower Level for small Queues */
  258. #define SK_RB_LLPP_B (16 * 1024) /* Lower Level for big Queues */
  259. #ifndef SK_BMU_RX_WM
  260. #define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */
  261. #endif
  262. #ifndef SK_BMU_TX_WM
  263. #define SK_BMU_TX_WM 0x600 /* BMU Rx Watermark */
  264. #endif
  265. /* XMAC II Tx Threshold */
  266. #define SK_XM_THR_REDL 0x01fb /* .. for redundant link usage */
  267. #define SK_XM_THR_SL 0x01fb /* .. for single link adapters */
  268. #define SK_XM_THR_MULL 0x01fb /* .. for multiple link usage */
  269. #define SK_XM_THR_JUMBO 0x03fc /* .. for jumbo frame usage */
  270. /* values for GIPortUsage */
  271. #define SK_RED_LINK 1 /* redundant link usage */
  272. #define SK_MUL_LINK 2 /* multiple link usage */
  273. #define SK_JUMBO_LINK 3 /* driver uses jumbo frames */
  274. /* Minimum RAM Buffer Receive Queue Size */
  275. #define SK_MIN_RXQ_SIZE 16 /* 16 kB */
  276. /*
  277.  * defines for parameter 'Dir' when calling SkGeStopPort()
  278.  */
  279. #define SK_STOP_TX 1 /* Stops the transmit path, resets the XMAC */
  280. #define SK_STOP_RX 2 /* Stops the receive path */
  281. #define SK_STOP_ALL 3 /* Stops rx and tx path, resets the XMAC */
  282. /*
  283.  * defines for parameter 'RstMode' when calling SkGeStopPort()
  284.  */
  285. #define SK_SOFT_RST 1 /* perform a software reset */
  286. #define SK_HARD_RST 2 /* perform a hardware reset */
  287. /*
  288.  * Define Init Levels
  289.  */
  290. #define SK_INIT_DATA 0 /* Init level 0: init data structures */
  291. #define SK_INIT_IO 1 /* Init level 1: init with IOs */
  292. #define SK_INIT_RUN 2 /* Init level 2: init for run time */
  293. /*
  294.  * Set Link Mode Parameter
  295.  */
  296. #define SK_LMODE_HALF 1 /* Half Duplex Mode */
  297. #define SK_LMODE_FULL 2 /* Full Duplex Mode */
  298. #define SK_LMODE_AUTOHALF 3 /* AutoHalf Duplex Mode */
  299. #define SK_LMODE_AUTOFULL 4 /* AutoFull Duplex Mode */
  300. #define SK_LMODE_AUTOBOTH 5 /* AutoBoth Duplex Mode */
  301. #define SK_LMODE_AUTOSENSE 6 /* configured mode auto sensing */
  302. #define SK_LMODE_INDETERMINATED 7 /* Return value for virtual port if
  303.  * multiple ports are differently
  304.  * configured.
  305.  */
  306. /*
  307.  * Autonegotiation timeout in 100ms granularity.
  308.  */
  309. #define SK_AND_MAX_TO 6 /* Wait 600 msec before link comes up */
  310. /*
  311.  * Define Autonegotiation error codes here
  312.  */
  313. #define SK_AND_OK 0 /* no error */
  314. #define SK_AND_OTHER 1 /* other error than below */
  315. #define SK_AND_DUP_CAP 2 /* Duplex capabilities error */
  316. /*
  317.  * Link Capability value
  318.  */
  319. #define SK_LMODE_CAP_HALF (1<<0) /* Half Duplex Mode */
  320. #define SK_LMODE_CAP_FULL (1<<1) /* Full Duplex Mode */
  321. #define SK_LMODE_CAP_AUTOHALF (1<<2) /* AutoHalf Duplex Mode */
  322. #define SK_LMODE_CAP_AUTOFULL (1<<3) /* AutoFull Duplex Mode */
  323. #define SK_LMODE_CAP_INDETERMINATED (1<<4) /* Return value for virtual port if
  324.  * multiple ports are differently
  325.  * configured.
  326.  */
  327. /*
  328.  * Link mode current state
  329.  */
  330. #define SK_LMODE_STAT_UNKNOWN 1 /* Unknown Duplex Mode */
  331. #define SK_LMODE_STAT_HALF 2 /* Half Duplex Mode */
  332. #define SK_LMODE_STAT_FULL 3 /* Full Duplex Mode */
  333. #define SK_LMODE_STAT_AUTOHALF 4 /* Half Duplex Mode obtained by AutoNeg */
  334. #define SK_LMODE_STAT_AUTOFULL 5 /* Half Duplex Mode obtained by AutoNeg */
  335. #define SK_LMODE_STAT_INDETERMINATED 6 /* Return value for virtual port if
  336.  * multiple ports are differently
  337.  * configured.
  338.  */
  339. /*
  340.  * Set Flow Control Mode Parameter (and capabilities)
  341.  */
  342. #define SK_FLOW_MODE_NONE 1 /* No Flow Control */
  343. #define SK_FLOW_MODE_LOC_SEND 2 /* Local station sends PAUSE */
  344. #define SK_FLOW_MODE_SYMMETRIC 3 /* Both station may send PAUSE */
  345. #define SK_FLOW_MODE_SYM_OR_REM 4 /* Both station may send PAUSE or
  346.  * just the remote station may send
  347.  * PAUSE
  348.  */
  349. #define SK_FLOW_MODE_INDETERMINATED 5 /* Return value for virtual port if
  350.  * multiple ports are differently
  351.  * configured.
  352.  */
  353. /*
  354.  * Flow Control Status Parameter
  355.  */
  356. #define SK_FLOW_STAT_NONE 1 /* No Flow Control */
  357. #define SK_FLOW_STAT_REM_SEND 2 /* Remote Station sends PAUSE */
  358. #define SK_FLOW_STAT_LOC_SEND 3 /* Local station sends PAUSE */
  359. #define SK_FLOW_STAT_SYMMETRIC 4 /* Both station may send PAUSE */
  360. #define SK_FLOW_STAT_INDETERMINATED 5 /* Return value for virtual port if
  361.  * multiple ports are differently
  362.  * configured.
  363.  */
  364. /*
  365.  * Master/Slave Mode capabilities
  366.  */
  367. #define SK_MS_CAP_AUTO (1<<0) /* Automatic resolution */
  368. #define SK_MS_CAP_MASTER (1<<1) /* This station is master */
  369. #define SK_MS_CAP_SLAVE (1<<2) /* This station is slave */
  370. #define SK_MS_CAP_INDETERMINATED (1<<3) /* Return value for virtual port if
  371.  * multiple ports are differently
  372.  * configured.
  373.  */
  374. /*
  375.  * Set Master/Slave Mode Parameter (and capabilities)
  376.  */
  377. #define SK_MS_MODE_AUTO 1 /* Automatic resolution */
  378. #define SK_MS_MODE_MASTER 2 /* This station is master */
  379. #define SK_MS_MODE_SLAVE 3 /* This station is slave */
  380. #define SK_MS_MODE_INDETERMINATED 4 /* Return value for virtual port if 
  381.  * multiple ports are differently
  382.  */
  383. /*
  384.  * Master/Slave Status Parameter
  385.  */
  386. #define SK_MS_STAT_UNSET 1 /* The MS status is never been determ*/
  387. #define SK_MS_STAT_MASTER 2 /* This station is master */
  388. #define SK_MS_STAT_SLAVE 3 /* This station is slave */
  389. #define SK_MS_STAT_FAULT 4 /* MS resolution failed */
  390. #define SK_MS_STAT_INDETERMINATED 5 /* Return value for virtual port if
  391.  * multiple ports are differently
  392.  */
  393. /*
  394.  * defines for parameter 'Mode' when calling SkXmSetRxCmd()
  395.  */
  396. #define SK_STRIP_FCS_ON (1<<0) /* Enable FCS stripping of rx frames */
  397. #define SK_STRIP_FCS_OFF (1<<1) /* Disable FCS stripping of rx frames */
  398. #define SK_STRIP_PAD_ON (1<<2) /* Enable pad byte stripping of rx f */
  399. #define SK_STRIP_PAD_OFF (1<<3) /* Disable pad byte stripping of rx f */
  400. #define SK_LENERR_OK_ON (1<<4) /* Don't chk fr for in range len error*/
  401. #define SK_LENERR_OK_OFF (1<<5) /* Check frames for in range len error*/
  402. #define SK_BIG_PK_OK_ON (1<<6) /* Don't set rcvError bit for big fr */
  403. #define SK_BIG_PK_OK_OFF (1<<7) /* Set rcvError bit for big frames */
  404. /*
  405.  * States of PState
  406.  */
  407. #define SK_PRT_RESET 0 /* the port is reset */
  408. #define SK_PRT_STOP 1 /* the port is stopped (similar to sw reset) */
  409. #define SK_PRT_INIT 2 /* the port is initialized */
  410. #define SK_PRT_RUN 3 /* the port has an active link */
  411. /*
  412.  * Default receive frame limit for Workaround of XMAC Errata
  413.  */
  414. #define SK_DEF_RX_WA_LIM SK_CONSTU64(100)
  415. /*
  416.  * Define link partner Status
  417.  */
  418. #define SK_LIPA_UNKNOWN 0 /* Link partner is in unknown state */
  419. #define SK_LIPA_MANUAL 1 /* Link partner is in detected manual state */
  420. #define SK_LIPA_AUTO 2 /* Link partner is in autonegotiation state */
  421. /*
  422.  * Define Maximum Restarts before restart is ignored (3com WA)
  423.  */
  424. #define SK_MAX_LRESTART 3 /* Max. 3 times the link is restarted */
  425. /*
  426.  * define max. autonegotiation timeouts before link detection in sense mode is
  427.  * reset.
  428.  */
  429. #define SK_MAX_ANEG_TO 10 /* Max. 10 times the sense mode is reset */
  430. /* structures *****************************************************************/
  431. /*
  432.  * Port Structure
  433.  */
  434. typedef struct s_GePort {
  435. #ifndef SK_DIAG
  436. SK_TIMER PWaTimer; /* Workaround Timer */
  437. #endif
  438. SK_U64 PPrevShorts; /* Previous short Counter checking */
  439. SK_U64 PPrevRx; /* Previous RxOk Counter checking */
  440. SK_U64 PPrevFcs; /* Previous FCS Error Counter checking */
  441. SK_U64 PRxLim; /* Previous RxOk Counter checking */
  442. SK_U64 LastOctets; /* For half duplex hang check */
  443. #ifndef SK_DIAG
  444. SK_TIMER HalfDupChkTimer;
  445. #endif
  446. int PLinkResCt; /* Link Restart Counter */
  447. int PAutoNegTimeOut;/* AutoNegotiation timeout current value */
  448. int PAutoNegTOCt; /* AutoNeg Timeout Counter */
  449. int PRxQSize; /* Port Rx Queue Size in kB */
  450. int PXSQSize; /* Port Synchronous Transmit Queue Size in kB */
  451. int PXAQSize; /* Port Asynchronous Transmit Queue Size in kB*/
  452. SK_U32 PRxQRamStart; /* Receive Queue RAM Buffer Start Address */
  453. SK_U32 PRxQRamEnd; /* Receive Queue RAM Buffer End Address */
  454. SK_U32 PXsQRamStart; /* Sync Tx Queue RAM Buffer Start Address */
  455. SK_U32 PXsQRamEnd; /* Sync Tx Queue RAM Buffer End Address */
  456. SK_U32 PXaQRamStart; /* Async Tx Queue RAM Buffer Start Address */
  457. SK_U32 PXaQRamEnd; /* Async Tx Queue RAM Buffer End Address */
  458. int PRxQOff; /* Rx Queue Address Offset */
  459. int PXsQOff; /* Synchronous Tx Queue Address Offset */
  460. int PXaQOff; /* Asynchronous Tx Queue Address Offset */
  461. int PhyType; /* PHY used on this port */
  462. SK_U16 PhyAddr; /* MDIO/MDC PHY address */
  463. SK_U16 PRxCmd; /* Port Receive Command Configuration Value */
  464. SK_U16 PIsave; /* Saved Interrupt status word */
  465. SK_U16 PSsave; /* Saved PHY status word */
  466. SK_U16 Align01;
  467. SK_BOOL PHWLinkUp; /* The hardware Link is up (wireing) */
  468. SK_BOOL PState; /* Is port initialized ? */
  469. SK_BOOL PLinkBroken; /* Is Link broken ? */
  470. SK_BOOL PCheckPar; /* Do we check for parity errors ? */
  471. SK_BOOL HalfDupTimerActive;
  472. SK_U8 PLinkCap; /* Link Capabilities */
  473. SK_U8 PLinkModeConf; /* Link Mode configured */
  474. SK_U8 PLinkMode; /* Link Mode currently used */
  475. SK_U8 PLinkModeStatus;/* Link Mode Status */
  476. SK_U8 PFlowCtrlCap; /* Flow Control Capabilities */
  477. SK_U8 PFlowCtrlMode; /* Flow Control Mode */
  478. SK_U8 PFlowCtrlStatus;/* Flow Control Status */
  479. SK_U8 PMSCap; /* Master/Slave Capabilities */
  480. SK_U8 PMSMode; /* Master/Slave Mode */
  481. SK_U8 PMSStatus; /* Master/Slave Status */
  482. SK_U8 PAutoNegFail; /* Autonegotiation fail flag */
  483. SK_U8 PLipaAutoNeg; /* Autonegotiation possible with Link Partner */
  484. SK_U8 Align02;
  485. } SK_GEPORT;
  486. /*
  487.  * Gigabit Ethernet Initalization Struct
  488.  * (has to be included in the adapter context)
  489.  */
  490. typedef struct s_GeInit {
  491. int GIMacsFound; /* Number of MACs found on this adapter */
  492. int GIPciHwRev; /* PCI HW Revision Number */
  493. SK_U32 GIRamOffs; /* RAM Address Offset for addr calculation */
  494. int GIRamSize; /* The RAM size of the adapter in kB */
  495. int GIHstClkFact; /* Host Clock Factor (62.5 / HstClk * 100) */
  496. int GIPortUsage; /* driver port usage: SK_RED_LINK/SK_MUL_LINK */
  497. SK_U32 GIPollTimerVal; /* Descriptor Poll Timer Init Val in clk ticks*/
  498. int GILevel; /* Initialization Level Completed */
  499. SK_GEPORT GP[SK_MAX_MACS];/* Port Dependent Information */
  500. SK_BOOL GIAnyPortAct; /* Is True if one or more port is initialized */
  501. SK_U8 Align01;
  502. SK_U16 Align02;
  503. } SK_GEINIT;
  504. /*
  505.  * Define the error numbers and messages for xmac_ii.c and skgeinit.c
  506.  */
  507. #define SKERR_HWI_E001 (SK_ERRBASE_HWINIT)
  508. #define SKERR_HWI_E001MSG "SkXmClrExactAddr() has got illegal parameters"
  509. #define SKERR_HWI_E002 (SKERR_HWI_E001+1)
  510. #define SKERR_HWI_E002MSG "SkGeInit() Level 1 call missing"
  511. #define SKERR_HWI_E003 (SKERR_HWI_E002+1)
  512. #define SKERR_HWI_E003MSG "SkGeInit() called with illegal init Level"
  513. #define SKERR_HWI_E004 (SKERR_HWI_E003+1)
  514. #define SKERR_HWI_E004MSG "SkGeInitPort() Queue size illegal configured"
  515. #define SKERR_HWI_E005 (SKERR_HWI_E004+1)
  516. #define SKERR_HWI_E005MSG "SkGeInitPort() cannot init running ports"
  517. #define SKERR_HWI_E006 (SKERR_HWI_E005+1)
  518. #define SKERR_HWI_E006MSG "SkGeXmInit(): PState does not match HW state"
  519. #define SKERR_HWI_E007 (SKERR_HWI_E006+1)
  520. #define SKERR_HWI_E007MSG "SkXmInitDupMd() called with invalid Dup Mode"
  521. #define SKERR_HWI_E008 (SKERR_HWI_E007+1)
  522. #define SKERR_HWI_E008MSG "SkXmSetRxCmd() called with invalid Mode"
  523. #define SKERR_HWI_E009 (SKERR_HWI_E008+1)
  524. #define SKERR_HWI_E009MSG "SkGeCfgSync() called although PXSQSize zero"
  525. #define SKERR_HWI_E010 (SKERR_HWI_E009+1)
  526. #define SKERR_HWI_E010MSG "SkGeCfgSync() called with invalid parameters"
  527. #define SKERR_HWI_E011 (SKERR_HWI_E010+1)
  528. #define SKERR_HWI_E011MSG "SkGeInitPort() Receive Queue Size to small"
  529. #define SKERR_HWI_E012 (SKERR_HWI_E011+1)
  530. #define SKERR_HWI_E012MSG "SkGeInitPort() invalid Queue Size specified"
  531. #define SKERR_HWI_E013 (SKERR_HWI_E012+1)
  532. #define SKERR_HWI_E013MSG "SkGeInitPort() cfg changed for running queue"
  533. #define SKERR_HWI_E014 (SKERR_HWI_E013+1)
  534. #define SKERR_HWI_E014MSG "SkGeInitPort() unknown GIPortUsage specified"
  535. #define SKERR_HWI_E015 (SKERR_HWI_E014+1)
  536. #define SKERR_HWI_E015MSG "Illegal Link mode parameter"
  537. #define SKERR_HWI_E016 (SKERR_HWI_E015+1)
  538. #define SKERR_HWI_E016MSG "Illegal Flow control mode parameter"
  539. #define SKERR_HWI_E017 (SKERR_HWI_E016+1)
  540. #define SKERR_HWI_E017MSG "Illegal value specified for GIPollTimerVal"
  541. #define SKERR_HWI_E018 (SKERR_HWI_E017+1)
  542. #define SKERR_HWI_E018MSG "FATAL: SkGeStopPort() does not terminate"
  543. #define SKERR_HWI_E019 (SKERR_HWI_E018+1)
  544. #define SKERR_HWI_E019MSG ""
  545. /* function prototypes ********************************************************/
  546. #ifndef SK_KR_PROTO
  547. /*
  548.  * public functions in skgeinit.c
  549.  */
  550. extern void SkGePollRxD(
  551. SK_AC *pAC,
  552. SK_IOC IoC,
  553. int Port,
  554. SK_BOOL PollRxD);
  555. extern void SkGePollTxD(
  556. SK_AC *pAC,
  557. SK_IOC IoC,
  558. int Port,
  559. SK_BOOL  PollTxD);
  560. extern void SkGeYellowLED(
  561. SK_AC *pAC,
  562. SK_IOC IoC,
  563. int State);
  564. extern int SkGeCfgSync(
  565. SK_AC *pAC,
  566. SK_IOC IoC,
  567. int Port,
  568. SK_U32 IntTime,
  569. SK_U32 LimCount,
  570. int SyncMode);
  571. extern void SkGeLoadLnkSyncCnt(
  572. SK_AC *pAC,
  573. SK_IOC IoC,
  574. int Port,
  575. SK_U32 CntVal);
  576. extern void SkGeStopPort(
  577. SK_AC *pAC,
  578. SK_IOC IoC,
  579. int Port,
  580. int Dir,
  581. int RstMode);
  582. extern int SkGeInit(
  583. SK_AC *pAC,
  584. SK_IOC IoC,
  585. int Level);
  586. extern void SkGeDeInit(
  587. SK_AC *pAC,
  588. SK_IOC IoC);
  589. extern int SkGeInitPort(
  590. SK_AC *pAC,
  591. SK_IOC IoC,
  592. int Port);
  593. extern void SkGeXmitLED(
  594. SK_AC *pAC,
  595. SK_IOC IoC,
  596. int Led,
  597. int Mode);
  598. extern void SkGeInitRamIface(
  599. SK_AC *pAC,
  600. SK_IOC IoC);
  601. /*
  602.  * public functions in skxmac2.c
  603.  */
  604. extern void SkXmSetRxCmd(
  605. SK_AC *pAC,
  606. SK_IOC IoC,
  607. int Port,
  608. int Mode);
  609. extern void SkXmClrExactAddr(
  610. SK_AC *pAC,
  611. SK_IOC IoC,
  612. int Port,
  613. int StartNum,
  614. int StopNum);
  615. extern void SkXmFlushTxFifo(
  616. SK_AC *pAC,
  617. SK_IOC IoC,
  618. int Port);
  619. extern void SkXmFlushRxFifo(
  620. SK_AC *pAC,
  621. SK_IOC IoC,
  622. int Port);
  623. extern void SkXmSoftRst(
  624. SK_AC *pAC,
  625. SK_IOC IoC,
  626. int Port);
  627. extern void SkXmHardRst(
  628. SK_AC *pAC,
  629. SK_IOC IoC,
  630. int Port);
  631. extern void SkXmInitMac(
  632. SK_AC *pAC,
  633. SK_IOC IoC,
  634. int Port);
  635. extern void SkXmInitDupMd(
  636. SK_AC *pAC,
  637. SK_IOC IoC,
  638. int Port);
  639. extern void SkXmInitPauseMd(
  640. SK_AC *pAC,
  641. SK_IOC IoC,
  642. int Port);
  643. extern int SkXmAutoNegDone(
  644. SK_AC *pAC,
  645. SK_IOC IoC,
  646. int Port);
  647. extern void SkXmAutoNegLipaXmac(
  648. SK_AC *pAC,
  649. SK_IOC IoC,
  650. int Port,
  651. SK_U16 IStatus);
  652. extern void SkXmAutoNegLipaBcom(
  653. SK_AC *pAC,
  654. SK_IOC IoC,
  655. int Port,
  656. SK_U16 IStatus);
  657. extern void SkXmAutoNegLipaLone(
  658. SK_AC *pAC,
  659. SK_IOC IoC,
  660. int Port,
  661. SK_U16 IStatus);
  662. extern void SkXmIrq(
  663. SK_AC *pAC,
  664. SK_IOC IoC,
  665. int Port,
  666. SK_U16 IStatus);
  667. #else /* SK_KR_PROTO */
  668. /*
  669.  * public functions in skgeinit.c
  670.  */
  671. extern void SkGePollRxD();
  672. extern void SkGePollTxD();
  673. extern void SkGeYellowLED();
  674. extern int SkGeCfgSync();
  675. extern void SkGeLoadLnkSyncCnt();
  676. extern void SkGeStopPort();
  677. extern int SkGeInit();
  678. extern void SkGeDeInit();
  679. extern int SkGeInitPort();
  680. extern void SkGeXmitLED();
  681. extern void SkGeInitRamIface();
  682. /*
  683.  * public functions in skxmac2.c
  684.  */
  685. extern void SkXmSetRxCmd();
  686. extern void SkXmClrExactAddr();
  687. extern void SkXmFlushTxFifo();
  688. extern void SkXmFlushRxFifo();
  689. extern void SkXmSoftRst();
  690. extern void SkXmHardRst();
  691. extern void SkXmInitMac();
  692. extern void SkXmInitDupMd();
  693. extern void SkXmInitPauseMd();
  694. extern int SkXmAutoNegDone();
  695. extern void SkXmAutoNegLipa();
  696. extern void SkXmIrq();
  697. #endif /* SK_KR_PROTO */
  698. #ifdef __cplusplus
  699. }
  700. #endif /* __cplusplus */
  701. #endif /* __INC_SKGEINIT_H_ */