aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtl818x/rtl8180.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtl818x/rtl8180.h')
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8180.h b/drivers/net/wireless/rtl818x/rtl8180.h
new file mode 100644
index 000000000000..8721282a8185
--- /dev/null
+++ b/drivers/net/wireless/rtl818x/rtl8180.h
@@ -0,0 +1,120 @@
1#ifndef RTL8180_H
2#define RTL8180_H
3
4#include "rtl818x.h"
5
6#define MAX_RX_SIZE IEEE80211_MAX_RTS_THRESHOLD
7
8#define RF_PARAM_ANALOGPHY (1 << 0)
9#define RF_PARAM_ANTBDEFAULT (1 << 1)
10#define RF_PARAM_CARRIERSENSE1 (1 << 2)
11#define RF_PARAM_CARRIERSENSE2 (1 << 3)
12
13#define BB_ANTATTEN_CHAN14 0x0C
14#define BB_ANTENNA_B 0x40
15
16#define BB_HOST_BANG (1 << 30)
17#define BB_HOST_BANG_EN (1 << 2)
18#define BB_HOST_BANG_CLK (1 << 1)
19#define BB_HOST_BANG_DATA 1
20
21#define ANAPARAM_TXDACOFF_SHIFT 27
22#define ANAPARAM_PWR0_SHIFT 28
23#define ANAPARAM_PWR0_MASK (0x07 << ANAPARAM_PWR0_SHIFT)
24#define ANAPARAM_PWR1_SHIFT 20
25#define ANAPARAM_PWR1_MASK (0x7F << ANAPARAM_PWR1_SHIFT)
26
27struct rtl8180_tx_desc {
28 __le32 flags;
29 __le16 rts_duration;
30 __le16 plcp_len;
31 __le32 tx_buf;
32 __le32 frame_len;
33 __le32 next_tx_desc;
34 u8 cw;
35 u8 retry_limit;
36 u8 agc;
37 u8 flags2;
38 u32 reserved[2];
39} __attribute__ ((packed));
40
41struct rtl8180_rx_desc {
42 __le32 flags;
43 __le32 flags2;
44 union {
45 __le32 rx_buf;
46 __le64 tsft;
47 };
48} __attribute__ ((packed));
49
50struct rtl8180_tx_ring {
51 struct rtl8180_tx_desc *desc;
52 dma_addr_t dma;
53 unsigned int idx;
54 unsigned int entries;
55 struct sk_buff_head queue;
56};
57
58struct rtl8180_priv {
59 /* common between rtl818x drivers */
60 struct rtl818x_csr __iomem *map;
61 const struct rtl818x_rf_ops *rf;
62 struct ieee80211_vif *vif;
63 int mode;
64
65 /* rtl8180 driver specific */
66 spinlock_t lock;
67 struct rtl8180_rx_desc *rx_ring;
68 dma_addr_t rx_ring_dma;
69 unsigned int rx_idx;
70 struct sk_buff *rx_buf[32];
71 struct rtl8180_tx_ring tx_ring[4];
72 struct ieee80211_channel channels[14];
73 struct ieee80211_rate rates[12];
74 struct ieee80211_supported_band band;
75 struct pci_dev *pdev;
76 u32 rx_conf;
77
78 int r8185;
79 u32 anaparam;
80 u16 rfparam;
81 u8 csthreshold;
82};
83
84void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data);
85void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam);
86
87static inline u8 rtl818x_ioread8(struct rtl8180_priv *priv, u8 __iomem *addr)
88{
89 return ioread8(addr);
90}
91
92static inline u16 rtl818x_ioread16(struct rtl8180_priv *priv, __le16 __iomem *addr)
93{
94 return ioread16(addr);
95}
96
97static inline u32 rtl818x_ioread32(struct rtl8180_priv *priv, __le32 __iomem *addr)
98{
99 return ioread32(addr);
100}
101
102static inline void rtl818x_iowrite8(struct rtl8180_priv *priv,
103 u8 __iomem *addr, u8 val)
104{
105 iowrite8(val, addr);
106}
107
108static inline void rtl818x_iowrite16(struct rtl8180_priv *priv,
109 __le16 __iomem *addr, u16 val)
110{
111 iowrite16(val, addr);
112}
113
114static inline void rtl818x_iowrite32(struct rtl8180_priv *priv,
115 __le32 __iomem *addr, u32 val)
116{
117 iowrite32(val, addr);
118}
119
120#endif /* RTL8180_H */