Lines Matching refs:ar

29 void ath10k_sdio_fw_crashed_dump(struct ath10k *ar);
133 static int ath10k_sdio_config(struct ath10k *ar)
135 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
140 ath10k_dbg(ar, ATH10K_DBG_BOOT, "sdio configuration\n");
171 ath10k_warn(ar, "failed to enable driver strength: %d\n", ret);
186 ath10k_warn(ar, "failed to enable 4-bit async irq mode: %d\n",
208 ath10k_warn(ar, "failed to set sdio block size to %d: %d\n",
218 static int ath10k_sdio_write32(struct ath10k *ar, u32 addr, u32 val)
220 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
228 ath10k_warn(ar, "failed to write 0x%x to address 0x%x: %d\n",
233 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio write32 addr 0x%x val 0x%x\n",
242 static int ath10k_sdio_writesb32(struct ath10k *ar, u32 addr, u32 val)
244 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
259 ath10k_warn(ar, "failed to write value 0x%x to fixed sb address 0x%x: %d\n",
264 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio writesb32 addr 0x%x val 0x%x\n",
275 static int ath10k_sdio_read32(struct ath10k *ar, u32 addr, u32 *val)
277 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
284 ath10k_warn(ar, "failed to read from address 0x%x: %d\n",
289 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio read32 addr 0x%x val 0x%x\n",
298 static int ath10k_sdio_read(struct ath10k *ar, u32 addr, void *buf, size_t len)
300 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
308 ath10k_warn(ar, "failed to read from address 0x%x: %d\n",
313 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio read addr 0x%x buf 0x%p len %zu\n",
315 ath10k_dbg_dump(ar, ATH10K_DBG_SDIO_DUMP, NULL, "sdio read ", buf, len);
323 static int ath10k_sdio_write(struct ath10k *ar, u32 addr, const void *buf, size_t len)
325 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
336 ath10k_warn(ar, "failed to write to address 0x%x: %d\n",
341 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio write addr 0x%x buf 0x%p len %zu\n",
343 ath10k_dbg_dump(ar, ATH10K_DBG_SDIO_DUMP, NULL, "sdio write ", buf, len);
351 static int ath10k_sdio_readsb(struct ath10k *ar, u32 addr, void *buf, size_t len)
353 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
363 ath10k_warn(ar, "failed to read from fixed (sb) address 0x%x: %d\n",
368 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio readsb addr 0x%x buf 0x%p len %zu\n",
370 ath10k_dbg_dump(ar, ATH10K_DBG_SDIO_DUMP, NULL, "sdio readsb ", buf, len);
380 static int ath10k_sdio_mbox_rx_process_packet(struct ath10k *ar,
385 struct ath10k_htc *htc = &ar->htc;
418 static int ath10k_sdio_mbox_rx_process_packets(struct ath10k *ar,
422 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
423 struct ath10k_htc *htc = &ar->htc;
440 ath10k_warn(ar, "invalid endpoint in look-ahead: %d\n",
449 ath10k_warn(ar, "ep %d is not connected\n", id);
465 ret = ath10k_sdio_mbox_rx_process_packet(ar,
477 queue_work(ar->workqueue_aux,
500 static int ath10k_sdio_mbox_alloc_bundle(struct ath10k *ar,
507 u8 max_msgs = ar->htc.max_msgs_per_htc_bundle;
512 ath10k_warn(ar,
538 static int ath10k_sdio_mbox_rx_alloc(struct ath10k *ar,
541 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
549 ath10k_warn(ar, "the total number of pkts to be fetched (%u) exceeds maximum %u\n",
560 ath10k_warn(ar, "payload length %d exceeds max htc length: %zu\n",
565 ath10k_core_start_recovery(ar);
566 ath10k_warn(ar, "exceeds length, start recovery\n");
575 ath10k_warn(ar, "rx buffer requested with invalid htc_hdr length (%d, 0x%x): %d\n",
583 ar->htc.max_msgs_per_htc_bundle, htc_hdr->flags)) {
590 ret = ath10k_sdio_mbox_alloc_bundle(ar,
598 ath10k_warn(ar, "failed to allocate a bundle: %d\n",
622 ath10k_warn(ar, "alloc_rx_pkt error %d\n", ret);
643 static int ath10k_sdio_mbox_rx_fetch(struct ath10k *ar)
645 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
651 ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr,
674 static int ath10k_sdio_mbox_rx_fetch_bundle(struct ath10k *ar)
676 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
687 ath10k_warn(ar, "sdio vsg buffer size limit: %d\n", virt_pkt_len);
692 ret = ath10k_sdio_readsb(ar, ar_sdio->mbox_info.htc_addr,
695 ath10k_warn(ar, "failed to read bundle packets: %d", ret);
733 static int ath10k_sdio_mbox_rxmsg_pending_handler(struct ath10k *ar,
736 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
754 ret = ath10k_sdio_mbox_rx_alloc(ar, lookaheads,
766 ret = ath10k_sdio_mbox_rx_fetch_bundle(ar);
768 ret = ath10k_sdio_mbox_rx_fetch(ar);
775 ret = ath10k_sdio_mbox_rx_process_packets(ar,
792 ath10k_warn(ar, "failed to get pending recv messages: %d\n",
798 static int ath10k_sdio_mbox_proc_dbg_intr(struct ath10k *ar)
804 ath10k_warn(ar, "firmware crashed\n");
809 ret = ath10k_sdio_read32(ar, MBOX_COUNT_DEC_ADDRESS, &val);
811 ath10k_warn(ar, "failed to clear debug interrupt: %d\n", ret);
816 static int ath10k_sdio_mbox_proc_counter_intr(struct ath10k *ar)
818 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
832 ret = ath10k_sdio_mbox_proc_dbg_intr(ar);
841 static int ath10k_sdio_mbox_proc_err_intr(struct ath10k *ar)
843 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
848 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio error interrupt\n");
852 ath10k_warn(ar, "invalid error interrupt status: 0x%x\n",
857 ath10k_dbg(ar, ATH10K_DBG_SDIO,
862 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio interrupt error wakeup\n");
866 ath10k_warn(ar, "rx underflow interrupt error\n");
870 ath10k_warn(ar, "tx overflow interrupt error\n");
876 ret = ath10k_sdio_writesb32(ar, MBOX_ERROR_INT_STATUS_ADDRESS,
879 ath10k_warn(ar, "unable to write to error int status address: %d\n",
887 static int ath10k_sdio_mbox_proc_cpu_intr(struct ath10k *ar)
889 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
898 ath10k_warn(ar, "CPU interrupt status is zero\n");
913 ret = ath10k_sdio_writesb32(ar, MBOX_CPU_INT_STATUS_ADDRESS,
916 ath10k_warn(ar, "unable to write to cpu interrupt status address: %d\n",
924 ath10k_sdio_fw_crashed_dump(ar);
929 static int ath10k_sdio_mbox_read_int_status(struct ath10k *ar,
933 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
961 ret = ath10k_sdio_read(ar, MBOX_HOST_INT_STATUS_ADDRESS,
964 ath10k_core_start_recovery(ar);
965 ath10k_warn(ar, "read int status fail, start recovery\n");
988 ath10k_warn(ar, "sdio mbox lookahead is zero\n");
996 static int ath10k_sdio_mbox_proc_pending_irqs(struct ath10k *ar,
1009 ret = ath10k_sdio_mbox_read_int_status(ar,
1024 ath10k_dbg(ar, ATH10K_DBG_SDIO,
1028 ret = ath10k_sdio_mbox_rxmsg_pending_handler(ar,
1036 ath10k_dbg(ar, ATH10K_DBG_SDIO,
1041 ret = ath10k_sdio_mbox_proc_cpu_intr(ar);
1048 ret = ath10k_sdio_mbox_proc_err_intr(ar);
1055 ret = ath10k_sdio_mbox_proc_counter_intr(ar);
1072 ath10k_dbg(ar, ATH10K_DBG_SDIO,
1079 static void ath10k_sdio_set_mbox_info(struct ath10k *ar)
1081 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1125 static int ath10k_sdio_bmi_credits(struct ath10k *ar)
1142 ret = ath10k_sdio_read32(ar, addr, &cmd_credits);
1144 ath10k_warn(ar,
1157 ath10k_warn(ar, "bmi communication timeout\n");
1164 static int ath10k_sdio_bmi_get_rx_lookahead(struct ath10k *ar)
1174 ret = ath10k_sdio_read32(ar,
1178 ath10k_warn(ar, "unable to read RX_LOOKAHEAD_VALID: %d\n", ret);
1187 ath10k_warn(ar, "bmi_recv_buf FIFO empty\n");
1194 static int ath10k_sdio_bmi_exchange_msg(struct ath10k *ar,
1198 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1203 ret = ath10k_sdio_bmi_credits(ar);
1210 ret = ath10k_sdio_write(ar, addr, ar_sdio->bmi_buf, req_len);
1212 ath10k_warn(ar,
1268 ret = ath10k_sdio_bmi_get_rx_lookahead(ar);
1274 ret = ath10k_sdio_read(ar, addr, ar_sdio->bmi_buf, *resp_len);
1276 ath10k_warn(ar,
1290 *ath10k_sdio_alloc_busreq(struct ath10k *ar)
1292 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1311 static void ath10k_sdio_free_bus_req(struct ath10k *ar,
1314 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1323 static void __ath10k_sdio_write_async(struct ath10k *ar,
1331 ret = ath10k_sdio_write(ar, req->address, skb->data, skb->len);
1333 ath10k_warn(ar, "failed to write skb to 0x%x asynchronously: %d",
1337 ep = &ar->htc.endpoint[req->eid];
1343 ath10k_sdio_free_bus_req(ar, req);
1353 struct ath10k *ar = ar_sdio->ar;
1363 ep = &ar->htc.endpoint[cb->eid];
1364 ep->ep_ops.ep_rx_complete(ar, skb);
1367 if (test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) {
1369 napi_schedule(&ar->napi);
1376 struct ath10k *ar = ar_sdio->ar;
1382 ath10k_warn(ar, "failed to read rtc state: %d\n", ret);
1391 static int ath10k_sdio_set_mbox_sleep(struct ath10k *ar, bool enable_sleep)
1393 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1400 ret = ath10k_sdio_read32(ar, ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL, &val);
1402 ath10k_warn(ar, "failed to read fifo/chip control register: %d\n",
1415 ret = ath10k_sdio_write32(ar, ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL, val);
1417 ath10k_warn(ar, "failed to write to FIFO_TIMEOUT_AND_CHIP_CONTROL: %d",
1427 ath10k_warn(ar, "failed to disable mbox sleep: %d", ret);
1431 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio read rtc state: %d\n",
1460 struct ath10k *ar = ar_sdio->ar;
1472 ath10k_sdio_set_mbox_sleep(ar, false);
1477 __ath10k_sdio_write_async(ar, req);
1484 ath10k_sdio_set_mbox_sleep(ar, true);
1487 static int ath10k_sdio_prep_async_req(struct ath10k *ar, u32 addr,
1492 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1498 bus_req = ath10k_sdio_alloc_busreq(ar);
1500 ath10k_warn(ar,
1523 struct ath10k *ar = ar_sdio->ar;
1535 ret = ath10k_sdio_mbox_proc_pending_irqs(ar, &done);
1540 ath10k_mac_tx_push_pending(ar);
1545 ath10k_warn(ar, "failed to process pending SDIO interrupts: %d\n",
1551 static int ath10k_sdio_disable_intrs(struct ath10k *ar)
1553 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1561 ret = ath10k_sdio_write(ar, MBOX_INT_STATUS_ENABLE_ADDRESS,
1564 ath10k_warn(ar, "unable to disable sdio interrupts: %d\n", ret);
1571 static int ath10k_sdio_hif_power_up(struct ath10k *ar,
1574 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1581 ath10k_dbg(ar, ATH10K_DBG_BOOT, "sdio power on\n");
1583 ret = ath10k_sdio_config(ar);
1585 ath10k_err(ar, "failed to config sdio: %d\n", ret);
1593 ath10k_warn(ar, "unable to enable sdio function: %d)\n", ret);
1607 ret = ath10k_sdio_disable_intrs(ar);
1614 static void ath10k_sdio_hif_power_down(struct ath10k *ar)
1616 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1622 ath10k_dbg(ar, ATH10K_DBG_BOOT, "sdio power off\n");
1625 ath10k_sdio_set_mbox_sleep(ar, true);
1632 ath10k_warn(ar, "unable to disable sdio function: %d\n", ret);
1639 ath10k_warn(ar, "unable to reset sdio: %d\n", ret);
1646 static int ath10k_sdio_hif_tx_sg(struct ath10k *ar, u8 pipe_id,
1649 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1668 ret = ath10k_sdio_prep_async_req(ar, address, skb,
1679 static int ath10k_sdio_enable_intrs(struct ath10k *ar)
1681 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1716 ret = ath10k_sdio_write(ar, MBOX_INT_STATUS_ENABLE_ADDRESS,
1719 ath10k_warn(ar,
1729 static int ath10k_sdio_hif_diag_read(struct ath10k *ar, u32 address, void *buf,
1740 ret = ath10k_sdio_write32(ar, MBOX_WINDOW_READ_ADDR_ADDRESS, address);
1742 ath10k_warn(ar, "failed to set mbox window read address: %d", ret);
1747 ret = ath10k_sdio_read(ar, MBOX_WINDOW_DATA_ADDRESS, mem, buf_len);
1749 ath10k_warn(ar, "failed to read from mbox window data address: %d\n",
1762 static int ath10k_sdio_diag_read32(struct ath10k *ar, u32 address,
1772 ret = ath10k_sdio_hif_diag_read(ar, address, val, sizeof(*val));
1784 static int ath10k_sdio_hif_diag_write_mem(struct ath10k *ar, u32 address,
1790 ret = ath10k_sdio_write(ar, MBOX_WINDOW_DATA_ADDRESS, data, nbytes);
1792 ath10k_warn(ar,
1799 ret = ath10k_sdio_write32(ar, MBOX_WINDOW_WRITE_ADDR_ADDRESS, address);
1801 ath10k_warn(ar, "failed to set mbox window write address: %d", ret);
1808 static int ath10k_sdio_hif_start_post(struct ath10k *ar)
1810 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1816 ret = ath10k_sdio_diag_read32(ar, addr, &val);
1818 ath10k_warn(ar, "unable to read hi_acs_flags : %d\n", ret);
1823 ath10k_dbg(ar, ATH10K_DBG_SDIO,
1827 ath10k_dbg(ar, ATH10K_DBG_SDIO,
1832 ath10k_sdio_set_mbox_sleep(ar, true);
1837 static int ath10k_sdio_get_htt_tx_complete(struct ath10k *ar)
1844 ret = ath10k_sdio_diag_read32(ar, addr, &val);
1846 ath10k_warn(ar,
1853 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio reduce tx complete fw%sack\n",
1861 static int ath10k_sdio_hif_start(struct ath10k *ar)
1863 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1866 ath10k_core_napi_enable(ar);
1873 ret = ath10k_sdio_disable_intrs(ar);
1888 ath10k_warn(ar, "failed to claim sdio interrupt: %d\n", ret);
1895 ret = ath10k_sdio_enable_intrs(ar);
1897 ath10k_warn(ar, "failed to enable sdio interrupts: %d\n", ret);
1900 ret = ath10k_sdio_set_mbox_sleep(ar, true);
1907 ret = ath10k_sdio_set_mbox_sleep(ar, false);
1916 static void ath10k_sdio_irq_disable(struct ath10k *ar)
1918 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1938 ret = ath10k_sdio_prep_async_req(ar, MBOX_INT_STATUS_ENABLE_ADDRESS,
1951 ath10k_warn(ar, "sdio irq disable request timed out\n");
1957 ath10k_warn(ar, "failed to release sdio interrupt: %d\n", ret);
1965 static void ath10k_sdio_hif_stop(struct ath10k *ar)
1968 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
1971 ath10k_sdio_irq_disable(ar);
1989 ep = &ar->htc.endpoint[req->eid];
1994 ath10k_sdio_free_bus_req(ar, req);
1999 ath10k_core_napi_sync_disable(ar);
2004 static int ath10k_sdio_hif_suspend(struct ath10k *ar)
2009 static int ath10k_sdio_hif_resume(struct ath10k *ar)
2011 switch (ar->state) {
2013 ath10k_dbg(ar, ATH10K_DBG_SDIO,
2017 ath10k_sdio_config(ar);
2029 static int ath10k_sdio_hif_map_service_to_pipe(struct ath10k *ar,
2033 struct ath10k_sdio *ar_sdio = ath10k_sdio_priv(ar);
2034 struct ath10k_htc *htc = &ar->htc;
2087 ath10k_dbg(ar, ATH10K_DBG_SDIO,
2094 ath10k_dbg(ar, ATH10K_DBG_SDIO,
2099 ath10k_warn(ar, "unsupported HTC service id: %d\n",
2107 static void ath10k_sdio_hif_get_default_pipe(struct ath10k *ar,
2110 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio hif get default pipe\n");
2147 struct ath10k *ar = ar_sdio->ar;
2151 if (!device_may_wakeup(ar->dev))
2154 ath10k_sdio_set_mbox_sleep(ar, true);
2161 ath10k_warn(ar, "failed to set sdio host pm flags (0x%x, 0x%x): %d\n",
2187 struct ath10k *ar = container_of(ctx, struct ath10k, napi);
2190 done = ath10k_htt_rx_hl_indication(ar, budget);
2191 ath10k_dbg(ar, ATH10K_DBG_SDIO, "napi poll: done: %d, budget:%d\n", done, budget);
2199 static int ath10k_sdio_read_host_interest_value(struct ath10k *ar,
2208 ret = ath10k_sdio_diag_read32(ar, addr, val);
2211 ath10k_warn(ar, "unable to read host interest offset %d value\n",
2217 static int ath10k_sdio_read_mem(struct ath10k *ar, u32 address, void *buf,
2224 ret = ath10k_sdio_diag_read32(ar, address + i, &val);
2226 ath10k_warn(ar, "unable to read mem %d value\n", address + i);
2235 static bool ath10k_sdio_is_fast_dump_supported(struct ath10k *ar)
2239 ath10k_sdio_read_host_interest_value(ar, HI_ITEM(hi_option_flag2), &param);
2241 ath10k_dbg(ar, ATH10K_DBG_SDIO, "sdio hi_option_flag2 %x\n", param);
2246 static void ath10k_sdio_dump_registers(struct ath10k *ar,
2254 ret = ath10k_sdio_read_host_interest_value(ar, HI_ITEM(hi_failure_state),
2257 ath10k_warn(ar, "failed to read firmware dump area: %d\n", ret);
2262 ret = ath10k_bmi_read_memory(ar, reg_dump_area, reg_dump_values,
2265 ret = ath10k_sdio_read_mem(ar, reg_dump_area, reg_dump_values,
2269 ath10k_warn(ar, "failed to read firmware dump value: %d\n", ret);
2273 ath10k_err(ar, "firmware register dump:\n");
2275 ath10k_err(ar, "[%02d]: 0x%08X 0x%08X 0x%08X 0x%08X\n",
2289 static int ath10k_sdio_dump_memory_section(struct ath10k *ar,
2303 ath10k_warn(ar, "incorrect memdump region 0x%x with section start address 0x%x.\n",
2324 ath10k_warn(ar, "incorrect ramdump format with start address 0x%x and stop address 0x%x\n",
2338 ath10k_warn(ar, "next ramdump section 0x%x is smaller than current end address 0x%x\n",
2348 ath10k_warn(ar, "ramdump buffer is too small: %zu\n", buf_len);
2355 ret = ath10k_sdio_read_mem(ar, cur_section->start,
2358 ath10k_warn(ar, "failed to read ramdump from section 0x%x: %d\n",
2379 static int ath10k_sdio_dump_memory_generic(struct ath10k *ar,
2388 return ath10k_sdio_dump_memory_section(ar,
2397 ret = ath10k_bmi_read_memory(ar,
2402 ret = ath10k_sdio_read_mem(ar,
2408 ath10k_warn(ar, "failed to copy ramdump region %s: %d\n",
2416 static void ath10k_sdio_dump_memory(struct ath10k *ar,
2431 mem_layout = ath10k_coredump_get_mem_layout(ar);
2446 ath10k_warn(ar, "memory region %s size %d is larger that remaining ramdump buffer size %zu\n",
2458 ret = ath10k_sdio_dump_memory_generic(ar, current_region, buf,
2478 void ath10k_sdio_fw_crashed_dump(struct ath10k *ar)
2484 fast_dump = ath10k_sdio_is_fast_dump_supported(ar);
2487 ath10k_bmi_start(ar);
2489 ar->stats.fw_crash_counter++;
2491 ath10k_sdio_disable_intrs(ar);
2493 crash_data = ath10k_coredump_new(ar);
2500 ath10k_err(ar, "firmware crashed! (guid %s)\n", guid);
2501 ath10k_print_driver_info(ar);
2502 ath10k_sdio_dump_registers(ar, crash_data, fast_dump);
2503 ath10k_sdio_dump_memory(ar, crash_data, fast_dump);
2505 ath10k_sdio_enable_intrs(ar);
2507 ath10k_core_start_recovery(ar);
2514 struct ath10k *ar;
2528 ar = ath10k_core_create(sizeof(*ar_sdio), &func->dev, ATH10K_BUS_SDIO,
2530 if (!ar) {
2535 netif_napi_add(ar->napi_dev, &ar->napi, ath10k_sdio_napi_poll);
2537 ath10k_dbg(ar, ATH10K_DBG_BOOT,
2542 ar_sdio = ath10k_sdio_priv(ar);
2545 devm_kzalloc(ar->dev, sizeof(struct ath10k_sdio_irq_proc_regs),
2552 ar_sdio->vsg_buffer = devm_kmalloc(ar->dev, ATH10K_SDIO_VSG_BUF_SIZE, GFP_KERNEL);
2559 devm_kzalloc(ar->dev, sizeof(struct ath10k_sdio_irq_enable_regs),
2566 ar_sdio->bmi_buf = devm_kzalloc(ar->dev, BMI_MAX_LARGE_CMDBUF_SIZE, GFP_KERNEL);
2576 ar_sdio->ar = ar;
2593 ath10k_sdio_free_bus_req(ar, &ar_sdio->bus_req[i]);
2602 ath10k_err(ar, "unsupported device id %u (0x%x)\n",
2607 ar->dev_id = QCA9377_1_0_DEVICE_ID;
2608 ar->id.vendor = id->vendor;
2609 ar->id.device = id->device;
2611 ath10k_sdio_set_mbox_info(ar);
2618 ar->hw->max_mtu = ETH_DATA_LEN;
2620 ret = ath10k_core_register(ar, &bus_params);
2622 ath10k_err(ar, "failed to register driver core: %d\n", ret);
2633 ath10k_core_destroy(ar);
2641 struct ath10k *ar = ar_sdio->ar;
2643 ath10k_dbg(ar, ATH10K_DBG_BOOT,
2647 ath10k_core_unregister(ar);
2649 netif_napi_del(&ar->napi);
2651 ath10k_core_destroy(ar);