xref: /linux/drivers/net/wireless/broadcom/b43/ppr.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2ec76643bSRafał Miłecki #ifndef LINUX_B43_PPR_H_
3ec76643bSRafał Miłecki #define LINUX_B43_PPR_H_
4ec76643bSRafał Miłecki 
5ec76643bSRafał Miłecki #include <linux/types.h>
6ec76643bSRafał Miłecki 
7ec76643bSRafał Miłecki #define B43_PPR_CCK_RATES_NUM		4
8ec76643bSRafał Miłecki #define B43_PPR_OFDM_RATES_NUM		8
9ec76643bSRafał Miłecki #define B43_PPR_MCS_RATES_NUM		8
10ec76643bSRafał Miłecki 
11ec76643bSRafał Miłecki #define B43_PPR_RATES_NUM	(B43_PPR_CCK_RATES_NUM +	\
12ec76643bSRafał Miłecki 				 B43_PPR_OFDM_RATES_NUM * 2 +	\
13ec76643bSRafał Miłecki 				 B43_PPR_MCS_RATES_NUM * 4)
14ec76643bSRafał Miłecki 
15ec76643bSRafał Miłecki struct b43_ppr_rates {
16ec76643bSRafał Miłecki 	u8 cck[B43_PPR_CCK_RATES_NUM];
17ec76643bSRafał Miłecki 	u8 ofdm[B43_PPR_OFDM_RATES_NUM];
18ec76643bSRafał Miłecki 	u8 ofdm_20_cdd[B43_PPR_OFDM_RATES_NUM];
19ec76643bSRafał Miłecki 	u8 mcs_20[B43_PPR_MCS_RATES_NUM]; /* SISO */
20ec76643bSRafał Miłecki 	u8 mcs_20_cdd[B43_PPR_MCS_RATES_NUM];
21ec76643bSRafał Miłecki 	u8 mcs_20_stbc[B43_PPR_MCS_RATES_NUM];
22ec76643bSRafał Miłecki 	u8 mcs_20_sdm[B43_PPR_MCS_RATES_NUM];
23ec76643bSRafał Miłecki };
24ec76643bSRafał Miłecki 
25ec76643bSRafał Miłecki struct b43_ppr {
26ec76643bSRafał Miłecki 	/* All powers are in qdbm (Q5.2) */
27ec76643bSRafał Miłecki 	union {
28ec76643bSRafał Miłecki 		u8 __all_rates[B43_PPR_RATES_NUM];
29ec76643bSRafał Miłecki 		struct b43_ppr_rates rates;
30ec76643bSRafał Miłecki 	};
31ec76643bSRafał Miłecki };
32ec76643bSRafał Miłecki 
33ec76643bSRafał Miłecki struct b43_wldev;
34ec76643bSRafał Miłecki enum b43_band;
35ec76643bSRafał Miłecki 
36ec76643bSRafał Miłecki void b43_ppr_clear(struct b43_wldev *dev, struct b43_ppr *ppr);
37ec76643bSRafał Miłecki 
38ec76643bSRafał Miłecki void b43_ppr_add(struct b43_wldev *dev, struct b43_ppr *ppr, int diff);
39ec76643bSRafał Miłecki void b43_ppr_apply_max(struct b43_wldev *dev, struct b43_ppr *ppr, u8 max);
40ec76643bSRafał Miłecki void b43_ppr_apply_min(struct b43_wldev *dev, struct b43_ppr *ppr, u8 min);
41ec76643bSRafał Miłecki u8 b43_ppr_get_max(struct b43_wldev *dev, struct b43_ppr *ppr);
42ec76643bSRafał Miłecki 
43ec76643bSRafał Miłecki bool b43_ppr_load_max_from_sprom(struct b43_wldev *dev, struct b43_ppr *ppr,
44ec76643bSRafał Miłecki 				 enum b43_band band);
45ec76643bSRafał Miłecki 
46ec76643bSRafał Miłecki #endif /* LINUX_B43_PPR_H_ */
47