bcm1250MacEnd.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:6k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* bcm1250MacEnd.h - END style BCM1250 MAC Ethernet driver definitions */
  2. /* Copyright 2002 Wind River Systems, Inc. */
  3. /*********************************************************************
  4. *
  5. * Copyright 2000,2001
  6. * Broadcom Corporation. All rights reserved.
  7. *
  8. * This software is furnished under license to Wind River Systems, Inc.
  9. * and may be used only in accordance with the terms and conditions of 
  10. * this license.  No title or ownership is transferred hereby.
  11. **********************************************************************/     
  12. /*
  13.  * This file has been developed or significantly modified by the
  14.  * MIPS Center of Excellence Dedicated Engineering Staff.
  15.  * This notice is as per the MIPS Center of Excellence Master Partner
  16.  * Agreement, do not remove this notice without checking first with
  17.  * WR/Platforms MIPS Center of Excellence engineering management.
  18.  */
  19. /*
  20. modification history
  21. --------------------
  22. 01d,20mar02,pgh  Apply code review fixes.
  23. 01c,14mar02,pgh  Made the code compliant with the coding standard.
  24.                  Eliminated unused variables.
  25.                  Added some new variables.
  26. 01b,07dec01,agf  apply coding standard fix-ups
  27. 01a,15nov01,agf  written.
  28. */
  29. #ifndef __INCbcm1250MacEndh 
  30. #define __INCbcm1250MacEndh 
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif                    
  34. #ifndef _ASMLANGUAGE
  35. #define SB_DEV_NAME "sbe"
  36. #define SB_DEV_NAME_LEN 4
  37. #define VXW_RCV_BUF_OFFSET      2
  38. #define ETH_CRC_LEN             4   /* ethernet CRC length */
  39. #define ETH_ADDR_LEN            6   /* ethernet address length */
  40. #define NUM_RDS_DEF             32  /* default number of RX dscrs */
  41. #define NUM_TDS_DEF             32  /* default number of TX dscrs */
  42. #define RXDSCR_LOAN_NUM 32      /* Number of descriptors available to loan */
  43. #define CACHELINESIZE   32
  44. #define MAX_FRAME_SIZE  (ETHERMTU + ENET_HDR_REAL_SIZ + 4 + 2)
  45. #define NUMCACHEBLKS(x) (((x) + (CACHELINESIZE - 1)) / CACHELINESIZE)
  46. #define MAX_FRAME_CACHE_BLKS    (NUMCACHEBLKS (MAX_FRAME_SIZE))
  47. #define BCM1250_MAC_DUAL_CHAN   0x0001  /* Use two RX/TX channels */
  48. #define BCM1250_MAC_POLLING     0x0002  /* Poll mode, io mode */
  49. #define BCM1250_MAC_PROMISC     0x0004  /* Promiscuous, rx mode */
  50. #define BCM1250_MAC_MCAST       0x0008  /* Multicast, rx mode */
  51. #define BCM1250_MAC_SPEED_10     10000000       /* 10 Mbps */
  52. #define BCM1250_MAC_SPEED_100    100000000      /* 100 Mbps */
  53. #define BCM1250_MAC_SPEED_1000   1000000000     /* 1000 Mbps - 1Gbps */
  54. #define BCM1250_MAC_SPEED_DEF    BCM1250_MAC_SPEED_10
  55. typedef unsigned long MAC_REG;
  56. typedef enum 
  57.     { 
  58.     BUF_TYPE_NONE,
  59.     BUF_TYPE_CL,
  60.     BUF_TYPE_MBLK 
  61.     } BUF_TYPE;
  62.  
  63. typedef enum 
  64.     { 
  65.     MAC_SPEED_10, 
  66.     MAC_SPEED_100,
  67.     MAC_SPEED_1000 
  68.     } MAC_SPEED;
  69.  
  70. typedef enum 
  71.     { 
  72.     MAC_DUPLEX_HALF,
  73.     MAC_DUPLEX_FULL 
  74.     } MAC_DUPLEX;
  75.  
  76. typedef enum 
  77.     { 
  78.     MAC_FC_DISABLED, 
  79.     MAC_FC_FRAME,
  80.     MAC_FC_COLLISION, 
  81.     MAC_FC_CARRIER 
  82.     } MAC_FC;             
  83. typedef struct ethDmaDscr 
  84.     {
  85.     UINT64  dscr_a;     /* DMA descriptor first doubleword */
  86.     UINT64  dscr_b;     /* DMA descriptor second doubleword */
  87.     } ETH_DMA_DSCR;
  88. typedef struct txBufTable 
  89.     {
  90.     char *      pBuf;   /* buffer pointer */
  91.     BUF_TYPE    type;   /* buffer type */
  92.     } TX_BUF_TABLE;
  93. typedef struct ethMacDma 
  94.     {
  95.     MAC_REG         regConfig0;     /* DMA config register 0 */
  96.     MAC_REG         regConfig1;     /* DMA config register 1 */
  97.     MAC_REG         regDscrBase;    /* Descriptor base address */
  98.     MAC_REG         regDscrCnt;     /* Descriptor count register */
  99.     MAC_REG         regCurDscr;     /* current descriptor address */
  100.     ETH_DMA_DSCR *  pDscrTable;     /* base of descriptor table */
  101.     TX_BUF_TABLE *  bufTable;       /* buffer table, one per descr */
  102.     int             maxDescr;       /* total # of descriptors in ring */
  103.     int             tailIndex;      /* tail index to DMA buffer descr ring */
  104.     int             headIndex;      /* head index to DMA buffer descr ring */
  105.     int             ringCount;      /* count of DMA buffer descr in ring */
  106.     BOOL            hndlAct;        /* handle routine is active */
  107.     BOOL            txBlocked;      /* doesn't have resources to transmit */
  108.     } ETH_MAC_DMA;
  109. typedef struct drvCtrl 
  110.     {
  111.     END_OBJ     endObj;        /* The class we inherit from. */
  112.     END_ERR     lastError;     /* Last error passed to muxError */
  113.     int         unit;          /* ethernet interface unit number */
  114.     int         iVecNum;       /* interrupt vector number */
  115.     int         intSource;     /* interrupt source */
  116.     int         flags;         /* Our local flags. */
  117.     MAC_REG     regMacBase;
  118.     MAC_REG     regDmaBase;
  119.     MAC_REG     regMacEnable;  /* MAC Enable Register */
  120.     MAC_REG     regMacCfg;     /* MAC Configuration Register */
  121.     MAC_REG     regFifoCfg;    /* FIFO configuration register */
  122.     MAC_REG     regFrameCfg;   /* Frame configuration register */
  123.     MAC_REG     regRxFilter;   /* receive filter register */
  124.     MAC_REG     regIsr;        /* Interrupt status register */
  125.     MAC_REG     regImr;        /* Interrupt mask register */
  126.     MAC_REG     regMdio;       /* mii regster */
  127.     MAC_SPEED   macSpeed;
  128.     MAC_DUPLEX  macDuplex;
  129.     MAC_FC      macFc;
  130.     int         phyAddr;        /* phy address */
  131.     char *      mClBlkBase;     /* Net Pool ClBlk, MBlk addr */
  132.     char *      bufBase;        /* Net Pool cluster buffer addr */
  133.     CL_POOL_ID  clPoolId;       /* cluster pool */
  134.     ETH_MAC_DMA txDma;
  135.     ETH_MAC_DMA rxDma;
  136.     } DRV_CTRL;
  137. #endif  /* _ASMLANGUAGE */
  138.  
  139. #ifdef __cplusplus
  140. }
  141. #endif
  142.  
  143. #endif /* __INCbcm1250MacEndh */