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

VxWorks

开发平台:

C/C++

  1. /* fei82557End.h - Intel 82557 network interface header */
  2. /* Copyright 1990-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01k,20sep01,dat  Removing ANSI errors for diab compiler
  7. 01j,28sep00,jgn  remove physical to virtual translations (SPR 34891)
  8. 01i,13sep00,jkf  T3 SPR#33822 (aka T2 SPR's 33792, 33795, and 33796)
  9. 01i,11jun00,ham  removed reference to etherLib.
  10. 01h,06nov99,dat  Merge from tor3_x.bsp_drv_facility branch
  11. 01g,12nov99,mas  added typecasting to non-PPC FEI_XXXX_RD macros (SPR 24474)
  12. 01f,21mar99,jkf  Added PPC access routines needed for Yellowknife.
  13. 01e,21jul98,cn   Moved here some redefineable macros
  14. 01d,01apr98,cn   added vendor and device id definitions
  15. 01c,11mar98,cn   checked-in
  16. 01b,05mar98,cn   code clean-up after code review
  17. 01a,07nov97,cn  created from ../netif/if_fei.h, version 01c
  18. */
  19. #ifndef __INCfei82557Endh
  20. #define __INCfei82557Endh
  21. /* includes */
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  26. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  27. #endif /* CPU_FAMILY==I960 */
  28. /* defines */
  29. /*
  30.  * redefine the macro below in the bsp if you need to access the device
  31.  * registers/descriptors in a more suitable way.
  32.  */
  33. #if (CPU_FAMILY == PPC)
  34. #ifndef FEI_LONG_WR
  35. #define FEI_LONG_WR(addr, value) (sysOutLong ((ULONG) addr, (ULONG) value))
  36. #endif
  37.  
  38. #ifndef FEI_WORD_WR
  39. #define FEI_WORD_WR(addr, value) (sysOutWord ((ULONG) addr, (USHORT) value))
  40. #endif
  41.  
  42. #ifndef FEI_BYTE_WR
  43. #define FEI_BYTE_WR(addr, value) (sysOutByte ((ULONG) addr, (UCHAR) value))
  44. #endif
  45.  
  46. #ifndef FEI_LONG_RD
  47. #define FEI_LONG_RD(addr, value) (value = sysInLong ((ULONG) addr))
  48. #endif
  49.  
  50. #ifndef FEI_WORD_RD
  51. #define FEI_WORD_RD(addr, value) (value = sysInWord ((ULONG) addr))
  52. #endif
  53.  
  54. #ifndef FEI_BYTE_RD
  55. #define FEI_BYTE_RD(addr, value) (value = sysInByte ((ULONG) addr))
  56. #endif
  57.  
  58. #endif /* CPU_FAMILY == PPC */
  59. #ifndef FEI_LONG_WR
  60. #define FEI_LONG_WR(addr, value)                                        
  61.     (* (UINT32 *) (addr) = ((UINT32) (FEI_SWAP_LONG (value) & 0xffffffff)))
  62. #endif /* FEI_LONG_WR */
  63.  
  64. #ifndef FEI_WORD_WR
  65. #define FEI_WORD_WR(addr, value)                                        
  66.     (* (UINT16 *) (addr) = ((UINT16) (FEI_SWAP_WORD (value) & 0x0000ffff)))
  67. #endif /* FEI_WORD_WR */
  68.  
  69. #ifndef FEI_BYTE_WR
  70. #define FEI_BYTE_WR(addr, value)                                        
  71.     (* ((UINT8 *) (addr)) = ((UINT8) ((value) & 0x000000ff)))
  72. #endif /* FEI_BYTE_WR */
  73.  
  74. #ifndef FEI_LONG_RD
  75. #define FEI_LONG_RD(addr, value)                                        
  76.     (((value)) = (UINT32) FEI_SWAP_LONG (((*((UINT32 *)(addr))) & 
  77.      0xffffffff)))
  78. #endif /* FEI_LONG_RD */
  79.  
  80. #ifndef FEI_WORD_RD
  81. #define FEI_WORD_RD(addr, value)                                        
  82.     (((value)) = (UINT16) FEI_SWAP_WORD (((*((UINT16 *)(addr))) & 
  83.      0x0000ffff)))
  84. #endif /* FEI_WORD_RD */
  85.  
  86. #ifndef FEI_BYTE_RD
  87. #define FEI_BYTE_RD(addr, value)                                        
  88.     (((value)) = (UINT8) (((*((UINT8 *)(addr))) & 0x000000ff)))
  89. #endif /* FEI_BYTE_RD */
  90.  
  91. /*
  92.  * Default macro definitions for BSP interface.
  93.  * These macros can be redefined in a wrapper file, to generate
  94.  * a new module with an optimized interface.
  95.  */
  96.  
  97. #ifndef SYS_INT_CONNECT
  98. #define SYS_INT_CONNECT(pDrvCtrl, pFunc, arg, pRet)                         
  99.     {                                                                       
  100.     /* SPR 33796/33822 - init SYS_INT_CONNECT's return value" to ERROR */   
  101.     *pRet = ERROR;                                                          
  102.                                                                             
  103.     /* SPR 33792 - remove FEI_VECTOR checking from SYS_INT_CONNECT */       
  104.     /* SPR 33795 - add feiEndIntConnect NULL checking in SYS_INT_CONNECT */ 
  105.     if (feiEndIntConnect != NULL)                                           
  106.         {                                                                   
  107.         *pRet = (feiEndIntConnect) ((VOIDFUNCPTR*)                          
  108.                              INUM_TO_IVEC (FEI_VECTOR (pDrvCtrl)),          
  109.                              (pFunc), (int) (arg));                         
  110.         }                                                                   
  111.     }
  112. #endif /* SYS_INT_CONNECT */
  113.  
  114. #ifndef SYS_INT_DISCONNECT
  115. #define SYS_INT_DISCONNECT(pDrvCtrl, pFunc, arg, pRet)                      
  116.     {                                                                       
  117.     /* SPR 33796 - initialize SYS_INT_DISCONNECT's return value to ERROR */ 
  118.     *pRet = ERROR;                                                          
  119.                                                                             
  120.     /* SPR 33792 - remove FEI_VECTOR checking from SYS_INT_DISCONNECT */    
  121.     if (feiEndIntDisconnect != NULL)                                        
  122.         {                                                                   
  123.         *pRet = feiEndIntDisconnect ((VOIDFUNCPTR*)                         
  124.                               INUM_TO_IVEC (FEI_VECTOR (pDrvCtrl)),         
  125.                               (pFunc));                                     
  126.         }                                                                   
  127.     }
  128. #endif /* SYS_INT_DISCONNECT */
  129.  
  130. #ifndef SYS_INT_ENABLE
  131. #define SYS_INT_ENABLE(pDrvCtrl)                                            
  132. if (FEI_INT_ENABLE (pDrvCtrl))                                              
  133.     ((*(FUNCPTR) (FEI_INT_ENABLE (pDrvCtrl))) (pDrvCtrl->unit))
  134. #endif /*SYS_INT_ENABLE*/
  135.  
  136. #ifndef SYS_INT_DISABLE
  137. #define SYS_INT_DISABLE(pDrvCtrl)                                           
  138. if (FEI_INT_DISABLE (pDrvCtrl))                                             
  139.     ((*(FUNCPTR) (FEI_INT_DISABLE (pDrvCtrl))) (pDrvCtrl->unit))
  140. #endif /*SYS_INT_DISABLE*/
  141.  
  142. #ifndef SYS_INT_ACK
  143. #define SYS_INT_ACK(pDrvCtrl)                                               
  144. if (FEI_INT_ACK (pDrvCtrl))                                                 
  145.     ((*(FUNCPTR) (FEI_INT_ACK (pDrvCtrl))) (pDrvCtrl->unit))
  146. #endif /*SYS_INT_ACK*/
  147.  
  148. #ifndef LOCAL_TO_SYS_ADDR
  149. #define LOCAL_TO_SYS_ADDR(unit,localAddr)                                   
  150.     ((int) pDrvCtrl->board.sysLocalToBus ?                                  
  151.     (*pDrvCtrl->board.sysLocalToBus) (unit, localAddr) : localAddr)
  152. #endif /* LOCAL_TO_SYS_ADDR */
  153.  
  154. #ifndef SYS_TO_LOCAL_ADDR
  155. #define SYS_TO_LOCAL_ADDR(unit,sysAddr)                                     
  156.     ((int) pDrvCtrl->board.sysBusToLocal ?                                  
  157.     (*pDrvCtrl->board.sysBusToLocal)(unit, sysAddr) : sysAddr)
  158. #endif /* SYS_TO_LOCAL_ADDR */
  159.  
  160. /* Intel PRO-100B PCI specific definitions */
  161.  
  162. #define PRO100B_PCI_VENDOR_ID   0x8086  /* PCI vendor ID */
  163. #define PRO100B_PCI_DEVICE_ID   0x1229  /* PCI device ID */
  164. #define FEI82557_DEVICE_ID      0x1229  /* 82557 device ID */ 
  165.  
  166. #define MC_FEI MC_EI  /* temp */
  167. #define DEV_NAME        "fei"
  168. #define DEV_NAME_LEN    4
  169. #define DEF_NUM_CFDS    32                      /* default number of CFDs */
  170. #define DEF_NUM_RFDS    32                      /* default number of RFDs */
  171. #define FEI_100MBS      100000000               /* bits per sec */
  172. #define FEI_10MBS       10000000                /* bits per sec */
  173. #define EADDR_LEN       6                       /* ethernet address length */
  174. #define FEI_ADDR_LEN    EADDR_LEN               /* ethernet address length */
  175.  
  176. #define FEI_ACTION_TMO          0x01    /* action command timeout in seconds */
  177. #define FEI_SCB_TMO             0x01    /* SCB command timeout in seconds */
  178. #define FEI_INIT_TMO            0x01    /* 557 init timeout in seconds */
  179. #define FEI_TX_RESTART_TMO      0x01    /* tx restart watchdog timeout */
  180. #define FEI_TCB_TX_THRESH       0x10    /* Tx threshold value */
  181.  
  182. /* RFD and CFD size */
  183.  
  184. #define RFD_SIZE_HDR            16
  185. #define RFD_SIZE_PKT            (EH_SIZE + ETHERMTU + 2)
  186. #define RFD_SIZE_TRAIL          RFD_SIZE_PREV + RFD_SIZE_SW_NEXT
  187. #define RFD_SIZE_PREV           4
  188. #define RFD_SIZE_SW_NEXT 4
  189.  
  190. #define RFD_SIZE                ROUND_UP ((RFD_SIZE_HDR +               
  191.                                            RFD_SIZE_PKT +               
  192.                                            RFD_SIZE_TRAIL), 4)
  193.  
  194.  
  195. #define CFD_SIZE_HDR            8
  196. #define CFD_SIZE_DUMP           4
  197. #define CFD_SIZE_MULTIC         (2 + (6 * N_MCAST))
  198. #define CFD_SIZE_IA             8
  199. #define CFD_SIZE_NOP            0
  200. #define CFD_SIZE_PKT            (EH_SIZE + ETHERMTU + 2)
  201. #define CFD_SIZE_TCB            (8 + CFD_SIZE_PKT)
  202. #define CFD_SIZE_PREV           4
  203. #define CFD_SIZE_SW_NEXT 4
  204. #define CFD_SIZE_ACTION         1
  205. #define CFD_SIZE_TRAIL          (CFD_SIZE_PREV +
  206.  CFD_SIZE_SW_NEXT +
  207.  CFD_SIZE_ACTION)
  208. #define CFD_SIZE_CORE           CFD_SIZE_TCB
  209.  
  210. #define CFD_SIZE                ROUND_UP ((CFD_SIZE_HDR +               
  211.                                            CFD_SIZE_CORE +              
  212.                                            CFD_SIZE_TRAIL), 4)
  213.  
  214. /* frame descriptors definitions */
  215.  
  216. #define CFD_STAT_OFFSET         0x00                    /* status word */
  217. #define CFD_COMM_OFFSET         0x02                    /* command word */
  218. #define CFD_NEXT_OFFSET         0x04                    /* next frame */
  219. #define CFD_PREV_OFFSET         (CFD_SIZE - 4)          /* previous frame */
  220. #define CFD_TBD_OFFSET          0x08                    /* buffer descriptor*/
  221. #define CFD_COUNT_OFFSET        0x0c                    /* count field */
  222. #define CFD_NUM_OFFSET          0x0f                    /* buffer num  field */
  223. #define CFD_THRESH_OFFSET       0x0e                    /* threshold field */
  224. #define CFD_ACTION_OFFSET       (CFD_SIZE - 9)          /* action/transmit */
  225. #define CFD_SW_NEXT_OFFSET (CFD_SIZE - 8) /* s/w next link */
  226. #define CFD_PKT_OFFSET          (CFD_SIZE_HDR + 8)      /* packet data */
  227. #define CFD_IA_OFFSET           CFD_SIZE_HDR            /* individual address */
  228. #define CFD_MCOUNT_OFFSET       CFD_SIZE_HDR            /* mcount field */
  229. #define CFD_MC_OFFSET           (CFD_SIZE_HDR + 2)      /* mcast list */
  230.  
  231. #define RFD_STAT_OFFSET         0x00                    /* status word */
  232. #define RFD_COMM_OFFSET         0x02                    /* command word */
  233. #define RFD_NEXT_OFFSET         0x04                    /* next frame field */
  234. #define RFD_PREV_OFFSET         (RFD_SIZE - 4)          /* previous frame */
  235. #define RFD_SW_NEXT_OFFSET      (RFD_SIZE - 8)          /* s/w next frame */
  236. #define RFD_RBD_OFFSET          0x08                    /* buffer descriptor */
  237. #define RFD_COUNT_OFFSET        0x0c                    /* count field */
  238. #define RFD_SIZE_OFFSET         0x0e                    /* data size */
  239. #define RFD_PKT_OFFSET          (RFD_SIZE_HDR)          /* packet data*/
  240.  
  241. #define TBD_NOT_USED            0xffffffff            /* use semplified mode */
  242. #define RBD_NOT_USED            0xffffffff            /* use semplified mode */
  243. /* board specific infomation */
  244. typedef struct
  245.     {
  246.     UINT32 vector;               /* interrupt vector number */
  247.     UINT32 baseAddr;  /* memory base address for CSR */
  248.     UCHAR  enetAddr[6];  /* ethernet address */
  249.     int (*intEnable)(int unit);  /* board specific interrupt enable routine */
  250.     int (*intDisable)(int unit); /* board specific interrupt disable routine */
  251.     int (*intAck) (int unit);    /* interrupt ack */
  252.     UINT32 (*sysLocalToBus)(int unit,UINT32 localAdr);
  253.     UINT32 (*sysBusToLocal)(int unit,UINT32 sysAdr);
  254.     /* configuration parameters, user can override in the BSP */
  255.     UINT8 phyAddr;  /* PHY device address, valid addresses: 0-32 */
  256.     UINT8 phySpeed;  
  257.     UINT8 phyDpx;
  258.     UINT8 fill0;
  259.     UINT16 tcbTxThresh;
  260.     UINT16 others; /* allow you write all bits to Mode Control Register in the
  261.    PHY device, don't touch it unless you know what you're doing. */
  262.     UINT32 spare1;
  263.     UINT32 spare2;
  264.     UINT32 spare3;
  265.     UINT32 spare4;
  266.     } FEI_BOARD_INFO;
  267. /* constants needed within this file */
  268. #define FEI_MAX_UNITS 4 /* max units supported */
  269. #define FEI_CFD_DEF 32 /* default number of CFDs */
  270. #define FEI_RFD_DEF 32 /* default number of RFDs */
  271. #define FEI_RFD_LOAN 8 /* number RFDs that can be loaned */
  272. #define EH_SIZE 14   /* avoid structure padding issues */
  273. #define N_MCAST 12
  274. /* SCB registers offset definitions @@@ */
  275. #define SCB_STATUS      0x00            /* SCB status byte */
  276. #define SCB_CMD         0x02            /* SCB command byte */
  277. #define SCB_POINTER     0x04            /* SCB pointer */
  278. #define SCB_PORT        0x08            /* SCB port register */
  279. #define SCB_FLASH       0x0c            /* SCB flash control register */
  280. #define SCB_EEPROM      0x0e            /* SCB eeprom control register */
  281. #define SCB_MDI         0x10            /* SCB mdi control register */
  282. #define SCB_EARLYRX     0x14            /* SCB early receive */
  283. /* SCB Status Word byte mask definitions */
  284. #define SCB_S_RUMASK 0x3c /* RU status mask */
  285. #define SCB_S_RUIDLE 0x00 /* RU is idle */
  286. #define SCB_S_RUSUSP 0x04 /* RU is suspended */
  287. #define SCB_S_RUNORSR 0x08 /* RU no more resources */
  288. #define SCB_S_RURDY 0x10 /* RU is ready */
  289. #define SCB_S_RUSUSPNR 0x24 /* RU is suspended/no more resources */
  290. #define SCB_S_RUNORSRBD 0x28 /* RU no more resources/no more RBD's */
  291. #define SCB_S_RURDYBD 0x30 /* RU is ready/no more RBD's */
  292. #define SCB_S_CUMASK 0xc0 /* CU status mask */
  293. #define SCB_S_CUIDLE 0x00 /* CU is idle */
  294. #define SCB_S_CUSUSP 0x40 /* CU is suspended */
  295. #define SCB_S_CUACTIVE 0x80 /* CU is active */
  296. #define SCB_S_MASK      0xff
  297. /* SCB STAT/ACK byte bit mask definitions */
  298. #define SCB_S_STATMASK 0xfc00 /* stat mask */
  299. #define SCB_S_SWI 0x0400 /* software generated interrupt */
  300. #define SCB_S_MDI 0x0800 /* An MDI read or write cycle is done */
  301. #define SCB_S_RNR 0x1000 /* RU left the ready state */
  302. #define SCB_S_CNA 0x2000 /* CU left the active state */
  303. #define SCB_S_CI 0x2000 /* CU entered the idle state */
  304. #define SCB_S_FR 0x4000 /* RU finished receiveing a frame */
  305. #define SCB_S_CX 0x8000 /* CU finished a cmd with I bit set */
  306. #define SCB_S_TNO 0x8000 /* Tx command ended with not OK */
  307. /* SCB Command byte bit mask definitions */
  308. #define SCB_C_RUMASK 0x07 /* RU Command mask */
  309. #define SCB_C_RUNOP 0x00 /* NOP */
  310. #define SCB_C_RUSTART 0x01 /* RU start reception of frames */
  311. #define SCB_C_RURESUME 0x02 /* RU resume reception of frames */
  312. #define SCB_C_RUABORT 0x04 /* RU abort receiver immediately */
  313. #define SCB_C_RULDHDS 0x05 /* RU load header data size */
  314. #define SCB_C_RULDBASE 0x06 /* load RU base address */
  315. #define SCB_C_RURBDRSM 0x07 /* RBD resume */
  316. #define SCB_C_CUMASK 0x70 /* CU Command mask */
  317. #define SCB_C_CUNOP 0x00 /* NOP */
  318. #define SCB_C_CUSTART 0x10 /* CU start execution */
  319. #define SCB_C_CURESUME 0x20 /* CU resume execution */
  320. #define SCB_C_CULDDUMP 0x40 /* load dump counters address */
  321. #define SCB_C_CUDUMP 0x50 /* dump stat counters */
  322. #define SCB_C_CULDBASE 0x60 /* load CU base address */
  323. #define SCB_C_CUDUMPRST 0x70 /* dump and reset stat counters */
  324. #define SCB_CR_MASK     0xff
  325. /* SCB Interrupt Control byte bit mask definitions */
  326. #define SCB_C_M 0x01 /* interrupt mask */
  327. #define SCB_C_SI 0x02 /* software generated interrupt */
  328. #define SCB_C_RNR 0x10 /* RU ran out of resources */
  329. #define SCB_C_CNA 0x20 /* CU left active state (transmit) */
  330. #define SCB_C_FR 0x40 /* frame receive */
  331. /* PORT commands */
  332. #define FEI_PORT_RESET 0x0 /* PORT reset command */
  333. #define FEI_PORT_SELFTEST 0x1 /* PORT selftest command  */
  334. #define FEI_PORT_SELRESET 0x2 /* PORT selective reset command */
  335. #define FEI_PORT_DUMP 0x3 /* PORT dump command */
  336. /* Action Command Descriptions */
  337. /* special TCB-specific command block bit mask definitions */
  338. #define CFD_S_TX_DMA_U 0x1000 /* DMA underrun */
  339. #define TCB_CNT_EOF 0x8000 /* all data kept in TFD */
  340. #define CFD_C_TX_FLEX 0x0008 /* use flexible mode */
  341. /* special Diag-specific command block bit mask definitions */
  342. #define CFD_S_DIAG_F 0x0800 /* diag failed */
  343. /* Command Frame Description and defines */
  344. /* Action Status Word bit mask definitions */
  345. #define CFD_S_OK 0x2000 /* Command completed successfully */
  346. #define CFD_S_B         0x4000          /* CU starts access this CFD */
  347. #define CFD_S_COMPLETE 0x8000 /* Command complete */
  348. /* Action Command Word bit mask definitions */
  349. #define CFD_C_NOP 0x0000 /* No Operation */
  350. #define CFD_C_IASETUP 0x0001 /* Individual Address Setup */
  351. #define CFD_C_CONFIG 0x0002 /* Configure Chip */
  352. #define CFD_C_MASETUP 0x0003 /* Multicast Setup */
  353. #define CFD_C_XMIT 0x0004 /* Transmit (see below too ...) */
  354. #define CFD_C_DUMP 0x0006 /* Dump Registers */
  355. #define CFD_C_DIAG 0x0007 /* Diagnose */
  356. #define CFD_C_INT 0x2000 /* 557 interrupts CPU after execution */
  357. #define CFD_C_SUSP 0x4000 /* CU should suspend after execution */
  358. #define CFD_C_EL 0x8000 /* End of command list */
  359. /* 82557 Receive Frame Descriptors */
  360. /* RFD bit mask definitions */
  361. #define RFD_S_COLL 0x0001 /* collision during reception */
  362. #define RFD_S_IA 0x0002 /* individual address match */
  363. #define RFD_S_RXER 0x0010 /* receive error */
  364. #define RFD_S_LEN 0x0020 /* type/len field designator */
  365. #define RFD_S_SHORT 0x0080 /* frame too short */
  366. #define RFD_S_DMA 0x0100 /* DMA Overrun failure to get bus */
  367. #define RFD_S_RSRC 0x0200 /* received, but ran out of buffers */
  368. #define RFD_S_ALGN 0x0400 /* received misaligned with CRC error */
  369. #define RFD_S_CRC 0x0800 /* received with CRC error */
  370. #define RFD_S_OK 0x2000 /* frame received successfully */
  371. #define RFD_S_B         0x4000          /* RU begins accessing this RFD */
  372. #define RFD_S_COMPLETE 0x8000 /* frame reception complete */
  373. #define RFD_C_FLEX 0x0008 /* flexible mode */
  374. #define RFD_C_HEADER 0x0010 /* frame is a header */
  375. #define RFD_C_SUSP 0x4000 /* suspend RU after receiving frame */
  376. #define RFD_C_EL 0x8000 /* end of RFD list */
  377. #define RFD_CNT_F 0x4000 /* actual count updated */
  378. #define RFD_CNT_EOF 0x8000 /* end of frame */
  379. typedef UINT32 * FD_ID;
  380. typedef UINT32 * CSR_ID;
  381. typedef FD_ID    CFD_ID;
  382. typedef FD_ID    RFD_ID;
  383. /* EEPROM bit definitions */
  384. #define FEI_EESK 0x01 /* EEPROM shift clock */
  385. #define FEI_EECS 0x02 /* EEPROM chip select */
  386. #define FEI_EEDI 0x04 /* EEPROM data in */
  387. #define FEI_EEDO 0x08 /* EEPROM data out */
  388. /* Following defines should be in another header file */
  389. /* MDI definitions */
  390. #define MDI_READ   0x2
  391. #define MDI_WRITE  0x1
  392. #define MDI_CTRL_REG   0x0
  393. #define MDI_STATUS_REG 0x1
  394. /* MDI control register bit  */
  395. #define MDI_CR_COLL_TEST            0x80
  396. #define MDI_CR_FDX                  0x100       /* FDX =1, half duplex =0 */
  397. #define MDI_CR_RESTART              0x200       /* restart auto negotiation */
  398. #define MDI_CR_ISOLATE              0x400       /* isolate PHY from MII */
  399. #define MDI_CR_POWER_DOWN           0x800       /* power down */
  400. #define MDI_CR_SELECT               0x1000      /* auto speed select  */
  401. #define MDI_CR_100                  0x2000      /* 0 = 10mb, 1 = 100mb */
  402. #define MDI_CR_LOOPBACK             0x4000      /* 0 = normal, 1 = loopback */
  403. #define MDI_CR_RESET                0x8000      /* 0 = normal, 1 = PHY reset */
  404. /* MDI Status register bit definitions */
  405. #define MDI_SR_LINK_STATUS          0x4       /* link Status -- 1 = link */
  406. #define MDI_SR_AUTO_SELECT          0x8       /* auto speed select capable */
  407. #define MDI_SR_REMOTE_FAULT         0x10      /* Remote fault detect */
  408. #define MDI_SR_AUTO_NEG             0x20      /* auto negotiation complete */
  409. #define MDI_SR_10T_HALF_DPX         0x800     /* 10BaseT half duplex capable */
  410. #define MDI_SR_10T_FULL_DPX         0x1000    /* 10BaseT full duplex capable */
  411. #define MDI_SR_TX_HALF_DPX          0x2000    /* TX half duplex capable */
  412. #define MDI_SR_TX_FULL_DPX          0x4000     /* TX full duplex capable */
  413. #define MDI_SR_T4                   0x8000    /* T4 capable */
  414. #define PHY_100MBS      1
  415. #define PHY_10MBS       0
  416. #define PHY_AUTO_SPEED  2
  417. #define PHY_FULL_DPX    1
  418. #define PHY_HALF_DPX    0
  419. #define PHY_AUTO_DPX    2
  420. #define PHY_LINK_ERROR  0x10
  421. #define PHY_AUTO_FAIL   0x20
  422. /* PRO/100B definitions */
  423. #define EP100B_PCI_VENDOR_ID    0x8086          /* Intel vendor ID */
  424. #define EP100B_PCI_DEVICE_ID    0x1229          /* PRO/100B device ID */
  425. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  426. #pragma align 0                 /* turn off alignment requirement */
  427. #endif /* CPU_FAMILY==I960 */
  428. #ifdef __cplusplus
  429. }
  430. #endif
  431. #endif /* __INCfei82557Endh */