fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / net / saa9730.h
index 9e9da6b..f656f2f 100644 (file)
@@ -1,6 +1,7 @@
 /*
- * Carsten Langgaard, carstenl@mips.com
- * Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
+ * Copyright (C) 2000, 2005  MIPS Technologies, Inc.  All rights reserved.
+ *     Authors: Carsten Langgaard <carstenl@mips.com>
+ *              Maciej W. Rozycki <macro@mips.com>
  *
  * ########################################################################
  *
@@ -33,9 +34,9 @@
 /* TX and RX packet size: fixed to 2048 bytes, according to HW requirements. */
 #define LAN_SAA9730_PACKET_SIZE                       2048
 
-/* 
- * Number of TX buffers = number of RX buffers = 2, which is fixed according 
- * to HW requirements. 
+/*
+ * Number of TX buffers = number of RX buffers = 2, which is fixed according
+ * to HW requirements.
  */
 #define LAN_SAA9730_BUFFERS                           2
 
 #define LAN_SAA9730_TXM_Q_SIZE                        15
 
 /*
- * We get an interrupt for each LAN_SAA9730_DEFAULT_RCV_Q_INT_THRESHOLD 
- * packets received. 
+ * We get an interrupt for each LAN_SAA9730_DEFAULT_RCV_Q_INT_THRESHOLD
+ * packets received.
  * If however we receive less than  LAN_SAA9730_DEFAULT_RCV_Q_INT_THRESHOLD
- * packets, the hardware can timeout after a certain time and still tell 
+ * packets, the hardware can timeout after a certain time and still tell
  * us packets have arrived.
  * The timeout value in unit of 32 PCI clocks (33Mhz).
  * The value 200 approximates 0.0002 seconds.
@@ -78,8 +79,8 @@
 #define MACCM_10MB                      1
 #define MACCM_MII                       2
 
-/* 
- * PHY definitions for Basic registers of QS6612 (used on MIPS ATLAS board) 
+/*
+ * PHY definitions for Basic registers of QS6612 (used on MIPS ATLAS board)
  */
 #define PHY_CONTROL                     0x0
 #define PHY_STATUS                      0x1
 
 /* The SAA9730 (LAN) controller register map, as seen via the PCI-bus. */
 #define SAA9730_LAN_REGS_ADDR   0x20400
+#define SAA9730_LAN_REGS_SIZE   0x00400
 
 struct lan_saa9730_regmap {
        volatile unsigned int TxBuffA;                  /* 0x20400 */
@@ -309,6 +311,7 @@ typedef volatile struct lan_saa9730_regmap t_lan_saa9730_regmap;
 
 /* The SAA9730 (EVM) controller register map, as seen via the PCI-bus. */
 #define SAA9730_EVM_REGS_ADDR   0x02000
+#define SAA9730_EVM_REGS_SIZE   0x00400
 
 struct evm_saa9730_regmap {
        volatile unsigned int InterruptStatus1;         /* 0x2000 */
@@ -329,16 +332,32 @@ typedef volatile struct evm_saa9730_regmap t_evm_saa9730_regmap;
 
 
 struct lan_saa9730_private {
+       /*
+        * Rx/Tx packet buffers.
+        * The Rx and Tx packets must be PACKET_SIZE aligned.
+        */
+       void            *buffer_start;
+       unsigned int    buffer_size;
+
+       /*
+        * DMA address of beginning of this object, returned
+        * by pci_alloc_consistent().
+        */
+       dma_addr_t      dma_addr;
+
+       /* Pointer to the associated pci device structure */
+       struct pci_dev  *pci_dev;
+
        /* Pointer for the SAA9730 LAN controller register set. */
        t_lan_saa9730_regmap *lan_saa9730_regs;
 
        /* Pointer to the SAA9730 EVM register. */
        t_evm_saa9730_regmap *evm_saa9730_regs;
 
-       /* TRUE if the next buffer to write is RxBuffA,  FALSE if RxBuffB. */
-       unsigned char NextRcvToUseIsA;
        /* Rcv buffer Index. */
        unsigned char NextRcvPacketIndex;
+       /* Next buffer index. */
+       unsigned char NextRcvBufferIndex;
 
        /* Index of next packet to use in that buffer. */
        unsigned char NextTxmPacketIndex;
@@ -353,13 +372,8 @@ struct lan_saa9730_private {
        unsigned char DmaRcvPackets;
        unsigned char DmaTxmPackets;
 
-       unsigned char RcvAIndex;        /* index into RcvBufferSpace[] for Blk A */
-       unsigned char RcvBIndex;        /* index into RcvBufferSpace[] for Blk B */
-
-       unsigned int
-           TxmBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_TXM_Q_SIZE];
-       unsigned int
-           RcvBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_RCV_Q_SIZE];
+       void          *TxmBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_TXM_Q_SIZE];
+       void          *RcvBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_RCV_Q_SIZE];
        unsigned int TxBufferFree[LAN_SAA9730_BUFFERS];
 
        unsigned char PhysicalAddress[LAN_SAA9730_CAM_ENTRIES][6];