xref: /dragonfly/sys/dev/netif/ath/ath/if_ath_lna_div.h (revision df052c2a9588fe12c7a2df4e61e2bfa3f3e16ce0)
1 /*-
2  * Copyright (c) 2013 Adrian Chadd <adrian@FreeBSD.org>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer,
10  *    without modification.
11  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
13  *    redistribution must be conditioned upon including a substantially
14  *    similar Disclaimer requirement for further binary redistribution.
15  *
16  * NO WARRANTY
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY
20  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
22  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27  * THE POSSIBILITY OF SUCH DAMAGES.
28  *
29  * $FreeBSD$
30  */
31 #ifndef   __IF_ATH_LNA_DIV_H__
32 #define   __IF_ATH_LNA_DIV_H__
33 
34 #define   ATH_ANT_RX_CURRENT_SHIFT                4
35 #define   ATH_ANT_RX_MAIN_SHIFT                             2
36 #define   ATH_ANT_RX_MASK                                   0x3
37 
38 #define   ATH_ANT_DIV_COMB_SHORT_SCAN_INTR        50
39 #define   ATH_ANT_DIV_COMB_SHORT_SCAN_PKTCOUNT    0x100
40 #define   ATH_ANT_DIV_COMB_MAX_PKTCOUNT           0x200
41 #define   ATH_ANT_DIV_COMB_INIT_COUNT             95
42 #define   ATH_ANT_DIV_COMB_MAX_COUNT              100
43 #define   ATH_ANT_DIV_COMB_ALT_ANT_RATIO                    30
44 #define   ATH_ANT_DIV_COMB_ALT_ANT_RATIO2                   20
45 
46 #define   ATH_ANT_DIV_COMB_LNA1_LNA2_SWITCH_DELTA -1
47 #define   ATH_ANT_DIV_COMB_LNA1_DELTA_HI                    -4
48 #define   ATH_ANT_DIV_COMB_LNA1_DELTA_MID                   -2
49 #define   ATH_ANT_DIV_COMB_LNA1_DELTA_LOW                   2
50 
51 struct if_ath_ant_comb_state {
52           uint16_t count;
53           uint16_t total_pkt_count;
54           HAL_BOOL scan;
55           HAL_BOOL scan_not_start;
56           int main_total_rssi;
57           int alt_total_rssi;
58           int alt_recv_cnt;
59           int main_recv_cnt;
60           int rssi_lna1;
61           int rssi_lna2;
62           int rssi_add;
63           int rssi_sub;
64           int rssi_first;
65           int rssi_second;
66           int rssi_third;
67           HAL_BOOL alt_good;
68           int quick_scan_cnt;
69           int main_conf;
70           HAL_ANT_DIV_COMB_LNA_CONF first_quick_scan_conf;
71           HAL_ANT_DIV_COMB_LNA_CONF second_quick_scan_conf;
72           int first_bias;
73           int second_bias;
74           HAL_BOOL first_ratio;
75           HAL_BOOL second_ratio;
76           unsigned long scan_start_time;
77           int lna1_lna2_delta;
78 };
79 
80 extern    int ath_lna_div_attach(struct ath_softc *sc);
81 extern    int ath_lna_div_detach(struct ath_softc *sc);
82 extern    int ath_lna_div_ioctl(struct ath_softc *sc, struct ath_diag *ad);
83 extern    int ath_lna_div_enable(struct ath_softc *sc,
84               const struct ieee80211_channel *ch);
85 
86 extern    void ath_lna_rx_comb_scan(struct ath_softc *sc,
87               struct ath_rx_status *rs, unsigned long ticks, int hz);
88 
89 #endif    /* __IF_ATH_LNA_DIV_H__ */
90