Lines Matching +full:re +full:- +full:configurable
1 /*-
90 error = ath_descdma_alloc_desc(sc, &sc->sc_btcoex.buf, NULL, in ath_btcoex_mci_attach()
93 device_printf(sc->sc_dev, "%s: failed to alloc MCI RAM\n", in ath_btcoex_mci_attach()
98 /* Yes, we're going to do bluetooth MCI coex */ in ath_btcoex_mci_attach()
99 sc->sc_btcoex_mci = 1; in ath_btcoex_mci_attach()
102 sc->sc_btcoex.wlan_channels[0] = 0x00000000; in ath_btcoex_mci_attach()
103 sc->sc_btcoex.wlan_channels[1] = 0xffffffff; in ath_btcoex_mci_attach()
104 sc->sc_btcoex.wlan_channels[2] = 0xffffffff; in ath_btcoex_mci_attach()
105 sc->sc_btcoex.wlan_channels[3] = 0x7fffffff; in ath_btcoex_mci_attach()
113 * the HAL call with do (gpm_buf + (sched_addr - gpm_addr)) to in ath_btcoex_mci_attach()
114 * set sched_buf, and we're "golden". in ath_btcoex_mci_attach()
118 * bytes per entry and we're storing 16 entries. in ath_btcoex_mci_attach()
120 sc->sc_btcoex.gpm_buf = (void *) sc->sc_btcoex.buf.dd_desc; in ath_btcoex_mci_attach()
121 sc->sc_btcoex.sched_buf = sc->sc_btcoex.gpm_buf + in ath_btcoex_mci_attach()
124 sc->sc_btcoex.gpm_paddr = sc->sc_btcoex.buf.dd_desc_paddr; in ath_btcoex_mci_attach()
125 sc->sc_btcoex.sched_paddr = sc->sc_btcoex.gpm_paddr + in ath_btcoex_mci_attach()
129 memset(sc->sc_btcoex.gpm_buf, 0xfe, buflen); in ath_btcoex_mci_attach()
132 * This is an unfortunate x86'ism in the HAL - the in ath_btcoex_mci_attach()
138 * and will behave poorly on non-coherent systems. in ath_btcoex_mci_attach()
142 ath_hal_btcoex_mci_setup(sc->sc_ah, in ath_btcoex_mci_attach()
143 sc->sc_btcoex.gpm_paddr, in ath_btcoex_mci_attach()
144 sc->sc_btcoex.gpm_buf, in ath_btcoex_mci_attach()
146 sc->sc_btcoex.sched_paddr); in ath_btcoex_mci_attach()
158 ath_hal_btcoex_mci_detach(sc->sc_ah); in ath_btcoex_mci_detach()
159 ath_descdma_cleanup(sc, &sc->sc_btcoex.buf, NULL); in ath_btcoex_mci_detach()
166 * For MCI, we just use the top-level enable/disable flag, and
176 * Always reconfigure stomp-all for now, so wlan wins. in ath_btcoex_mci_enable()
182 * The longer-term solution is to dynamically adjust whether in ath_btcoex_mci_enable()
184 * making the individual stomp bits configurable. in ath_btcoex_mci_enable()
186 ath_hal_btcoex_set_weights(sc->sc_ah, HAL_BT_COEX_STOMP_ALL); in ath_btcoex_mci_enable()
206 if (! sc->sc_btcoex_mci) in ath_btcoex_mci_event()
214 if (ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_event()
218 if (ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_event()
228 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_event()
230 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_event()
244 ath_hal_btcoex_mci_send_message(sc->sc_ah, MCI_GPM, 0, payload, 16, in ath_btcoex_mci_send_gpm()
255 device_printf(sc->sc_dev, "%s: TODO!\n", __func__); in ath_btcoex_mci_bt_cal_do()
268 if (ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_BT, in ath_btcoex_mci_cal_msg()
270 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_cal_msg()
276 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_cal_msg()
282 if (ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_BT, in ath_btcoex_mci_cal_msg()
323 struct ieee80211com *ic = &sc->sc_ic; in ath_btcoex_mci_update_wlan_channels()
324 struct ieee80211_channel *chan = ic->ic_curchan; in ath_btcoex_mci_update_wlan_channels()
331 wl_chan = chan->ic_freq - 2402; in ath_btcoex_mci_update_wlan_channels()
333 bt_start = wl_chan - 10; in ath_btcoex_mci_update_wlan_channels()
336 bt_start = wl_chan - 30; in ath_btcoex_mci_update_wlan_channels()
340 bt_start = wl_chan - 10; in ath_btcoex_mci_update_wlan_channels()
344 bt_start -= 7; in ath_btcoex_mci_update_wlan_channels()
354 chan->ic_freq); in ath_btcoex_mci_update_wlan_channels()
356 "(MCI) mask BT channel %d - %d\n", bt_start, bt_end); in ath_btcoex_mci_update_wlan_channels()
364 ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_SEND_WLAN_CHANNELS, in ath_btcoex_mci_update_wlan_channels()
381 version = ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_coex_msg()
393 version = ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_coex_msg()
401 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_coex_msg()
440 ath_hal_btcoex_mci_get_interrupt(sc->sc_ah, &mciInt, &mciIntRxMsg); in ath_btcoex_mci_intr()
442 if (ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_ENABLE, in ath_btcoex_mci_intr()
444 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
465 ath_hal_btcoex_mci_send_message(sc->sc_ah, in ath_btcoex_mci_intr()
469 ath_hal_btcoex_mci_send_message(sc->sc_ah, in ath_btcoex_mci_intr()
473 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
479 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
486 if (ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_BT, in ath_btcoex_mci_intr()
488 if (ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
495 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
506 if (ath_hal_btcoex_mci_state(sc->sc_ah, HAL_MCI_STATE_BT, in ath_btcoex_mci_intr()
508 if (ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
515 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
525 * Recover from out-of-order / wrong-offset GPM messages. in ath_btcoex_mci_intr()
531 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
538 offset = ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
549 pGpm = (void *) sc->sc_btcoex.gpm_buf; in ath_btcoex_mci_intr()
550 offset = ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
574 device_printf(sc->sc_dev, in ath_btcoex_mci_intr()
607 value_dbm = ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
611 if (ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
615 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
621 ath_hal_btcoex_mci_state(sc->sc_ah, in ath_btcoex_mci_intr()
638 * This is the final part of GPT out-of-sync recovery. in ath_btcoex_mci_intr()