3c503.h 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /* Definitions for the 3Com 3c503 Etherlink 2. */
  2. /* This file is distributed under the GPL.
  3. Many of these names and comments are directly from the Crynwr packet
  4. drivers, which are released under the GPL. */
  5. #define EL2H (dev->base_addr + 0x400)
  6. #define EL2L (dev->base_addr)
  7. /* Vendor unique hardware addr. prefix. 3Com has 2 because they ran
  8. out of available addresses on the first one... */
  9. #define OLD_3COM_ID 0x02608c
  10. #define NEW_3COM_ID 0x0020af
  11. /* Shared memory management parameters. NB: The 8 bit cards have only
  12. one bank (MB1) which serves both Tx and Rx packet space. The 16bit
  13. cards have 2 banks, MB0 for Tx packets, and MB1 for Rx packets.
  14. You choose which bank appears in the sh. mem window with EGACFR_MBSn */
  15. #define EL2_MB0_START_PG (0x00) /* EL2/16 Tx packets go in bank 0 */
  16. #define EL2_MB1_START_PG (0x20) /* First page of bank 1 */
  17. #define EL2_MB1_STOP_PG (0x40) /* Last page +1 of bank 1 */
  18. /* 3Com 3c503 ASIC registers */
  19. #define E33G_STARTPG (EL2H+0) /* Start page, matching EN0_STARTPG */
  20. #define E33G_STOPPG (EL2H+1) /* Stop page, must match EN0_STOPPG */
  21. #define E33G_DRQCNT (EL2H+2) /* DMA burst count */
  22. #define E33G_IOBASE (EL2H+3) /* Read of I/O base jumpers. */
  23. /* (non-useful, but it also appears at the end of EPROM space) */
  24. #define E33G_ROMBASE (EL2H+4) /* Read of memory base jumpers. */
  25. #define E33G_GACFR (EL2H+5) /* Config/setup bits for the ASIC GA */
  26. #define E33G_CNTRL (EL2H+6) /* Board's main control register */
  27. #define E33G_STATUS (EL2H+7) /* Status on completions. */
  28. #define E33G_IDCFR (EL2H+8) /* Interrupt/DMA config register */
  29. /* (Which IRQ to assert, DMA chan to use) */
  30. #define E33G_DMAAH (EL2H+9) /* High byte of DMA address reg */
  31. #define E33G_DMAAL (EL2H+10) /* Low byte of DMA address reg */
  32. /* "Vector pointer" - if this address matches a read, the EPROM (rather than
  33. shared RAM) is mapped into memory space. */
  34. #define E33G_VP2 (EL2H+11)
  35. #define E33G_VP1 (EL2H+12)
  36. #define E33G_VP0 (EL2H+13)
  37. #define E33G_FIFOH (EL2H+14) /* FIFO for programmed I/O moves */
  38. #define E33G_FIFOL (EL2H+15) /* ... low byte of above. */
  39. /* Bits in E33G_CNTRL register: */
  40. #define ECNTRL_RESET (0x01) /* Software reset of the ASIC and 8390 */
  41. #define ECNTRL_THIN (0x02) /* Onboard xcvr enable, AUI disable */
  42. #define ECNTRL_AUI (0x00) /* Onboard xcvr disable, AUI enable */
  43. #define ECNTRL_SAPROM (0x04) /* Map the station address prom */
  44. #define ECNTRL_DBLBFR (0x20) /* FIFO configuration bit */
  45. #define ECNTRL_OUTPUT (0x40) /* PC-to-3C503 direction if 1 */
  46. #define ECNTRL_INPUT (0x00) /* 3C503-to-PC direction if 0 */
  47. #define ECNTRL_START (0x80) /* Start the DMA logic */
  48. /* Bits in E33G_STATUS register: */
  49. #define ESTAT_DPRDY (0x80) /* Data port (of FIFO) ready */
  50. #define ESTAT_UFLW (0x40) /* Tried to read FIFO when it was empty */
  51. #define ESTAT_OFLW (0x20) /* Tried to write FIFO when it was full */
  52. #define ESTAT_DTC (0x10) /* Terminal Count from PC bus DMA logic */
  53. #define ESTAT_DIP (0x08) /* DMA In Progress */
  54. /* Bits in E33G_GACFR register: */
  55. #define EGACFR_NIM (0x80) /* NIC interrupt mask */
  56. #define EGACFR_TCM (0x40) /* DMA term. count interrupt mask */
  57. #define EGACFR_RSEL (0x08) /* Map a bank of card mem into system mem */
  58. #define EGACFR_MBS2 (0x04) /* Memory bank select, bit 2. */
  59. #define EGACFR_MBS1 (0x02) /* Memory bank select, bit 1. */
  60. #define EGACFR_MBS0 (0x01) /* Memory bank select, bit 0. */
  61. #define EGACFR_NORM (0x49) /* TCM | RSEL | MBS0 */
  62. #define EGACFR_IRQOFF (0xc9) /* TCM | RSEL | MBS0 | NIM */
  63. /*
  64. MBS2 MBS1 MBS0 Sh. mem windows card mem at:
  65. ---- ---- ---- -----------------------------
  66. 0 0 0 0x0000 -- bank 0
  67. 0 0 1 0x2000 -- bank 1 (only choice for 8bit card)
  68. 0 1 0 0x4000 -- bank 2, not used
  69. 0 1 1 0x6000 -- bank 3, not used
  70. There was going to be a 32k card that used bank 2 and 3, but it
  71. never got produced.
  72. */
  73. /* End of 3C503 parameter definitions */