blob: b444ce5f09f830b0814fc3a090f141035455d80c [file] [log] [blame]
Luis R. Rodriguezd70357d2010-04-15 17:38:06 -04001/*
2 * Copyright (c) 2010 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#ifndef ATH9K_HW_OPS_H
18#define ATH9K_HW_OPS_H
19
20#include "hw.h"
21
22/* Hardware core and driver accessible callbacks */
23
24static inline void ath9k_hw_configpcipowersave(struct ath_hw *ah,
25 int restore,
26 int power_off)
27{
28 ath9k_hw_ops(ah)->config_pci_powersave(ah, restore, power_off);
29}
30
Vasanthakumar Thiagarajancee1f622010-04-15 17:38:26 -040031static inline void ath9k_hw_rxena(struct ath_hw *ah)
32{
33 ath9k_hw_ops(ah)->rx_enable(ah);
34}
35
Vasanthakumar Thiagarajan87d5efb2010-04-15 17:38:43 -040036static inline void ath9k_hw_set_desc_link(struct ath_hw *ah, void *ds,
37 u32 link)
38{
39 ath9k_hw_ops(ah)->set_desc_link(ds, link);
40}
41
42static inline void ath9k_hw_get_desc_link(struct ath_hw *ah, void *ds,
43 u32 **link)
44{
45 ath9k_hw_ops(ah)->get_desc_link(ds, link);
46}
Luis R. Rodriguez795f5e22010-04-15 17:39:00 -040047static inline bool ath9k_hw_calibrate(struct ath_hw *ah,
48 struct ath9k_channel *chan,
49 u8 rxchainmask,
50 bool longcal)
51{
52 return ath9k_hw_ops(ah)->calibrate(ah, chan, rxchainmask, longcal);
53}
54
Vasanthakumar Thiagarajan55e82df2010-04-15 17:39:06 -040055static inline bool ath9k_hw_getisr(struct ath_hw *ah, enum ath9k_int *masked)
56{
57 return ath9k_hw_ops(ah)->get_isr(ah, masked);
58}
59
Luis R. Rodriguez8fe65362010-04-15 17:38:14 -040060/* Private hardware call ops */
61
62/* PHY ops */
63
64static inline int ath9k_hw_rf_set_freq(struct ath_hw *ah,
65 struct ath9k_channel *chan)
66{
67 return ath9k_hw_private_ops(ah)->rf_set_freq(ah, chan);
68}
69
70static inline void ath9k_hw_spur_mitigate_freq(struct ath_hw *ah,
71 struct ath9k_channel *chan)
72{
73 ath9k_hw_private_ops(ah)->spur_mitigate_freq(ah, chan);
74}
75
76static inline int ath9k_hw_rf_alloc_ext_banks(struct ath_hw *ah)
77{
78 if (!ath9k_hw_private_ops(ah)->rf_alloc_ext_banks)
79 return 0;
80
81 return ath9k_hw_private_ops(ah)->rf_alloc_ext_banks(ah);
82}
83
84static inline void ath9k_hw_rf_free_ext_banks(struct ath_hw *ah)
85{
86 if (!ath9k_hw_private_ops(ah)->rf_free_ext_banks)
87 return;
88
89 ath9k_hw_private_ops(ah)->rf_free_ext_banks(ah);
90}
91
92static inline bool ath9k_hw_set_rf_regs(struct ath_hw *ah,
93 struct ath9k_channel *chan,
94 u16 modesIndex)
95{
96 if (!ath9k_hw_private_ops(ah)->set_rf_regs)
97 return true;
98
99 return ath9k_hw_private_ops(ah)->set_rf_regs(ah, chan, modesIndex);
100}
101
102static inline void ath9k_hw_init_bb(struct ath_hw *ah,
103 struct ath9k_channel *chan)
104{
105 return ath9k_hw_private_ops(ah)->init_bb(ah, chan);
106}
107
108static inline void ath9k_hw_set_channel_regs(struct ath_hw *ah,
109 struct ath9k_channel *chan)
110{
111 return ath9k_hw_private_ops(ah)->set_channel_regs(ah, chan);
112}
113
114static inline int ath9k_hw_process_ini(struct ath_hw *ah,
115 struct ath9k_channel *chan)
116{
117 return ath9k_hw_private_ops(ah)->process_ini(ah, chan);
118}
119
120static inline void ath9k_olc_init(struct ath_hw *ah)
121{
122 if (!ath9k_hw_private_ops(ah)->olc_init)
123 return;
124
125 return ath9k_hw_private_ops(ah)->olc_init(ah);
126}
127
128static inline void ath9k_hw_set_rfmode(struct ath_hw *ah,
129 struct ath9k_channel *chan)
130{
131 return ath9k_hw_private_ops(ah)->set_rfmode(ah, chan);
132}
133
134static inline void ath9k_hw_mark_phy_inactive(struct ath_hw *ah)
135{
136 return ath9k_hw_private_ops(ah)->mark_phy_inactive(ah);
137}
138
139static inline void ath9k_hw_set_delta_slope(struct ath_hw *ah,
140 struct ath9k_channel *chan)
141{
142 return ath9k_hw_private_ops(ah)->set_delta_slope(ah, chan);
143}
144
145static inline bool ath9k_hw_rfbus_req(struct ath_hw *ah)
146{
147 return ath9k_hw_private_ops(ah)->rfbus_req(ah);
148}
149
150static inline void ath9k_hw_rfbus_done(struct ath_hw *ah)
151{
152 return ath9k_hw_private_ops(ah)->rfbus_done(ah);
153}
154
155static inline void ath9k_enable_rfkill(struct ath_hw *ah)
156{
157 return ath9k_hw_private_ops(ah)->enable_rfkill(ah);
158}
159
160static inline void ath9k_hw_restore_chainmask(struct ath_hw *ah)
161{
162 if (!ath9k_hw_private_ops(ah)->restore_chainmask)
163 return;
164
165 return ath9k_hw_private_ops(ah)->restore_chainmask(ah);
166}
167
168static inline void ath9k_hw_set_diversity(struct ath_hw *ah, bool value)
169{
170 return ath9k_hw_private_ops(ah)->set_diversity(ah, value);
171}
172
Felix Fietkauc16fcb42010-04-15 17:38:39 -0400173static inline bool ath9k_hw_ani_control(struct ath_hw *ah,
174 enum ath9k_ani_cmd cmd, int param)
175{
176 return ath9k_hw_private_ops(ah)->ani_control(ah, cmd, param);
177}
178
Felix Fietkau641d9922010-04-15 17:38:49 -0400179static inline void ath9k_hw_do_getnf(struct ath_hw *ah,
180 int16_t nfarray[NUM_NF_READINGS])
181{
Luis R. Rodriguez795f5e22010-04-15 17:39:00 -0400182 ath9k_hw_private_ops(ah)->do_getnf(ah, nfarray);
183}
184
Luis R. Rodriguez77d6d392010-04-15 17:39:09 -0400185static inline void ath9k_hw_loadnf(struct ath_hw *ah,
186 struct ath9k_channel *chan)
187{
188 ath9k_hw_private_ops(ah)->loadnf(ah, chan);
189}
190
Luis R. Rodriguez795f5e22010-04-15 17:39:00 -0400191static inline bool ath9k_hw_init_cal(struct ath_hw *ah,
192 struct ath9k_channel *chan)
193{
194 return ath9k_hw_private_ops(ah)->init_cal(ah, chan);
195}
196
197static inline void ath9k_hw_setup_calibration(struct ath_hw *ah,
198 struct ath9k_cal_list *currCal)
199{
200 ath9k_hw_private_ops(ah)->setup_calibration(ah, currCal);
201}
202
203static inline bool ath9k_hw_iscal_supported(struct ath_hw *ah,
204 enum ath9k_cal_types calType)
205{
206 return ath9k_hw_private_ops(ah)->iscal_supported(ah, calType);
Felix Fietkau641d9922010-04-15 17:38:49 -0400207}
208
Luis R. Rodriguezd70357d2010-04-15 17:38:06 -0400209#endif /* ATH9K_HW_OPS_H */