Lines Matching refs:ar
45 struct ath6kl *ar; member
78 static inline struct ath6kl_sdio *ath6kl_sdio_priv(struct ath6kl *ar) in ath6kl_sdio_priv() argument
80 return ar->hif_priv; in ath6kl_sdio_priv()
94 static void ath6kl_sdio_set_mbox_info(struct ath6kl *ar) in ath6kl_sdio_set_mbox_info() argument
96 struct ath6kl_mbox_info *mbox_info = &ar->mbox_info; in ath6kl_sdio_set_mbox_info()
337 scat_req->complete(ar_sdio->ar->htc_target, scat_req); in ath6kl_sdio_scat_rw()
401 hif_scatter_req_add(ar_sdio->ar, s_req); in ath6kl_sdio_alloc_prep_scat_req()
407 static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf, in ath6kl_sdio_read_write_sync() argument
410 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_read_write_sync()
451 status = ath6kl_sdio_read_write_sync(ar_sdio->ar, req->address, in __ath6kl_sdio_write_async()
492 status = ath6kl_hif_intr_bh_handler(ar_sdio->ar); in ath6kl_sdio_irq_handler()
501 static int ath6kl_sdio_power_on(struct ath6kl *ar) in ath6kl_sdio_power_on() argument
503 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_power_on()
534 static int ath6kl_sdio_power_off(struct ath6kl *ar) in ath6kl_sdio_power_off() argument
536 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_power_off()
557 static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer, in ath6kl_sdio_write_async() argument
561 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_write_async()
578 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); in ath6kl_sdio_write_async()
583 static void ath6kl_sdio_irq_enable(struct ath6kl *ar) in ath6kl_sdio_irq_enable() argument
585 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_irq_enable()
598 static bool ath6kl_sdio_is_on_irq(struct ath6kl *ar) in ath6kl_sdio_is_on_irq() argument
600 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_is_on_irq()
605 static void ath6kl_sdio_irq_disable(struct ath6kl *ar) in ath6kl_sdio_irq_disable() argument
607 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_irq_disable()
616 ath6kl_sdio_is_on_irq(ar)); in ath6kl_sdio_irq_disable()
630 static struct hif_scatter_req *ath6kl_sdio_scatter_req_get(struct ath6kl *ar) in ath6kl_sdio_scatter_req_get() argument
632 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_scatter_req_get()
650 static void ath6kl_sdio_scatter_req_add(struct ath6kl *ar, in ath6kl_sdio_scatter_req_add() argument
653 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_scatter_req_add()
663 static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar, in ath6kl_sdio_async_rw_scatter() argument
666 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_async_rw_scatter()
683 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); in ath6kl_sdio_async_rw_scatter()
690 static void ath6kl_sdio_cleanup_scatter(struct ath6kl *ar) in ath6kl_sdio_cleanup_scatter() argument
692 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_cleanup_scatter()
718 static int ath6kl_sdio_enable_scatter(struct ath6kl *ar) in ath6kl_sdio_enable_scatter() argument
720 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_enable_scatter()
721 struct htc_target *target = ar->htc_target; in ath6kl_sdio_enable_scatter()
753 ath6kl_sdio_cleanup_scatter(ar); in ath6kl_sdio_enable_scatter()
765 ath6kl_sdio_cleanup_scatter(ar); in ath6kl_sdio_enable_scatter()
781 static int ath6kl_sdio_config(struct ath6kl *ar) in ath6kl_sdio_config() argument
783 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_config()
820 static int ath6kl_set_sdio_pm_caps(struct ath6kl *ar) in ath6kl_set_sdio_pm_caps() argument
822 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_set_sdio_pm_caps()
849 static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow) in ath6kl_sdio_suspend() argument
851 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_suspend()
857 if (ar->suspend_mode == WLAN_POWER_STATE_WOW || in ath6kl_sdio_suspend()
858 (!ar->suspend_mode && wow)) { in ath6kl_sdio_suspend()
859 ret = ath6kl_set_sdio_pm_caps(ar); in ath6kl_sdio_suspend()
863 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_WOW, wow); in ath6kl_sdio_suspend()
868 (!ar->wow_suspend_mode || in ath6kl_sdio_suspend()
869 ar->wow_suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP)) in ath6kl_sdio_suspend()
872 ar->wow_suspend_mode == WLAN_POWER_STATE_CUT_PWR) in ath6kl_sdio_suspend()
878 if (ar->suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP || in ath6kl_sdio_suspend()
879 !ar->suspend_mode || try_deepsleep) { in ath6kl_sdio_suspend()
901 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP, in ath6kl_sdio_suspend()
913 return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER, NULL); in ath6kl_sdio_suspend()
916 static int ath6kl_sdio_resume(struct ath6kl *ar) in ath6kl_sdio_resume() argument
918 switch (ar->state) { in ath6kl_sdio_resume()
925 ath6kl_sdio_config(ar); in ath6kl_sdio_resume()
947 ath6kl_cfg80211_resume(ar); in ath6kl_sdio_resume()
953 static int ath6kl_set_addrwin_reg(struct ath6kl *ar, u32 reg_addr, u32 addr) in ath6kl_set_addrwin_reg() argument
976 status = ath6kl_sdio_read_write_sync(ar, reg_addr + i, addr_val, in ath6kl_set_addrwin_reg()
994 status = ath6kl_sdio_read_write_sync(ar, reg_addr, (u8 *)(&addr), in ath6kl_set_addrwin_reg()
1006 static int ath6kl_sdio_diag_read32(struct ath6kl *ar, u32 address, u32 *data) in ath6kl_sdio_diag_read32() argument
1011 status = ath6kl_set_addrwin_reg(ar, WINDOW_READ_ADDR_ADDRESS, in ath6kl_sdio_diag_read32()
1018 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS, in ath6kl_sdio_diag_read32()
1029 static int ath6kl_sdio_diag_write32(struct ath6kl *ar, u32 address, in ath6kl_sdio_diag_write32() argument
1036 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS, in ath6kl_sdio_diag_write32()
1045 return ath6kl_set_addrwin_reg(ar, WINDOW_WRITE_ADDR_ADDRESS, in ath6kl_sdio_diag_write32()
1049 static int ath6kl_sdio_bmi_credits(struct ath6kl *ar) in ath6kl_sdio_bmi_credits() argument
1055 ar->bmi.cmd_credits = 0; in ath6kl_sdio_bmi_credits()
1061 while (time_before(jiffies, timeout) && !ar->bmi.cmd_credits) { in ath6kl_sdio_bmi_credits()
1068 ret = ath6kl_sdio_read_write_sync(ar, addr, in ath6kl_sdio_bmi_credits()
1069 (u8 *)&ar->bmi.cmd_credits, 4, in ath6kl_sdio_bmi_credits()
1080 ar->bmi.cmd_credits &= 0xFF; in ath6kl_sdio_bmi_credits()
1083 if (!ar->bmi.cmd_credits) { in ath6kl_sdio_bmi_credits()
1091 static int ath6kl_bmi_get_rx_lkahd(struct ath6kl *ar) in ath6kl_bmi_get_rx_lkahd() argument
1099 ret = ath6kl_sdio_read_write_sync(ar, in ath6kl_bmi_get_rx_lkahd()
1120 static int ath6kl_sdio_bmi_write(struct ath6kl *ar, u8 *buf, u32 len) in ath6kl_sdio_bmi_write() argument
1125 ret = ath6kl_sdio_bmi_credits(ar); in ath6kl_sdio_bmi_write()
1129 addr = ar->mbox_info.htc_addr; in ath6kl_sdio_bmi_write()
1131 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len, in ath6kl_sdio_bmi_write()
1141 static int ath6kl_sdio_bmi_read(struct ath6kl *ar, u8 *buf, u32 len) in ath6kl_sdio_bmi_read() argument
1193 ret = ath6kl_bmi_get_rx_lkahd(ar); in ath6kl_sdio_bmi_read()
1198 addr = ar->mbox_info.htc_addr; in ath6kl_sdio_bmi_read()
1199 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len, in ath6kl_sdio_bmi_read()
1210 static void ath6kl_sdio_stop(struct ath6kl *ar) in ath6kl_sdio_stop() argument
1212 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); in ath6kl_sdio_stop()
1228 req->scat_req->complete(ar_sdio->ar->htc_target, in ath6kl_sdio_stop()
1299 struct ath6kl *ar; in ath6kl_sdio_probe() local
1339 ar = ath6kl_core_create(&ar_sdio->func->dev); in ath6kl_sdio_probe()
1340 if (!ar) { in ath6kl_sdio_probe()
1346 ar_sdio->ar = ar; in ath6kl_sdio_probe()
1347 ar->hif_type = ATH6KL_HIF_TYPE_SDIO; in ath6kl_sdio_probe()
1348 ar->hif_priv = ar_sdio; in ath6kl_sdio_probe()
1349 ar->hif_ops = &ath6kl_sdio_ops; in ath6kl_sdio_probe()
1350 ar->bmi.max_data_size = 256; in ath6kl_sdio_probe()
1352 ath6kl_sdio_set_mbox_info(ar); in ath6kl_sdio_probe()
1354 ret = ath6kl_sdio_config(ar); in ath6kl_sdio_probe()
1360 ret = ath6kl_core_init(ar, ATH6KL_HTC_TYPE_MBOX); in ath6kl_sdio_probe()
1369 ath6kl_core_destroy(ar_sdio->ar); in ath6kl_sdio_probe()
1388 ath6kl_stop_txrx(ar_sdio->ar); in ath6kl_sdio_remove()
1391 ath6kl_core_cleanup(ar_sdio->ar); in ath6kl_sdio_remove()
1392 ath6kl_core_destroy(ar_sdio->ar); in ath6kl_sdio_remove()