ar_sdio 29 drivers/net/wireless/ath/ath10k/sdio.c static inline int ath10k_sdio_calc_txrx_padded_len(struct ath10k_sdio *ar_sdio, ar_sdio 32 drivers/net/wireless/ath/ath10k/sdio.c return __ALIGN_MASK((len), ar_sdio->mbox_info.block_mask); ar_sdio 129 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 130 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 200 drivers/net/wireless/ath/ath10k/sdio.c ret = sdio_set_block_size(func, ar_sdio->mbox_info.block_size); ar_sdio 203 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_info.block_size, ret); ar_sdio 214 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 215 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 238 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 239 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 271 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 272 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 294 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 295 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 319 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 320 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 347 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 348 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 353 drivers/net/wireless/ath/ath10k/sdio.c len = round_down(len, ar_sdio->mbox_info.block_size); ar_sdio 416 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 425 drivers/net/wireless/ath/ath10k/sdio.c for (i = 0; i < ar_sdio->n_rx_pkts; i++) { ar_sdio 447 drivers/net/wireless/ath/ath10k/sdio.c pkt = &ar_sdio->rx_pkts[i]; ar_sdio 466 drivers/net/wireless/ath/ath10k/sdio.c ep->ep_ops.ep_rx_complete(ar_sdio->ar, pkt->skb); ar_sdio 481 drivers/net/wireless/ath/ath10k/sdio.c for (; i < ar_sdio->n_rx_pkts; i++) ar_sdio 482 drivers/net/wireless/ath/ath10k/sdio.c ath10k_sdio_mbox_free_rx_pkt(&ar_sdio->rx_pkts[i]); ar_sdio 527 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 557 drivers/net/wireless/ath/ath10k/sdio.c full_len = ath10k_sdio_calc_txrx_padded_len(ar_sdio, act_len); ar_sdio 576 drivers/net/wireless/ath/ath10k/sdio.c &ar_sdio->rx_pkts[i], ar_sdio 600 drivers/net/wireless/ath/ath10k/sdio.c ret = ath10k_sdio_mbox_alloc_rx_pkt(&ar_sdio->rx_pkts[i], ar_sdio 611 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->n_rx_pkts = i; ar_sdio 617 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->rx_pkts[i].alloc_len) ar_sdio 619 drivers/net/wireless/ath/ath10k/sdio.c ath10k_sdio_mbox_free_rx_pkt(&ar_sdio->rx_pkts[i]); ar_sdio 628 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 633 drivers/net/wireless/ath/ath10k/sdio.c ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr, ar_sdio 661 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 664 drivers/net/wireless/ath/ath10k/sdio.c for (i = 0; i < ar_sdio->n_rx_pkts; i++) { ar_sdio 666 drivers/net/wireless/ath/ath10k/sdio.c &ar_sdio->rx_pkts[i]); ar_sdio 675 drivers/net/wireless/ath/ath10k/sdio.c for (; i < ar_sdio->n_rx_pkts; i++) ar_sdio 676 drivers/net/wireless/ath/ath10k/sdio.c ath10k_sdio_mbox_free_rx_pkt(&ar_sdio->rx_pkts[i]); ar_sdio 691 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 714 drivers/net/wireless/ath/ath10k/sdio.c if (ar_sdio->n_rx_pkts >= 2) ar_sdio 770 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 771 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 795 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 796 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 841 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 842 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 886 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 887 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 1031 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1032 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_mbox_info *mbox_info = &ar_sdio->mbox_info; ar_sdio 1033 drivers/net/wireless/ath/ath10k/sdio.c u16 device = ar_sdio->func->device, dev_id_base, dev_id_chiprev; ar_sdio 1148 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1157 drivers/net/wireless/ath/ath10k/sdio.c addr = ar_sdio->mbox_info.htc_addr; ar_sdio 1159 drivers/net/wireless/ath/ath10k/sdio.c memcpy(ar_sdio->bmi_buf, req, req_len); ar_sdio 1160 drivers/net/wireless/ath/ath10k/sdio.c ret = ath10k_sdio_write(ar, addr, ar_sdio->bmi_buf, req_len); ar_sdio 1223 drivers/net/wireless/ath/ath10k/sdio.c addr = ar_sdio->mbox_info.htc_addr; ar_sdio 1224 drivers/net/wireless/ath/ath10k/sdio.c ret = ath10k_sdio_read(ar, addr, ar_sdio->bmi_buf, *resp_len); ar_sdio 1232 drivers/net/wireless/ath/ath10k/sdio.c memcpy(resp, ar_sdio->bmi_buf, *resp_len); ar_sdio 1242 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1245 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->lock); ar_sdio 1247 drivers/net/wireless/ath/ath10k/sdio.c if (list_empty(&ar_sdio->bus_req_freeq)) { ar_sdio 1252 drivers/net/wireless/ath/ath10k/sdio.c bus_req = list_first_entry(&ar_sdio->bus_req_freeq, ar_sdio 1257 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->lock); ar_sdio 1264 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1268 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->lock); ar_sdio 1269 drivers/net/wireless/ath/ath10k/sdio.c list_add_tail(&bus_req->list, &ar_sdio->bus_req_freeq); ar_sdio 1270 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->lock); ar_sdio 1298 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = container_of(work, struct ath10k_sdio, ar_sdio 1300 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k *ar = ar_sdio->ar; ar_sdio 1303 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 1305 drivers/net/wireless/ath/ath10k/sdio.c list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) { ar_sdio 1307 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 1309 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 1312 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 1320 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1339 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 1340 drivers/net/wireless/ath/ath10k/sdio.c list_add_tail(&bus_req->list, &ar_sdio->wr_asyncq); ar_sdio 1341 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 1350 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = sdio_get_drvdata(func); ar_sdio 1351 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k *ar = ar_sdio->ar; ar_sdio 1359 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1370 drivers/net/wireless/ath/ath10k/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 1381 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1382 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 1402 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1403 drivers/net/wireless/ath/ath10k/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 1406 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->is_disabled) ar_sdio 1433 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->is_disabled = false; ar_sdio 1444 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1447 drivers/net/wireless/ath/ath10k/sdio.c if (ar_sdio->is_disabled) ar_sdio 1453 drivers/net/wireless/ath/ath10k/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 1455 drivers/net/wireless/ath/ath10k/sdio.c ret = sdio_disable_func(ar_sdio->func); ar_sdio 1458 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1462 drivers/net/wireless/ath/ath10k/sdio.c ret = mmc_hw_reset(ar_sdio->func->card->host); ar_sdio 1466 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1468 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->is_disabled = true; ar_sdio 1474 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1486 drivers/net/wireless/ath/ath10k/sdio.c padded_len = ath10k_sdio_calc_txrx_padded_len(ar_sdio, ar_sdio 1491 drivers/net/wireless/ath/ath10k/sdio.c address = ar_sdio->mbox_addr[eid] + ar_sdio->mbox_size[eid] - ar_sdio 1499 drivers/net/wireless/ath/ath10k/sdio.c queue_work(ar_sdio->workqueue, &ar_sdio->wr_async_work); ar_sdio 1506 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1507 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 1652 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1667 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->swap_mbox = true; ar_sdio 1671 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->swap_mbox = false; ar_sdio 1681 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1696 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_addr[0] = ar_sdio->mbox_info.ext_info[0].htc_ext_addr; ar_sdio 1697 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_size[0] = ar_sdio->mbox_info.ext_info[0].htc_ext_sz; ar_sdio 1699 drivers/net/wireless/ath/ath10k/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 1702 drivers/net/wireless/ath/ath10k/sdio.c ret = sdio_claim_irq(ar_sdio->func, ath10k_sdio_irq_handler); ar_sdio 1705 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1709 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1734 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1735 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio_irq_data *irq_data = &ar_sdio->irq_data; ar_sdio 1759 drivers/net/wireless/ath/ath10k/sdio.c queue_work(ar_sdio->workqueue, &ar_sdio->wr_async_work); ar_sdio 1769 drivers/net/wireless/ath/ath10k/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 1771 drivers/net/wireless/ath/ath10k/sdio.c ret = sdio_release_irq(ar_sdio->func); ar_sdio 1775 drivers/net/wireless/ath/ath10k/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 1784 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1788 drivers/net/wireless/ath/ath10k/sdio.c cancel_work_sync(&ar_sdio->wr_async_work); ar_sdio 1790 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 1793 drivers/net/wireless/ath/ath10k/sdio.c list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) { ar_sdio 1807 drivers/net/wireless/ath/ath10k/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 1841 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar); ar_sdio 1874 drivers/net/wireless/ath/ath10k/sdio.c if (ar_sdio->swap_mbox) { ar_sdio 1875 drivers/net/wireless/ath/ath10k/sdio.c htt_addr = ar_sdio->mbox_info.ext_info[0].htc_ext_addr; ar_sdio 1876 drivers/net/wireless/ath/ath10k/sdio.c wmi_addr = ar_sdio->mbox_info.ext_info[1].htc_ext_addr; ar_sdio 1877 drivers/net/wireless/ath/ath10k/sdio.c htt_mbox_size = ar_sdio->mbox_info.ext_info[0].htc_ext_sz; ar_sdio 1878 drivers/net/wireless/ath/ath10k/sdio.c wmi_mbox_size = ar_sdio->mbox_info.ext_info[1].htc_ext_sz; ar_sdio 1880 drivers/net/wireless/ath/ath10k/sdio.c htt_addr = ar_sdio->mbox_info.ext_info[1].htc_ext_addr; ar_sdio 1881 drivers/net/wireless/ath/ath10k/sdio.c wmi_addr = ar_sdio->mbox_info.ext_info[0].htc_ext_addr; ar_sdio 1882 drivers/net/wireless/ath/ath10k/sdio.c htt_mbox_size = ar_sdio->mbox_info.ext_info[1].htc_ext_sz; ar_sdio 1883 drivers/net/wireless/ath/ath10k/sdio.c wmi_mbox_size = ar_sdio->mbox_info.ext_info[0].htc_ext_sz; ar_sdio 1893 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_addr[eid] = wmi_addr; ar_sdio 1894 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_size[eid] = wmi_mbox_size; ar_sdio 1897 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_addr[eid], ar_sdio->mbox_size[eid]); ar_sdio 1900 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_addr[eid] = htt_addr; ar_sdio 1901 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_size[eid] = htt_mbox_size; ar_sdio 1904 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->mbox_addr[eid], ar_sdio->mbox_size[eid]); ar_sdio 1986 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio; ar_sdio 2001 drivers/net/wireless/ath/ath10k/sdio.c ar = ath10k_core_create(sizeof(*ar_sdio), &func->dev, ATH10K_BUS_SDIO, ar_sdio 2013 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio = ath10k_sdio_priv(ar); ar_sdio 2015 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->irq_data.irq_proc_reg = ar_sdio 2018 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->irq_data.irq_proc_reg) { ar_sdio 2023 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->irq_data.irq_en_reg = ar_sdio 2026 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->irq_data.irq_en_reg) { ar_sdio 2031 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->bmi_buf = devm_kzalloc(ar->dev, BMI_MAX_CMDBUF_SIZE, GFP_KERNEL); ar_sdio 2032 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->bmi_buf) { ar_sdio 2037 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->func = func; ar_sdio 2038 drivers/net/wireless/ath/ath10k/sdio.c sdio_set_drvdata(func, ar_sdio); ar_sdio 2040 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->is_disabled = true; ar_sdio 2041 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->ar = ar; ar_sdio 2043 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_init(&ar_sdio->lock); ar_sdio 2044 drivers/net/wireless/ath/ath10k/sdio.c spin_lock_init(&ar_sdio->wr_async_lock); ar_sdio 2045 drivers/net/wireless/ath/ath10k/sdio.c mutex_init(&ar_sdio->irq_data.mtx); ar_sdio 2047 drivers/net/wireless/ath/ath10k/sdio.c INIT_LIST_HEAD(&ar_sdio->bus_req_freeq); ar_sdio 2048 drivers/net/wireless/ath/ath10k/sdio.c INIT_LIST_HEAD(&ar_sdio->wr_asyncq); ar_sdio 2050 drivers/net/wireless/ath/ath10k/sdio.c INIT_WORK(&ar_sdio->wr_async_work, ath10k_sdio_write_async_work); ar_sdio 2051 drivers/net/wireless/ath/ath10k/sdio.c ar_sdio->workqueue = create_singlethread_workqueue("ath10k_sdio_wq"); ar_sdio 2052 drivers/net/wireless/ath/ath10k/sdio.c if (!ar_sdio->workqueue) { ar_sdio 2058 drivers/net/wireless/ath/ath10k/sdio.c ath10k_sdio_free_bus_req(ar, &ar_sdio->bus_req[i]); ar_sdio 2095 drivers/net/wireless/ath/ath10k/sdio.c destroy_workqueue(ar_sdio->workqueue); ar_sdio 2104 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k_sdio *ar_sdio = sdio_get_drvdata(func); ar_sdio 2105 drivers/net/wireless/ath/ath10k/sdio.c struct ath10k *ar = ar_sdio->ar; ar_sdio 2114 drivers/net/wireless/ath/ath10k/sdio.c flush_workqueue(ar_sdio->workqueue); ar_sdio 2115 drivers/net/wireless/ath/ath10k/sdio.c destroy_workqueue(ar_sdio->workqueue); ar_sdio 190 drivers/net/wireless/ath/ath6kl/sdio.c static struct bus_request *ath6kl_sdio_alloc_busreq(struct ath6kl_sdio *ar_sdio) ar_sdio 194 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->lock); ar_sdio 196 drivers/net/wireless/ath/ath6kl/sdio.c if (list_empty(&ar_sdio->bus_req_freeq)) { ar_sdio 197 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->lock); ar_sdio 201 drivers/net/wireless/ath/ath6kl/sdio.c bus_req = list_first_entry(&ar_sdio->bus_req_freeq, ar_sdio 205 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->lock); ar_sdio 212 drivers/net/wireless/ath/ath6kl/sdio.c static void ath6kl_sdio_free_bus_req(struct ath6kl_sdio *ar_sdio, ar_sdio 218 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->lock); ar_sdio 219 drivers/net/wireless/ath/ath6kl/sdio.c list_add_tail(&bus_req->list, &ar_sdio->bus_req_freeq); ar_sdio 220 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->lock); ar_sdio 260 drivers/net/wireless/ath/ath6kl/sdio.c static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio, ar_sdio 277 drivers/net/wireless/ath/ath6kl/sdio.c status = ath6kl_sdio_io(ar_sdio->func, scat_req->req, ar_sdio 304 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_set_cmd53_arg(&cmd.arg, rw, ar_sdio->func->num, ar_sdio 314 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 316 drivers/net/wireless/ath/ath6kl/sdio.c mmc_set_data_timeout(&data, ar_sdio->func->card); ar_sdio 325 drivers/net/wireless/ath/ath6kl/sdio.c mmc_wait_for_req(ar_sdio->func->card->host, &mmc_req); ar_sdio 327 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 339 drivers/net/wireless/ath/ath6kl/sdio.c scat_req->complete(ar_sdio->ar->htc_target, scat_req); ar_sdio 344 drivers/net/wireless/ath/ath6kl/sdio.c static int ath6kl_sdio_alloc_prep_scat_req(struct ath6kl_sdio *ar_sdio, ar_sdio 388 drivers/net/wireless/ath/ath6kl/sdio.c bus_req = ath6kl_sdio_alloc_busreq(ar_sdio); ar_sdio 403 drivers/net/wireless/ath/ath6kl/sdio.c hif_scatter_req_add(ar_sdio->ar, s_req); ar_sdio 412 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 421 drivers/net/wireless/ath/ath6kl/sdio.c if (!ar_sdio->dma_buffer) ar_sdio 423 drivers/net/wireless/ath/ath6kl/sdio.c mutex_lock(&ar_sdio->dma_buffer_mutex); ar_sdio 424 drivers/net/wireless/ath/ath6kl/sdio.c tbuf = ar_sdio->dma_buffer; ar_sdio 434 drivers/net/wireless/ath/ath6kl/sdio.c ret = ath6kl_sdio_io(ar_sdio->func, request, addr, tbuf, len); ar_sdio 439 drivers/net/wireless/ath/ath6kl/sdio.c mutex_unlock(&ar_sdio->dma_buffer_mutex); ar_sdio 444 drivers/net/wireless/ath/ath6kl/sdio.c static void __ath6kl_sdio_write_async(struct ath6kl_sdio *ar_sdio, ar_sdio 448 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_scat_rw(ar_sdio, req); ar_sdio 453 drivers/net/wireless/ath/ath6kl/sdio.c status = ath6kl_sdio_read_write_sync(ar_sdio->ar, req->address, ar_sdio 457 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_free_bus_req(ar_sdio, req); ar_sdio 464 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio; ar_sdio 467 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio = container_of(work, struct ath6kl_sdio, wr_async_work); ar_sdio 469 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 470 drivers/net/wireless/ath/ath6kl/sdio.c list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) { ar_sdio 472 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 473 drivers/net/wireless/ath/ath6kl/sdio.c __ath6kl_sdio_write_async(ar_sdio, req); ar_sdio 474 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 476 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 482 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio; ar_sdio 486 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio = sdio_get_drvdata(func); ar_sdio 487 drivers/net/wireless/ath/ath6kl/sdio.c atomic_set(&ar_sdio->irq_handling, 1); ar_sdio 492 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 494 drivers/net/wireless/ath/ath6kl/sdio.c status = ath6kl_hif_intr_bh_handler(ar_sdio->ar); ar_sdio 495 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 497 drivers/net/wireless/ath/ath6kl/sdio.c atomic_set(&ar_sdio->irq_handling, 0); ar_sdio 498 drivers/net/wireless/ath/ath6kl/sdio.c wake_up(&ar_sdio->irq_wq); ar_sdio 505 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 506 drivers/net/wireless/ath/ath6kl/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 509 drivers/net/wireless/ath/ath6kl/sdio.c if (!ar_sdio->is_disabled) ar_sdio 537 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->is_disabled = false; ar_sdio 545 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 548 drivers/net/wireless/ath/ath6kl/sdio.c if (ar_sdio->is_disabled) ar_sdio 554 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 555 drivers/net/wireless/ath/ath6kl/sdio.c ret = sdio_disable_func(ar_sdio->func); ar_sdio 556 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 561 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->is_disabled = true; ar_sdio 570 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 573 drivers/net/wireless/ath/ath6kl/sdio.c bus_req = ath6kl_sdio_alloc_busreq(ar_sdio); ar_sdio 584 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 585 drivers/net/wireless/ath/ath6kl/sdio.c list_add_tail(&bus_req->list, &ar_sdio->wr_asyncq); ar_sdio 586 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 587 drivers/net/wireless/ath/ath6kl/sdio.c queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); ar_sdio 594 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 597 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 600 drivers/net/wireless/ath/ath6kl/sdio.c ret = sdio_claim_irq(ar_sdio->func, ath6kl_sdio_irq_handler); ar_sdio 604 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 609 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 611 drivers/net/wireless/ath/ath6kl/sdio.c return !atomic_read(&ar_sdio->irq_handling); ar_sdio 616 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 619 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 621 drivers/net/wireless/ath/ath6kl/sdio.c if (atomic_read(&ar_sdio->irq_handling)) { ar_sdio 622 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 624 drivers/net/wireless/ath/ath6kl/sdio.c ret = wait_event_interruptible(ar_sdio->irq_wq, ar_sdio 629 drivers/net/wireless/ath/ath6kl/sdio.c sdio_claim_host(ar_sdio->func); ar_sdio 632 drivers/net/wireless/ath/ath6kl/sdio.c ret = sdio_release_irq(ar_sdio->func); ar_sdio 636 drivers/net/wireless/ath/ath6kl/sdio.c sdio_release_host(ar_sdio->func); ar_sdio 641 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 644 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->scat_lock); ar_sdio 646 drivers/net/wireless/ath/ath6kl/sdio.c if (!list_empty(&ar_sdio->scat_req)) { ar_sdio 647 drivers/net/wireless/ath/ath6kl/sdio.c node = list_first_entry(&ar_sdio->scat_req, ar_sdio 651 drivers/net/wireless/ath/ath6kl/sdio.c node->scat_q_depth = get_queue_depth(&ar_sdio->scat_req); ar_sdio 654 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->scat_lock); ar_sdio 662 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 664 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->scat_lock); ar_sdio 666 drivers/net/wireless/ath/ath6kl/sdio.c list_add_tail(&s_req->list, &ar_sdio->scat_req); ar_sdio 668 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->scat_lock); ar_sdio 675 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 687 drivers/net/wireless/ath/ath6kl/sdio.c status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest); ar_sdio 689 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 690 drivers/net/wireless/ath/ath6kl/sdio.c list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq); ar_sdio 691 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 692 drivers/net/wireless/ath/ath6kl/sdio.c queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work); ar_sdio 701 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 705 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->scat_lock); ar_sdio 706 drivers/net/wireless/ath/ath6kl/sdio.c list_for_each_entry_safe(s_req, tmp_req, &ar_sdio->scat_req, list) { ar_sdio 708 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->scat_lock); ar_sdio 717 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_free_bus_req(ar_sdio, s_req->busrequest); ar_sdio 723 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->scat_lock); ar_sdio 725 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->scat_lock); ar_sdio 727 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->scatter_enabled = false; ar_sdio 733 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 738 drivers/net/wireless/ath/ath6kl/sdio.c if (ar_sdio->scatter_enabled) ar_sdio 741 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->scatter_enabled = true; ar_sdio 744 drivers/net/wireless/ath/ath6kl/sdio.c if (ar_sdio->func->card->host->max_segs < MAX_SCATTER_ENTRIES_PER_REQ) { ar_sdio 746 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->func->card->host->max_segs, ar_sdio 752 drivers/net/wireless/ath/ath6kl/sdio.c ret = ath6kl_sdio_alloc_prep_scat_req(ar_sdio, ar_sdio 772 drivers/net/wireless/ath/ath6kl/sdio.c ret = ath6kl_sdio_alloc_prep_scat_req(ar_sdio, ar_sdio 796 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 797 drivers/net/wireless/ath/ath6kl/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 802 drivers/net/wireless/ath/ath6kl/sdio.c if ((ar_sdio->id->device & MANUFACTURER_ID_ATH6KL_BASE_MASK) >= ar_sdio 835 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 836 drivers/net/wireless/ath/ath6kl/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 864 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 865 drivers/net/wireless/ath/ath6kl/sdio.c struct sdio_func *func = ar_sdio->func; ar_sdio 1225 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar); ar_sdio 1231 drivers/net/wireless/ath/ath6kl/sdio.c cancel_work_sync(&ar_sdio->wr_async_work); ar_sdio 1233 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_bh(&ar_sdio->wr_async_lock); ar_sdio 1235 drivers/net/wireless/ath/ath6kl/sdio.c list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) { ar_sdio 1241 drivers/net/wireless/ath/ath6kl/sdio.c req->scat_req->complete(ar_sdio->ar->htc_target, ar_sdio 1245 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_free_bus_req(ar_sdio, req); ar_sdio 1250 drivers/net/wireless/ath/ath6kl/sdio.c spin_unlock_bh(&ar_sdio->wr_async_lock); ar_sdio 1252 drivers/net/wireless/ath/ath6kl/sdio.c WARN_ON(get_queue_depth(&ar_sdio->scat_req) != 4); ar_sdio 1311 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio; ar_sdio 1320 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio = kzalloc(sizeof(struct ath6kl_sdio), GFP_KERNEL); ar_sdio 1321 drivers/net/wireless/ath/ath6kl/sdio.c if (!ar_sdio) ar_sdio 1324 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->dma_buffer = kzalloc(HIF_DMA_BUFFER_SIZE, GFP_KERNEL); ar_sdio 1325 drivers/net/wireless/ath/ath6kl/sdio.c if (!ar_sdio->dma_buffer) { ar_sdio 1330 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->func = func; ar_sdio 1331 drivers/net/wireless/ath/ath6kl/sdio.c sdio_set_drvdata(func, ar_sdio); ar_sdio 1333 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->id = id; ar_sdio 1334 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->is_disabled = true; ar_sdio 1336 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_init(&ar_sdio->lock); ar_sdio 1337 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_init(&ar_sdio->scat_lock); ar_sdio 1338 drivers/net/wireless/ath/ath6kl/sdio.c spin_lock_init(&ar_sdio->wr_async_lock); ar_sdio 1339 drivers/net/wireless/ath/ath6kl/sdio.c mutex_init(&ar_sdio->dma_buffer_mutex); ar_sdio 1341 drivers/net/wireless/ath/ath6kl/sdio.c INIT_LIST_HEAD(&ar_sdio->scat_req); ar_sdio 1342 drivers/net/wireless/ath/ath6kl/sdio.c INIT_LIST_HEAD(&ar_sdio->bus_req_freeq); ar_sdio 1343 drivers/net/wireless/ath/ath6kl/sdio.c INIT_LIST_HEAD(&ar_sdio->wr_asyncq); ar_sdio 1345 drivers/net/wireless/ath/ath6kl/sdio.c INIT_WORK(&ar_sdio->wr_async_work, ath6kl_sdio_write_async_work); ar_sdio 1347 drivers/net/wireless/ath/ath6kl/sdio.c init_waitqueue_head(&ar_sdio->irq_wq); ar_sdio 1350 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_sdio_free_bus_req(ar_sdio, &ar_sdio->bus_req[count]); ar_sdio 1352 drivers/net/wireless/ath/ath6kl/sdio.c ar = ath6kl_core_create(&ar_sdio->func->dev); ar_sdio 1359 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio->ar = ar; ar_sdio 1361 drivers/net/wireless/ath/ath6kl/sdio.c ar->hif_priv = ar_sdio; ar_sdio 1382 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_core_destroy(ar_sdio->ar); ar_sdio 1384 drivers/net/wireless/ath/ath6kl/sdio.c kfree(ar_sdio->dma_buffer); ar_sdio 1386 drivers/net/wireless/ath/ath6kl/sdio.c kfree(ar_sdio); ar_sdio 1393 drivers/net/wireless/ath/ath6kl/sdio.c struct ath6kl_sdio *ar_sdio; ar_sdio 1399 drivers/net/wireless/ath/ath6kl/sdio.c ar_sdio = sdio_get_drvdata(func); ar_sdio 1401 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_stop_txrx(ar_sdio->ar); ar_sdio 1402 drivers/net/wireless/ath/ath6kl/sdio.c cancel_work_sync(&ar_sdio->wr_async_work); ar_sdio 1404 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_core_cleanup(ar_sdio->ar); ar_sdio 1405 drivers/net/wireless/ath/ath6kl/sdio.c ath6kl_core_destroy(ar_sdio->ar); ar_sdio 1407 drivers/net/wireless/ath/ath6kl/sdio.c kfree(ar_sdio->dma_buffer); ar_sdio 1408 drivers/net/wireless/ath/ath6kl/sdio.c kfree(ar_sdio);