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