Lines Matching defs:btci

131  * @btci: BT coex info
139 static void brcmf_btcoex_boost_wifi(struct brcmf_btcoex_info *btci,
142 struct brcmf_if *ifp = brcmf_get_ifp(btci->cfg->pub, 0);
144 if (trump_sco && !btci->saved_regs_part2) {
151 brcmf_btcoex_params_read(ifp, 50, &btci->reg50);
152 brcmf_btcoex_params_read(ifp, 51, &btci->reg51);
153 brcmf_btcoex_params_read(ifp, 64, &btci->reg64);
154 brcmf_btcoex_params_read(ifp, 65, &btci->reg65);
155 brcmf_btcoex_params_read(ifp, 71, &btci->reg71);
157 btci->saved_regs_part2 = true;
160 btci->reg50, btci->reg51, btci->reg64,
161 btci->reg65, btci->reg71);
170 } else if (btci->saved_regs_part2) {
173 brcmf_btcoex_params_write(ifp, 50, btci->reg50);
174 brcmf_btcoex_params_write(ifp, 51, btci->reg51);
175 brcmf_btcoex_params_write(ifp, 64, btci->reg64);
176 brcmf_btcoex_params_write(ifp, 65, btci->reg65);
177 brcmf_btcoex_params_write(ifp, 71, btci->reg71);
181 btci->reg50, btci->reg51, btci->reg64,
182 btci->reg65, btci->reg71);
184 btci->saved_regs_part2 = false;
233 static void btcmf_btcoex_save_part1(struct brcmf_btcoex_info *btci)
235 struct brcmf_if *ifp = btci->vif->ifp;
237 if (!btci->saved_regs_part1) {
239 brcmf_btcoex_params_read(ifp, 66, &btci->reg66);
240 brcmf_btcoex_params_read(ifp, 41, &btci->reg41);
241 brcmf_btcoex_params_read(ifp, 68, &btci->reg68);
242 btci->saved_regs_part1 = true;
245 btci->reg66, btci->reg41,
246 btci->reg68);
253 static void brcmf_btcoex_restore_part1(struct brcmf_btcoex_info *btci)
257 if (btci->saved_regs_part1) {
258 btci->saved_regs_part1 = false;
259 ifp = btci->vif->ifp;
260 brcmf_btcoex_params_write(ifp, 66, btci->reg66);
261 brcmf_btcoex_params_write(ifp, 41, btci->reg41);
262 brcmf_btcoex_params_write(ifp, 68, btci->reg68);
265 btci->reg66, btci->reg41,
266 btci->reg68);
289 struct brcmf_btcoex_info *btci;
290 btci = container_of(work, struct brcmf_btcoex_info, work);
291 if (btci->timer_on) {
292 btci->timer_on = false;
293 timer_delete_sync(&btci->timer);
296 switch (btci->bt_state) {
302 btci->bt_state = BRCMF_BT_DHCP_OPPR_WIN;
303 if (btci->timeout < BRCMF_BTCOEX_OPPR_WIN_TIME) {
304 mod_timer(&btci->timer, btci->timer.expires);
306 btci->timeout -= BRCMF_BTCOEX_OPPR_WIN_TIME;
307 mod_timer(&btci->timer,
310 btci->timer_on = true;
314 if (btci->dhcp_done) {
322 brcmf_btcoex_boost_wifi(btci, true);
324 btci->bt_state = BRCMF_BT_DHCP_FLAG_FORCE_TIMEOUT;
325 mod_timer(&btci->timer, jiffies + btci->timeout);
326 btci->timer_on = true;
330 if (btci->dhcp_done)
339 brcmf_err("invalid state=%d !!!\n", btci->bt_state);
346 btci->bt_state = BRCMF_BT_DHCP_IDLE;
347 btci->timer_on = false;
348 brcmf_btcoex_boost_wifi(btci, false);
349 cfg80211_crit_proto_stopped(&btci->vif->wdev, GFP_KERNEL);
350 brcmf_btcoex_restore_part1(btci);
351 btci->vif = NULL;
362 struct brcmf_btcoex_info *btci;
365 btci = kmalloc(sizeof(*btci), GFP_KERNEL);
366 if (!btci)
369 btci->bt_state = BRCMF_BT_DHCP_IDLE;
372 btci->timer_on = false;
373 btci->timeout = BRCMF_BTCOEX_OPPR_WIN_TIME;
374 timer_setup(&btci->timer, brcmf_btcoex_timerfunc, 0);
375 btci->cfg = cfg;
376 btci->saved_regs_part1 = false;
377 btci->saved_regs_part2 = false;
379 INIT_WORK(&btci->work, brcmf_btcoex_handler);
381 cfg->btcoex = btci;
410 static void brcmf_btcoex_dhcp_start(struct brcmf_btcoex_info *btci)
412 struct brcmf_if *ifp = btci->vif->ifp;
414 btcmf_btcoex_save_part1(btci);
419 btci->dhcp_done = false;
420 btci->bt_state = BRCMF_BT_DHCP_START;
421 schedule_work(&btci->work);
425 static void brcmf_btcoex_dhcp_end(struct brcmf_btcoex_info *btci)
428 btci->dhcp_done = true;
429 if (btci->timer_on) {
431 btci->timer_on = false;
432 timer_delete_sync(&btci->timer);
435 if (btci->bt_state != BRCMF_BT_DHCP_IDLE) {
437 btci->bt_state);
438 schedule_work(&btci->work);
442 brcmf_btcoex_restore_part1(btci);
456 struct brcmf_btcoex_info *btci = cfg->btcoex;
462 if (btci->bt_state != BRCMF_BT_DHCP_IDLE)
466 btci->timeout = msecs_to_jiffies(duration);
467 btci->vif = vif;
468 brcmf_btcoex_dhcp_start(btci);
474 if (btci->bt_state != BRCMF_BT_DHCP_IDLE &&
475 vif == btci->vif) {
476 brcmf_btcoex_dhcp_end(btci);