Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / staging / et131x / et1310_rx.h
index 6951459..ca84a91 100644 (file)
 #define ALCATEL_BROADCAST_PKT  0x02000000
 
 /* typedefs for Free Buffer Descriptors */
-typedef union _FBR_WORD2_t {
-       u32 value;
-       struct {
-#ifdef _BIT_FIELDS_HTOL
-               u32 reserved:22;        /* bits 10-31 */
-               u32 bi:10;              /* bits 0-9(Buffer Index) */
-#else
-               u32 bi:10;              /* bits 0-9(Buffer Index) */
-               u32 reserved:22;        /* bit 10-31 */
-#endif
-       } bits;
-} FBR_WORD2_t, *PFBR_WORD2_t;
-
-typedef struct _FBR_DESC_t {
+struct fbr_desc
+{
        u32 addr_lo;
        u32 addr_hi;
-       FBR_WORD2_t word2;
-} FBR_DESC_t, *PFBR_DESC_t;
-
-/* Typedefs for Packet Status Ring Descriptors */
-typedef union _PKT_STAT_DESC_WORD0_t {
-       u32 value;
-       struct {
-#ifdef _BIT_FIELDS_HTOL
-               /* top 16 bits are from the Alcatel Status Word as enumerated in */
-               /* PE-MCXMAC Data Sheet IPD DS54 0210-1 (also IPD-DS80 0205-2) */
-#if 0
-               u32 asw_trunc:1;                /* bit 31(Rx frame truncated) */
-#endif
-               u32 asw_long_evt:1;     /* bit 31(Rx long event) */
-               u32 asw_VLAN_tag:1;     /* bit 30(VLAN tag detected) */
-               u32 asw_unsupported_op:1;       /* bit 29(unsupported OP code) */
-               u32 asw_pause_frame:1;  /* bit 28(is a pause frame) */
-               u32 asw_control_frame:1;        /* bit 27(is a control frame) */
-               u32 asw_dribble_nibble:1;       /* bit 26(spurious bits after EOP) */
-               u32 asw_broadcast:1;    /* bit 25(has a broadcast address) */
-               u32 asw_multicast:1;    /* bit 24(has a multicast address) */
-               u32 asw_OK:1;           /* bit 23(valid CRC + no code error) */
-               u32 asw_too_long:1;     /* bit 22(frame length > 1518 bytes) */
-               u32 asw_len_chk_err:1;  /* bit 21(frame length field incorrect) */
-               u32 asw_CRC_err:1;              /* bit 20(CRC error) */
-               u32 asw_code_err:1;     /* bit 19(one or more nibbles signalled as errors) */
-               u32 asw_false_carrier_event:1;  /* bit 18(bad carrier since last good packet) */
-               u32 asw_RX_DV_event:1;  /* bit 17(short receive event detected) */
-               u32 asw_prev_pkt_dropped:1;/* bit 16(e.g. IFG too small on previous) */
-               u32 unused:5;           /* bits 11-15 */
-               u32 vp:1;                       /* bit 10(VLAN Packet) */
-               u32 jp:1;                       /* bit 9(Jumbo Packet) */
-               u32 ft:1;                       /* bit 8(Frame Truncated) */
-               u32 drop:1;             /* bit 7(Drop packet) */
-               u32 rxmac_error:1;              /* bit 6(RXMAC Error Indicator) */
-               u32 wol:1;                      /* bit 5(WOL Event) */
-               u32 tcpp:1;             /* bit 4(TCP checksum pass) */
-               u32 tcpa:1;             /* bit 3(TCP checksum assist) */
-               u32 ipp:1;                      /* bit 2(IP checksum pass) */
-               u32 ipa:1;                      /* bit 1(IP checksum assist) */
-               u32 hp:1;                       /* bit 0(hash pass) */
-#else
-               u32 hp:1;                       /* bit 0(hash pass) */
-               u32 ipa:1;                      /* bit 1(IP checksum assist) */
-               u32 ipp:1;                      /* bit 2(IP checksum pass) */
-               u32 tcpa:1;             /* bit 3(TCP checksum assist) */
-               u32 tcpp:1;             /* bit 4(TCP checksum pass) */
-               u32 wol:1;                      /* bit 5(WOL Event) */
-               u32 rxmac_error:1;              /* bit 6(RXMAC Error Indicator) */
-               u32 drop:1;             /* bit 7(Drop packet) */
-               u32 ft:1;                       /* bit 8(Frame Truncated) */
-               u32 jp:1;                       /* bit 9(Jumbo Packet) */
-               u32 vp:1;                       /* bit 10(VLAN Packet) */
-               u32 unused:5;           /* bits 11-15 */
-               u32 asw_prev_pkt_dropped:1;/* bit 16(e.g. IFG too small on previous) */
-               u32 asw_RX_DV_event:1;  /* bit 17(short receive event detected) */
-               u32 asw_false_carrier_event:1;  /* bit 18(bad carrier since last good packet) */
-               u32 asw_code_err:1;     /* bit 19(one or more nibbles signalled as errors) */
-               u32 asw_CRC_err:1;              /* bit 20(CRC error) */
-               u32 asw_len_chk_err:1;  /* bit 21(frame length field incorrect) */
-               u32 asw_too_long:1;     /* bit 22(frame length > 1518 bytes) */
-               u32 asw_OK:1;           /* bit 23(valid CRC + no code error) */
-               u32 asw_multicast:1;    /* bit 24(has a multicast address) */
-               u32 asw_broadcast:1;    /* bit 25(has a broadcast address) */
-               u32 asw_dribble_nibble:1;       /* bit 26(spurious bits after EOP) */
-               u32 asw_control_frame:1;        /* bit 27(is a control frame) */
-               u32 asw_pause_frame:1;  /* bit 28(is a pause frame) */
-               u32 asw_unsupported_op:1;       /* bit 29(unsupported OP code) */
-               u32 asw_VLAN_tag:1;     /* bit 30(VLAN tag detected) */
-               u32 asw_long_evt:1;     /* bit 31(Rx long event) */
-#if 0
-               u32 asw_trunc:1;                /* bit 31(Rx frame truncated) */
-#endif
-#endif
-       } bits;
-} PKT_STAT_DESC_WORD0_t, *PPKT_STAT_WORD0_t;
+       u32 word2;              /* Bits 10-31 reserved, 0-9 descriptor */
+};
 
-typedef union _PKT_STAT_DESC_WORD1_t {
-       u32 value;
-       struct {
-#ifdef _BIT_FIELDS_HTOL
-               u32 unused:4;   /* bits 28-31 */
-               u32 ri:2;               /* bits 26-27(Ring Index) */
-               u32 bi:10;              /* bits 16-25(Buffer Index) */
-               u32 length:16;  /* bit 0-15(length in bytes) */
-#else
-               u32 length:16;  /* bit 0-15(length in bytes) */
-               u32 bi:10;              /* bits 16-25(Buffer Index) */
-               u32 ri:2;               /* bits 26-27(Ring Index) */
-               u32 unused:4;   /* bits 28-31 */
-#endif
-       } bits;
-} PKT_STAT_DESC_WORD1_t, *PPKT_STAT_WORD1_t;
+/* Packet Status Ring Descriptors
+ *
+ * Word 0:
+ *
+ * top 16 bits are from the Alcatel Status Word as enumerated in
+ * PE-MCXMAC Data Sheet IPD DS54 0210-1 (also IPD-DS80 0205-2)
+ *
+ * 0: hp                       hash pass
+ * 1: ipa                      IP checksum assist
+ * 2: ipp                      IP checksum pass
+ * 3: tcpa                     TCP checksum assist
+ * 4: tcpp                     TCP checksum pass
+ * 5: wol                      WOL Event
+ * 6: rxmac_error              RXMAC Error Indicator
+ * 7: drop                     Drop packet
+ * 8: ft                       Frame Truncated
+ * 9: jp                       Jumbo Packet
+ * 10: vp                      VLAN Packet
+ * 11-15: unused
+ * 16: asw_prev_pkt_dropped    e.g. IFG too small on previous
+ * 17: asw_RX_DV_event         short receive event detected
+ * 18: asw_false_carrier_event bad carrier since last good packet
+ * 19: asw_code_err            one or more nibbles signalled as errors
+ * 20: asw_CRC_err             CRC error
+ * 21: asw_len_chk_err         frame length field incorrect
+ * 22: asw_too_long            frame length > 1518 bytes
+ * 23: asw_OK                  valid CRC + no code error
+ * 24: asw_multicast           has a multicast address
+ * 25: asw_broadcast           has a broadcast address
+ * 26: asw_dribble_nibble      spurious bits after EOP
+ * 27: asw_control_frame       is a control frame
+ * 28: asw_pause_frame         is a pause frame
+ * 29: asw_unsupported_op      unsupported OP code
+ * 30: asw_VLAN_tag            VLAN tag detected
+ * 31: asw_long_evt            Rx long event
+ *
+ * Word 1:
+ * 0-15: length                        length in bytes
+ * 16-25: bi                   Buffer Index
+ * 26-27: ri                   Ring Index
+ * 28-31: reserved
+ */
 
-typedef struct _PKT_STAT_DESC_t {
-       PKT_STAT_DESC_WORD0_t word0;
-       PKT_STAT_DESC_WORD1_t word1;
-} PKT_STAT_DESC_t, *PPKT_STAT_DESC_t;
+struct pkt_stat_desc {
+       u32 word0;
+       u32 word1;
+};
 
 /* Typedefs for the RX DMA status word */
 
@@ -223,59 +163,38 @@ typedef struct _PKT_STAT_DESC_t {
  * RXSTAT_WORD1_t structure holds part of the status bits of the Rx DMA engine
  * that get copied out to memory by the ET-1310.  Word 3 is a 32 bit word
  * which contains the Packet Status Ring available offset.
+ *
+ * bit 0-15 reserved
+ * bit 16-27 PSRoffset
+ * bit 28 PSRwrap
+ * bit 29-31 unused
  */
 
-#define RXSTAT1_OFFSET 16
-#define RXSTAT1_MASK   0xFFF
-#define RXSTAT1_WRAP   0x10000000
-
-typedef union _rxstat_word1_t {
-       u32 value;
-       struct {
-#ifdef _BIT_FIELDS_HTOL
-               u32 PSRunused:3;        /* bits 29-31 */
-               u32 PSRwrap:1;  /* bit 28 */
-               u32 PSRoffset:12;       /* bits 16-27 */
-               u32 reserved:16;        /* bits 0-15 */
-#else
-               u32 reserved:16;        /* bits 0-15 */
-               u32 PSRoffset:12;       /* bits 16-27 */
-               u32 PSRwrap:1;  /* bit 28 */
-               u32 PSRunused:3;        /* bits 29-31 */
-#endif
-       } bits;
-} RXSTAT_WORD1_t, *PRXSTAT_WORD1_t;
-
 /*
- * RX_STATUS_BLOCK_t is sructure representing the status of the Rx DMA engine
- * it sits in free memory, and is pointed to by 0x101c / 0x1020
+ * struct rx_status_block is a structure representing the status of the Rx
+ * DMA engine it sits in free memory, and is pointed to by 0x101c / 0x1020
  */
-typedef struct _rx_status_block_t {
+struct rx_status_block {
        u32 Word0;
-       RXSTAT_WORD1_t Word1;
-} RX_STATUS_BLOCK_t, *PRX_STATUS_BLOCK_t;
+       u32 Word1;
+};
 
 /*
  * Structure for look-up table holding free buffer ring pointers
  */
-typedef struct _FbrLookupTable {
-       void *Va[MAX_DESC_PER_RING_RX];
-       void *Buffer1[MAX_DESC_PER_RING_RX];
-       void *Buffer2[MAX_DESC_PER_RING_RX];
-       u32 PAHigh[MAX_DESC_PER_RING_RX];
-       u32 PALow[MAX_DESC_PER_RING_RX];
-} FBRLOOKUPTABLE, *PFBRLOOKUPTABLE;
-
-typedef enum {
-       ONE_PACKET_INTERRUPT,
-       FOUR_PACKET_INTERRUPT
-} eRX_INTERRUPT_STATE_t, *PeRX_INTERRUPT_STATE_t;
+struct fbr_lookup {
+       void *virt[MAX_DESC_PER_RING_RX];
+       void *buffer1[MAX_DESC_PER_RING_RX];
+       void *buffer2[MAX_DESC_PER_RING_RX];
+       u32 bus_high[MAX_DESC_PER_RING_RX];
+       u32 bus_low[MAX_DESC_PER_RING_RX];
+};
 
 /*
- * RX_RING_t is sructure representing the adaptor's local reference(s) to the
- * rings
+ * struct rx_ring is the ssructure representing the adaptor's local
+ * reference(s) to the rings
  */
-typedef struct _rx_ring_t {
+struct rx_ring {
 #ifdef USE_FBR0
        void *pFbr0RingVa;
        dma_addr_t pFbr0RingPa;
@@ -293,7 +212,7 @@ typedef struct _rx_ring_t {
        dma_addr_t Fbr1MemPa[MAX_DESC_PER_RING_RX / FBR_CHUNKS];
        uint64_t Fbr1Realpa;
        uint64_t Fbr1offset;
-       FBRLOOKUPTABLE *Fbr[2];
+       struct fbr_lookup *fbr[2];      /* One per ring */
        u32 local_Fbr1_full;
        u32 Fbr1NumEntries;
        u32 Fbr1BufferSize;
@@ -303,8 +222,8 @@ typedef struct _rx_ring_t {
        u32 local_psr_full;
        u32 PsrNumEntries;
 
-       void *pRxStatusVa;
-       dma_addr_t pRxStatusPa;
+       struct rx_status_block *rx_status_block;
+       dma_addr_t rx_status_bus;
 
        struct list_head RecvBufferPool;
 
@@ -320,30 +239,6 @@ typedef struct _rx_ring_t {
 
        /* lookaside lists */
        struct kmem_cache *RecvLookaside;
-} RX_RING_t, *PRX_RING_t;
-
-/* Forward reference of RFD */
-struct _MP_RFD;
-
-/* Forward declaration of the private adapter structure */
-struct et131x_adapter;
-
-/* PROTOTYPES for Initialization */
-int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter);
-void et131x_rx_dma_memory_free(struct et131x_adapter *adapter);
-int et131x_rfd_resources_alloc(struct et131x_adapter *adapter,
-                              struct _MP_RFD *pMpRfd);
-void et131x_rfd_resources_free(struct et131x_adapter *adapter,
-                              struct _MP_RFD *pMpRfd);
-int et131x_init_recv(struct et131x_adapter *adapter);
-
-void ConfigRxDmaRegs(struct et131x_adapter *adapter);
-void SetRxDmaTimer(struct et131x_adapter *adapter);
-void et131x_rx_dma_disable(struct et131x_adapter *adapter);
-void et131x_rx_dma_enable(struct et131x_adapter *adapter);
-
-void et131x_reset_recv(struct et131x_adapter *adapter);
-
-void et131x_handle_recv_interrupt(struct et131x_adapter *adapter);
+};
 
 #endif /* __ET1310_RX_H__ */