1 /* 2 * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> 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 __MT76x02_PHY_H 18 #define __MT76x02_PHY_H 19 20 #include "mt76x02_regs.h" 21 22 static inline int 23 mt76x02_get_rssi_gain_thresh(struct mt76x02_dev *dev) 24 { 25 switch (dev->mt76.chandef.width) { 26 case NL80211_CHAN_WIDTH_80: 27 return -62; 28 case NL80211_CHAN_WIDTH_40: 29 return -65; 30 default: 31 return -68; 32 } 33 } 34 35 static inline int 36 mt76x02_get_low_rssi_gain_thresh(struct mt76x02_dev *dev) 37 { 38 switch (dev->mt76.chandef.width) { 39 case NL80211_CHAN_WIDTH_80: 40 return -76; 41 case NL80211_CHAN_WIDTH_40: 42 return -79; 43 default: 44 return -82; 45 } 46 } 47 48 void mt76x02_add_rate_power_offset(struct mt76_rate_power *r, int offset); 49 void mt76x02_phy_set_txpower(struct mt76x02_dev *dev, int txp_0, int txp_2); 50 void mt76x02_limit_rate_power(struct mt76_rate_power *r, int limit); 51 int mt76x02_get_max_rate_power(struct mt76_rate_power *r); 52 void mt76x02_phy_set_rxpath(struct mt76x02_dev *dev); 53 void mt76x02_phy_set_txdac(struct mt76x02_dev *dev); 54 void mt76x02_phy_set_bw(struct mt76x02_dev *dev, int width, u8 ctrl); 55 void mt76x02_phy_set_band(struct mt76x02_dev *dev, int band, 56 bool primary_upper); 57 bool mt76x02_phy_adjust_vga_gain(struct mt76x02_dev *dev); 58 void mt76x02_init_agc_gain(struct mt76x02_dev *dev); 59 60 #endif /* __MT76x02_PHY_H */ 61