Lines Matching refs:ar
44 struct ath6kl *ar; member
77 static inline struct ath6kl_sdio *ath6kl_sdio_priv(struct ath6kl *ar) in ath6kl_sdio_priv() argument
79 return ar->hif_priv; in ath6kl_sdio_priv()
93 static void ath6kl_sdio_set_mbox_info(struct ath6kl *ar) in ath6kl_sdio_set_mbox_info() argument
95 struct ath6kl_mbox_info *mbox_info = &ar->mbox_info; in ath6kl_sdio_set_mbox_info()
327 scat_req->complete(ar_sdio->ar->htc_target, scat_req); in ath6kl_sdio_scat_rw()
391 hif_scatter_req_add(ar_sdio->ar, s_req); in ath6kl_sdio_alloc_prep_scat_req()
397 static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf, in ath6kl_sdio_read_write_sync() argument
400 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_read_write_sync()
440 status = ath6kl_sdio_read_write_sync(ar_sdio->ar, req->address, in __ath6kl_sdio_write_async()
481 status = ath6kl_hif_intr_bh_handler(ar_sdio->ar); in ath6kl_sdio_irq_handler()
490 static int ath6kl_sdio_power_on(struct ath6kl *ar) in ath6kl_sdio_power_on() argument
492 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_power_on()
523 static int ath6kl_sdio_power_off(struct ath6kl *ar) in ath6kl_sdio_power_off() argument
525 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_power_off()
546 static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer, in ath6kl_sdio_write_async() argument
550 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_write_async()
567 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); in ath6kl_sdio_write_async()
572 static void ath6kl_sdio_irq_enable(struct ath6kl *ar) in ath6kl_sdio_irq_enable() argument
574 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_irq_enable()
587 static bool ath6kl_sdio_is_on_irq(struct ath6kl *ar) in ath6kl_sdio_is_on_irq() argument
589 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_is_on_irq()
594 static void ath6kl_sdio_irq_disable(struct ath6kl *ar) in ath6kl_sdio_irq_disable() argument
596 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_irq_disable()
605 ath6kl_sdio_is_on_irq(ar)); in ath6kl_sdio_irq_disable()
619 static struct hif_scatter_req *ath6kl_sdio_scatter_req_get(struct ath6kl *ar) in ath6kl_sdio_scatter_req_get() argument
621 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_scatter_req_get()
639 static void ath6kl_sdio_scatter_req_add(struct ath6kl *ar, in ath6kl_sdio_scatter_req_add() argument
642 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_scatter_req_add()
653 static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar, in ath6kl_sdio_async_rw_scatter() argument
656 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_async_rw_scatter()
673 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); in ath6kl_sdio_async_rw_scatter()
680 static void ath6kl_sdio_cleanup_scatter(struct ath6kl *ar) in ath6kl_sdio_cleanup_scatter() argument
682 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_cleanup_scatter()
708 static int ath6kl_sdio_enable_scatter(struct ath6kl *ar) in ath6kl_sdio_enable_scatter() argument
710 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_enable_scatter()
711 struct htc_target *target = ar->htc_target; in ath6kl_sdio_enable_scatter()
743 ath6kl_sdio_cleanup_scatter(ar); in ath6kl_sdio_enable_scatter()
755 ath6kl_sdio_cleanup_scatter(ar); in ath6kl_sdio_enable_scatter()
771 static int ath6kl_sdio_config(struct ath6kl *ar) in ath6kl_sdio_config() argument
773 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_config()
810 static int ath6kl_set_sdio_pm_caps(struct ath6kl *ar) in ath6kl_set_sdio_pm_caps() argument
812 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_set_sdio_pm_caps()
839 static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow) in ath6kl_sdio_suspend() argument
841 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_suspend()
847 if (ar->state == ATH6KL_STATE_SCHED_SCAN) { in ath6kl_sdio_suspend()
850 ret = ath6kl_set_sdio_pm_caps(ar); in ath6kl_sdio_suspend()
854 ret = ath6kl_cfg80211_suspend(ar, in ath6kl_sdio_suspend()
863 if (ar->suspend_mode == WLAN_POWER_STATE_WOW || in ath6kl_sdio_suspend()
864 (!ar->suspend_mode && wow)) { in ath6kl_sdio_suspend()
866 ret = ath6kl_set_sdio_pm_caps(ar); in ath6kl_sdio_suspend()
870 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_WOW, wow); in ath6kl_sdio_suspend()
875 (!ar->wow_suspend_mode || in ath6kl_sdio_suspend()
876 ar->wow_suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP)) in ath6kl_sdio_suspend()
879 ar->wow_suspend_mode == WLAN_POWER_STATE_CUT_PWR) in ath6kl_sdio_suspend()
885 if (ar->suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP || in ath6kl_sdio_suspend()
886 !ar->suspend_mode || try_deepsleep) { in ath6kl_sdio_suspend()
909 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP, in ath6kl_sdio_suspend()
918 return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER, NULL); in ath6kl_sdio_suspend()
921 static int ath6kl_sdio_resume(struct ath6kl *ar) in ath6kl_sdio_resume() argument
923 switch (ar->state) { in ath6kl_sdio_resume()
930 ath6kl_sdio_config(ar); in ath6kl_sdio_resume()
952 ath6kl_cfg80211_resume(ar); in ath6kl_sdio_resume()
958 static int ath6kl_set_addrwin_reg(struct ath6kl *ar, u32 reg_addr, u32 addr) in ath6kl_set_addrwin_reg() argument
981 status = ath6kl_sdio_read_write_sync(ar, reg_addr + i, addr_val, in ath6kl_set_addrwin_reg()
1000 status = ath6kl_sdio_read_write_sync(ar, reg_addr, (u8 *)(&addr), in ath6kl_set_addrwin_reg()
1012 static int ath6kl_sdio_diag_read32(struct ath6kl *ar, u32 address, u32 *data) in ath6kl_sdio_diag_read32() argument
1017 status = ath6kl_set_addrwin_reg(ar, WINDOW_READ_ADDR_ADDRESS, in ath6kl_sdio_diag_read32()
1024 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS, in ath6kl_sdio_diag_read32()
1035 static int ath6kl_sdio_diag_write32(struct ath6kl *ar, u32 address, in ath6kl_sdio_diag_write32() argument
1042 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS, in ath6kl_sdio_diag_write32()
1051 return ath6kl_set_addrwin_reg(ar, WINDOW_WRITE_ADDR_ADDRESS, in ath6kl_sdio_diag_write32()
1055 static int ath6kl_sdio_bmi_credits(struct ath6kl *ar) in ath6kl_sdio_bmi_credits() argument
1061 ar->bmi.cmd_credits = 0; in ath6kl_sdio_bmi_credits()
1067 while (time_before(jiffies, timeout) && !ar->bmi.cmd_credits) { in ath6kl_sdio_bmi_credits()
1075 ret = ath6kl_sdio_read_write_sync(ar, addr, in ath6kl_sdio_bmi_credits()
1076 (u8 *)&ar->bmi.cmd_credits, 4, in ath6kl_sdio_bmi_credits()
1087 ar->bmi.cmd_credits &= 0xFF; in ath6kl_sdio_bmi_credits()
1090 if (!ar->bmi.cmd_credits) { in ath6kl_sdio_bmi_credits()
1098 static int ath6kl_bmi_get_rx_lkahd(struct ath6kl *ar) in ath6kl_bmi_get_rx_lkahd() argument
1106 ret = ath6kl_sdio_read_write_sync(ar, in ath6kl_bmi_get_rx_lkahd()
1127 static int ath6kl_sdio_bmi_write(struct ath6kl *ar, u8 *buf, u32 len) in ath6kl_sdio_bmi_write() argument
1132 ret = ath6kl_sdio_bmi_credits(ar); in ath6kl_sdio_bmi_write()
1136 addr = ar->mbox_info.htc_addr; in ath6kl_sdio_bmi_write()
1138 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len, in ath6kl_sdio_bmi_write()
1146 static int ath6kl_sdio_bmi_read(struct ath6kl *ar, u8 *buf, u32 len) in ath6kl_sdio_bmi_read() argument
1198 ret = ath6kl_bmi_get_rx_lkahd(ar); in ath6kl_sdio_bmi_read()
1203 addr = ar->mbox_info.htc_addr; in ath6kl_sdio_bmi_read()
1204 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len, in ath6kl_sdio_bmi_read()
1215 static void ath6kl_sdio_stop(struct ath6kl *ar) in ath6kl_sdio_stop() argument
1217 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_stop()
1233 req->scat_req->complete(ar_sdio->ar->htc_target, in ath6kl_sdio_stop()
1304 struct ath6kl *ar; in ath6kl_sdio_probe() local
1344 ar = ath6kl_core_create(&ar_sdio->func->dev); in ath6kl_sdio_probe()
1345 if (!ar) { in ath6kl_sdio_probe()
1351 ar_sdio->ar = ar; in ath6kl_sdio_probe()
1352 ar->hif_type = ATH6KL_HIF_TYPE_SDIO; in ath6kl_sdio_probe()
1353 ar->hif_priv = ar_sdio; in ath6kl_sdio_probe()
1354 ar->hif_ops = &ath6kl_sdio_ops; in ath6kl_sdio_probe()
1355 ar->bmi.max_data_size = 256; in ath6kl_sdio_probe()
1357 ath6kl_sdio_set_mbox_info(ar); in ath6kl_sdio_probe()
1359 ret = ath6kl_sdio_config(ar); in ath6kl_sdio_probe()
1365 ret = ath6kl_core_init(ar); in ath6kl_sdio_probe()
1374 ath6kl_core_destroy(ar_sdio->ar); in ath6kl_sdio_probe()
1393 ath6kl_stop_txrx(ar_sdio->ar); in ath6kl_sdio_remove()
1396 ath6kl_core_cleanup(ar_sdio->ar); in ath6kl_sdio_remove()
1397 ath6kl_core_destroy(ar_sdio->ar); in ath6kl_sdio_remove()