Lines Matching defs:ar

45 	struct ath6kl *ar;
78 static int ath6kl_sdio_config(struct ath6kl *ar);
80 static inline struct ath6kl_sdio *ath6kl_sdio_priv(struct ath6kl *ar)
82 return ar->hif_priv;
96 static void ath6kl_sdio_set_mbox_info(struct ath6kl *ar)
98 struct ath6kl_mbox_info *mbox_info = &ar->mbox_info;
339 scat_req->complete(ar_sdio->ar->htc_target, scat_req);
403 hif_scatter_req_add(ar_sdio->ar, s_req);
409 static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf,
412 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
453 status = ath6kl_sdio_read_write_sync(ar_sdio->ar, req->address,
494 status = ath6kl_hif_intr_bh_handler(ar_sdio->ar);
503 static int ath6kl_sdio_power_on(struct ath6kl *ar)
505 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
531 ret = ath6kl_sdio_config(ar);
543 static int ath6kl_sdio_power_off(struct ath6kl *ar)
545 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
566 static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer,
570 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
587 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work);
592 static void ath6kl_sdio_irq_enable(struct ath6kl *ar)
594 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
607 static bool ath6kl_sdio_is_on_irq(struct ath6kl *ar)
609 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
614 static void ath6kl_sdio_irq_disable(struct ath6kl *ar)
616 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
625 ath6kl_sdio_is_on_irq(ar));
639 static struct hif_scatter_req *ath6kl_sdio_scatter_req_get(struct ath6kl *ar)
641 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
659 static void ath6kl_sdio_scatter_req_add(struct ath6kl *ar,
662 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
672 static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
675 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
692 queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work);
699 static void ath6kl_sdio_cleanup_scatter(struct ath6kl *ar)
701 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
731 static int ath6kl_sdio_enable_scatter(struct ath6kl *ar)
733 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
734 struct htc_target *target = ar->htc_target;
766 ath6kl_sdio_cleanup_scatter(ar);
778 ath6kl_sdio_cleanup_scatter(ar);
794 static int ath6kl_sdio_config(struct ath6kl *ar)
796 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
832 static int ath6kl_set_sdio_pm_caps(struct ath6kl *ar)
834 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
861 static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
863 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
869 if (ar->suspend_mode == WLAN_POWER_STATE_WOW ||
870 (!ar->suspend_mode && wow)) {
871 ret = ath6kl_set_sdio_pm_caps(ar);
875 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_WOW, wow);
880 (!ar->wow_suspend_mode ||
881 ar->wow_suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP))
884 ar->wow_suspend_mode == WLAN_POWER_STATE_CUT_PWR)
890 if (ar->suspend_mode == WLAN_POWER_STATE_DEEP_SLEEP ||
891 !ar->suspend_mode || try_deepsleep) {
913 ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP,
925 return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER, NULL);
928 static int ath6kl_sdio_resume(struct ath6kl *ar)
930 switch (ar->state) {
937 ath6kl_sdio_config(ar);
959 ath6kl_cfg80211_resume(ar);
965 static int ath6kl_set_addrwin_reg(struct ath6kl *ar, u32 reg_addr, u32 addr)
988 status = ath6kl_sdio_read_write_sync(ar, reg_addr + i, addr_val,
1006 status = ath6kl_sdio_read_write_sync(ar, reg_addr, (u8 *)(&addr),
1018 static int ath6kl_sdio_diag_read32(struct ath6kl *ar, u32 address, u32 *data)
1023 status = ath6kl_set_addrwin_reg(ar, WINDOW_READ_ADDR_ADDRESS,
1030 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS,
1041 static int ath6kl_sdio_diag_write32(struct ath6kl *ar, u32 address,
1048 status = ath6kl_sdio_read_write_sync(ar, WINDOW_DATA_ADDRESS,
1057 return ath6kl_set_addrwin_reg(ar, WINDOW_WRITE_ADDR_ADDRESS,
1061 static int ath6kl_sdio_bmi_credits(struct ath6kl *ar)
1067 ar->bmi.cmd_credits = 0;
1073 while (time_before(jiffies, timeout) && !ar->bmi.cmd_credits) {
1080 ret = ath6kl_sdio_read_write_sync(ar, addr,
1081 (u8 *)&ar->bmi.cmd_credits, 4,
1092 ar->bmi.cmd_credits &= 0xFF;
1095 if (!ar->bmi.cmd_credits) {
1103 static int ath6kl_bmi_get_rx_lkahd(struct ath6kl *ar)
1111 ret = ath6kl_sdio_read_write_sync(ar,
1132 static int ath6kl_sdio_bmi_write(struct ath6kl *ar, u8 *buf, u32 len)
1137 ret = ath6kl_sdio_bmi_credits(ar);
1141 addr = ar->mbox_info.htc_addr;
1143 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len,
1153 static int ath6kl_sdio_bmi_read(struct ath6kl *ar, u8 *buf, u32 len)
1205 ret = ath6kl_bmi_get_rx_lkahd(ar);
1210 addr = ar->mbox_info.htc_addr;
1211 ret = ath6kl_sdio_read_write_sync(ar, addr, buf, len,
1222 static void ath6kl_sdio_stop(struct ath6kl *ar)
1224 struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
1240 req->scat_req->complete(ar_sdio->ar->htc_target,
1311 struct ath6kl *ar;
1351 ar = ath6kl_core_create(&ar_sdio->func->dev);
1352 if (!ar) {
1358 ar_sdio->ar = ar;
1359 ar->hif_type = ATH6KL_HIF_TYPE_SDIO;
1360 ar->hif_priv = ar_sdio;
1361 ar->hif_ops = &ath6kl_sdio_ops;
1362 ar->bmi.max_data_size = 256;
1364 ath6kl_sdio_set_mbox_info(ar);
1366 ret = ath6kl_sdio_config(ar);
1372 ret = ath6kl_core_init(ar, ATH6KL_HTC_TYPE_MBOX);
1381 ath6kl_core_destroy(ar_sdio->ar);
1400 ath6kl_stop_txrx(ar_sdio->ar);
1403 ath6kl_core_cleanup(ar_sdio->ar);
1404 ath6kl_core_destroy(ar_sdio->ar);