This source file includes following definitions.
- b43legacy_pio_read
- b43legacy_pio_write
- b43legacy_pio_init
- b43legacy_pio_free
- b43legacy_pio_tx
- b43legacy_pio_handle_txstatus
- b43legacy_pio_rx
- b43legacy_pio_tx_suspend
- b43legacy_pio_tx_resume
- b43legacy_pio_freeze_txqueues
- b43legacy_pio_thaw_txqueues
   1 
   2 #ifndef B43legacy_PIO_H_
   3 #define B43legacy_PIO_H_
   4 
   5 #include "b43legacy.h"
   6 
   7 #include <linux/interrupt.h>
   8 #include <linux/list.h>
   9 #include <linux/skbuff.h>
  10 
  11 
  12 #define B43legacy_PIO_TXCTL             0x00
  13 #define B43legacy_PIO_TXDATA            0x02
  14 #define B43legacy_PIO_TXQBUFSIZE        0x04
  15 #define B43legacy_PIO_RXCTL             0x08
  16 #define B43legacy_PIO_RXDATA            0x0A
  17 
  18 #define B43legacy_PIO_TXCTL_WRITELO     (1 << 0)
  19 #define B43legacy_PIO_TXCTL_WRITEHI     (1 << 1)
  20 #define B43legacy_PIO_TXCTL_COMPLETE    (1 << 2)
  21 #define B43legacy_PIO_TXCTL_INIT        (1 << 3)
  22 #define B43legacy_PIO_TXCTL_SUSPEND     (1 << 7)
  23 
  24 #define B43legacy_PIO_RXCTL_DATAAVAILABLE       (1 << 0)
  25 #define B43legacy_PIO_RXCTL_READY               (1 << 1)
  26 
  27 
  28 #define B43legacy_PIO_MAXTXDEVQPACKETS  31
  29 #define B43legacy_PIO_TXQADJUST         80
  30 
  31 
  32 #define B43legacy_PIO_MAXTXPACKETS      256
  33 
  34 
  35 
  36 #ifdef CONFIG_B43LEGACY_PIO
  37 
  38 
  39 struct b43legacy_pioqueue;
  40 struct b43legacy_xmitstatus;
  41 
  42 struct b43legacy_pio_txpacket {
  43         struct b43legacy_pioqueue *queue;
  44         struct sk_buff *skb;
  45         struct list_head list;
  46 };
  47 
  48 #define pio_txpacket_getindex(packet) ((int)((packet) - \
  49                               (packet)->queue->tx_packets_cache))
  50 
  51 struct b43legacy_pioqueue {
  52         struct b43legacy_wldev *dev;
  53         u16 mmio_base;
  54 
  55         bool tx_suspended;
  56         bool tx_frozen;
  57         bool need_workarounds; 
  58 
  59         
  60         u16 tx_devq_size;
  61         
  62         u16 tx_devq_used;
  63         
  64         u8 tx_devq_packets;
  65         
  66 
  67 
  68         struct list_head txfree;
  69         unsigned int nr_txfree;
  70         
  71 
  72 
  73         struct list_head txqueue;
  74         
  75 
  76 
  77         struct list_head txrunning;
  78         struct tasklet_struct txtask;
  79         struct b43legacy_pio_txpacket
  80                          tx_packets_cache[B43legacy_PIO_MAXTXPACKETS];
  81 };
  82 
  83 static inline
  84 u16 b43legacy_pio_read(struct b43legacy_pioqueue *queue,
  85                      u16 offset)
  86 {
  87         return b43legacy_read16(queue->dev, queue->mmio_base + offset);
  88 }
  89 
  90 static inline
  91 void b43legacy_pio_write(struct b43legacy_pioqueue *queue,
  92                        u16 offset, u16 value)
  93 {
  94         b43legacy_write16(queue->dev, queue->mmio_base + offset, value);
  95 }
  96 
  97 
  98 int b43legacy_pio_init(struct b43legacy_wldev *dev);
  99 void b43legacy_pio_free(struct b43legacy_wldev *dev);
 100 
 101 int b43legacy_pio_tx(struct b43legacy_wldev *dev,
 102                    struct sk_buff *skb);
 103 void b43legacy_pio_handle_txstatus(struct b43legacy_wldev *dev,
 104                                  const struct b43legacy_txstatus *status);
 105 void b43legacy_pio_rx(struct b43legacy_pioqueue *queue);
 106 
 107 
 108 void b43legacy_pio_tx_suspend(struct b43legacy_pioqueue *queue);
 109 void b43legacy_pio_tx_resume(struct b43legacy_pioqueue *queue);
 110 
 111 void b43legacy_pio_freeze_txqueues(struct b43legacy_wldev *dev);
 112 void b43legacy_pio_thaw_txqueues(struct b43legacy_wldev *dev);
 113 
 114 #else 
 115 
 116 static inline
 117 int b43legacy_pio_init(struct b43legacy_wldev *dev)
 118 {
 119         return 0;
 120 }
 121 static inline
 122 void b43legacy_pio_free(struct b43legacy_wldev *dev)
 123 {
 124 }
 125 static inline
 126 int b43legacy_pio_tx(struct b43legacy_wldev *dev,
 127                    struct sk_buff *skb)
 128 {
 129         return 0;
 130 }
 131 static inline
 132 void b43legacy_pio_handle_txstatus(struct b43legacy_wldev *dev,
 133                                  const struct b43legacy_txstatus *status)
 134 {
 135 }
 136 static inline
 137 void b43legacy_pio_rx(struct b43legacy_pioqueue *queue)
 138 {
 139 }
 140 static inline
 141 void b43legacy_pio_tx_suspend(struct b43legacy_pioqueue *queue)
 142 {
 143 }
 144 static inline
 145 void b43legacy_pio_tx_resume(struct b43legacy_pioqueue *queue)
 146 {
 147 }
 148 static inline
 149 void b43legacy_pio_freeze_txqueues(struct b43legacy_wldev *dev)
 150 {
 151 }
 152 static inline
 153 void b43legacy_pio_thaw_txqueues(struct b43legacy_wldev *dev)
 154 {
 155 }
 156 
 157 #endif 
 158 #endif