Lines Matching refs:ar
82 static void ath10k_pci_buffer_cleanup(struct ath10k *ar);
83 static int ath10k_pci_cold_reset(struct ath10k *ar);
84 static int ath10k_pci_warm_reset(struct ath10k *ar);
85 static int ath10k_pci_wait_for_target_init(struct ath10k *ar);
86 static int ath10k_pci_init_irq(struct ath10k *ar);
87 static int ath10k_pci_deinit_irq(struct ath10k *ar);
88 static int ath10k_pci_request_irq(struct ath10k *ar);
89 static void ath10k_pci_free_irq(struct ath10k *ar);
333 static bool ath10k_pci_irq_pending(struct ath10k *ar) in ath10k_pci_irq_pending() argument
338 cause = ath10k_pci_read32(ar, SOC_CORE_BASE_ADDRESS + in ath10k_pci_irq_pending()
346 static void ath10k_pci_disable_and_clear_legacy_irq(struct ath10k *ar) in ath10k_pci_disable_and_clear_legacy_irq() argument
351 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + PCIE_INTR_ENABLE_ADDRESS, in ath10k_pci_disable_and_clear_legacy_irq()
353 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + PCIE_INTR_CLR_ADDRESS, in ath10k_pci_disable_and_clear_legacy_irq()
358 (void)ath10k_pci_read32(ar, SOC_CORE_BASE_ADDRESS + in ath10k_pci_disable_and_clear_legacy_irq()
362 static void ath10k_pci_enable_legacy_irq(struct ath10k *ar) in ath10k_pci_enable_legacy_irq() argument
364 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + in ath10k_pci_enable_legacy_irq()
370 (void)ath10k_pci_read32(ar, SOC_CORE_BASE_ADDRESS + in ath10k_pci_enable_legacy_irq()
374 static inline const char *ath10k_pci_get_irq_method(struct ath10k *ar) in ath10k_pci_get_irq_method() argument
376 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_get_irq_method()
389 struct ath10k *ar = pipe->hif_ce_state; in __ath10k_pci_rx_post_buf() local
390 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in __ath10k_pci_rx_post_buf()
404 paddr = dma_map_single(ar->dev, skb->data, in __ath10k_pci_rx_post_buf()
407 if (unlikely(dma_mapping_error(ar->dev, paddr))) { in __ath10k_pci_rx_post_buf()
408 ath10k_warn(ar, "failed to dma map pci rx buf\n"); in __ath10k_pci_rx_post_buf()
417 ath10k_warn(ar, "failed to post pci rx buf: %d\n", ret); in __ath10k_pci_rx_post_buf()
418 dma_unmap_single(ar->dev, paddr, skb->len + skb_tailroom(skb), in __ath10k_pci_rx_post_buf()
429 struct ath10k *ar = pipe->hif_ce_state; in __ath10k_pci_rx_post_pipe() local
430 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in __ath10k_pci_rx_post_pipe()
446 ath10k_warn(ar, "failed to post pci rx buf: %d\n", ret); in __ath10k_pci_rx_post_pipe()
456 struct ath10k *ar = pipe->hif_ce_state; in ath10k_pci_rx_post_pipe() local
457 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_rx_post_pipe()
464 static void ath10k_pci_rx_post(struct ath10k *ar) in ath10k_pci_rx_post() argument
466 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_rx_post()
477 struct ath10k *ar = (void *)ptr; in ath10k_pci_rx_replenish_retry() local
479 ath10k_pci_rx_post(ar); in ath10k_pci_rx_replenish_retry()
487 static int ath10k_pci_diag_read_mem(struct ath10k *ar, u32 address, void *data, in ath10k_pci_diag_read_mem() argument
490 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_diag_read_mem()
514 data_buf = (unsigned char *)dma_alloc_coherent(ar->dev, in ath10k_pci_diag_read_mem()
544 address = TARG_CPU_SPACE_TO_CE_SPACE(ar, ar_pci->mem, in ath10k_pci_diag_read_mem()
604 ath10k_warn(ar, "failed to read diag value at 0x%x: %d\n", in ath10k_pci_diag_read_mem()
608 dma_free_coherent(ar->dev, orig_nbytes, data_buf, in ath10k_pci_diag_read_mem()
616 static int ath10k_pci_diag_read32(struct ath10k *ar, u32 address, u32 *value) in ath10k_pci_diag_read32() argument
621 ret = ath10k_pci_diag_read_mem(ar, address, &val, sizeof(val)); in ath10k_pci_diag_read32()
627 static int __ath10k_pci_diag_read_hi(struct ath10k *ar, void *dest, in __ath10k_pci_diag_read_hi() argument
635 ret = ath10k_pci_diag_read32(ar, host_addr, &addr); in __ath10k_pci_diag_read_hi()
637 ath10k_warn(ar, "failed to get memcpy hi address for firmware address %d: %d\n", in __ath10k_pci_diag_read_hi()
642 ret = ath10k_pci_diag_read_mem(ar, addr, dest, len); in __ath10k_pci_diag_read_hi()
644 ath10k_warn(ar, "failed to memcpy firmware memory from %d (%d B): %d\n", in __ath10k_pci_diag_read_hi()
652 #define ath10k_pci_diag_read_hi(ar, dest, src, len) \ argument
653 __ath10k_pci_diag_read_hi(ar, dest, HI_ITEM(src), len)
655 static int ath10k_pci_diag_write_mem(struct ath10k *ar, u32 address, in ath10k_pci_diag_write_mem() argument
658 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_diag_write_mem()
681 data_buf = (unsigned char *)dma_alloc_coherent(ar->dev, in ath10k_pci_diag_write_mem()
703 address = TARG_CPU_SPACE_TO_CE_SPACE(ar, ar_pci->mem, address); in ath10k_pci_diag_write_mem()
776 dma_free_coherent(ar->dev, orig_nbytes, data_buf, in ath10k_pci_diag_write_mem()
781 ath10k_warn(ar, "failed to write diag value at 0x%x: %d\n", in ath10k_pci_diag_write_mem()
789 static int ath10k_pci_diag_write32(struct ath10k *ar, u32 address, u32 value) in ath10k_pci_diag_write32() argument
793 return ath10k_pci_diag_write_mem(ar, address, &val, sizeof(val)); in ath10k_pci_diag_write32()
796 static bool ath10k_pci_is_awake(struct ath10k *ar) in ath10k_pci_is_awake() argument
798 u32 val = ath10k_pci_reg_read32(ar, RTC_STATE_ADDRESS); in ath10k_pci_is_awake()
803 static int ath10k_pci_wake_wait(struct ath10k *ar) in ath10k_pci_wake_wait() argument
809 if (ath10k_pci_is_awake(ar)) in ath10k_pci_wake_wait()
822 static int ath10k_pci_wake(struct ath10k *ar) in ath10k_pci_wake() argument
824 ath10k_pci_reg_write32(ar, PCIE_SOC_WAKE_ADDRESS, in ath10k_pci_wake()
826 return ath10k_pci_wake_wait(ar); in ath10k_pci_wake()
829 static void ath10k_pci_sleep(struct ath10k *ar) in ath10k_pci_sleep() argument
831 ath10k_pci_reg_write32(ar, PCIE_SOC_WAKE_ADDRESS, in ath10k_pci_sleep()
838 struct ath10k *ar = ce_state->ar; in ath10k_pci_ce_send_done() local
839 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_ce_send_done()
858 cb->tx_completion(ar, skb); in ath10k_pci_ce_send_done()
864 struct ath10k *ar = ce_state->ar; in ath10k_pci_ce_recv_data() local
865 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_ce_recv_data()
882 dma_unmap_single(ar->dev, ATH10K_SKB_RXCB(skb)->paddr, in ath10k_pci_ce_recv_data()
886 ath10k_warn(ar, "rxed more than expected (nbytes %d, max %d)", in ath10k_pci_ce_recv_data()
897 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci rx ce pipe %d len %d\n", in ath10k_pci_ce_recv_data()
899 ath10k_dbg_dump(ar, ATH10K_DBG_PCI_DUMP, NULL, "pci rx: ", in ath10k_pci_ce_recv_data()
902 cb->rx_completion(ar, skb); in ath10k_pci_ce_recv_data()
908 static int ath10k_pci_hif_tx_sg(struct ath10k *ar, u8 pipe_id, in ath10k_pci_hif_tx_sg() argument
911 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_tx_sg()
933 ath10k_dbg(ar, ATH10K_DBG_PCI, in ath10k_pci_hif_tx_sg()
936 ath10k_dbg_dump(ar, ATH10K_DBG_PCI_DUMP, NULL, "pci tx data: ", in ath10k_pci_hif_tx_sg()
951 ath10k_dbg(ar, ATH10K_DBG_PCI, in ath10k_pci_hif_tx_sg()
954 ath10k_dbg_dump(ar, ATH10K_DBG_PCI_DUMP, NULL, "pci tx data: ", in ath10k_pci_hif_tx_sg()
977 static int ath10k_pci_hif_diag_read(struct ath10k *ar, u32 address, void *buf, in ath10k_pci_hif_diag_read() argument
980 return ath10k_pci_diag_read_mem(ar, address, buf, buf_len); in ath10k_pci_hif_diag_read()
983 static u16 ath10k_pci_hif_get_free_queue_number(struct ath10k *ar, u8 pipe) in ath10k_pci_hif_get_free_queue_number() argument
985 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_get_free_queue_number()
987 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci hif get free queue number\n"); in ath10k_pci_hif_get_free_queue_number()
992 static void ath10k_pci_dump_registers(struct ath10k *ar, in ath10k_pci_dump_registers() argument
998 lockdep_assert_held(&ar->data_lock); in ath10k_pci_dump_registers()
1000 ret = ath10k_pci_diag_read_hi(ar, ®_dump_values[0], in ath10k_pci_dump_registers()
1004 ath10k_err(ar, "failed to read firmware dump area: %d\n", ret); in ath10k_pci_dump_registers()
1010 ath10k_err(ar, "firmware register dump:\n"); in ath10k_pci_dump_registers()
1012 ath10k_err(ar, "[%02d]: 0x%08X 0x%08X 0x%08X 0x%08X\n", in ath10k_pci_dump_registers()
1026 static void ath10k_pci_fw_crashed_dump(struct ath10k *ar) in ath10k_pci_fw_crashed_dump() argument
1031 spin_lock_bh(&ar->data_lock); in ath10k_pci_fw_crashed_dump()
1033 ar->stats.fw_crash_counter++; in ath10k_pci_fw_crashed_dump()
1035 crash_data = ath10k_debug_get_new_fw_crash_data(ar); in ath10k_pci_fw_crashed_dump()
1042 ath10k_err(ar, "firmware crashed! (uuid %s)\n", uuid); in ath10k_pci_fw_crashed_dump()
1043 ath10k_print_driver_info(ar); in ath10k_pci_fw_crashed_dump()
1044 ath10k_pci_dump_registers(ar, crash_data); in ath10k_pci_fw_crashed_dump()
1046 spin_unlock_bh(&ar->data_lock); in ath10k_pci_fw_crashed_dump()
1048 queue_work(ar->workqueue, &ar->restart_work); in ath10k_pci_fw_crashed_dump()
1051 static void ath10k_pci_hif_send_complete_check(struct ath10k *ar, u8 pipe, in ath10k_pci_hif_send_complete_check() argument
1054 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci hif send complete check\n"); in ath10k_pci_hif_send_complete_check()
1065 resources = ath10k_pci_hif_get_free_queue_number(ar, pipe); in ath10k_pci_hif_send_complete_check()
1074 ath10k_ce_per_engine_service(ar, pipe); in ath10k_pci_hif_send_complete_check()
1077 static void ath10k_pci_hif_set_callbacks(struct ath10k *ar, in ath10k_pci_hif_set_callbacks() argument
1080 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_set_callbacks()
1082 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci hif set callbacks\n"); in ath10k_pci_hif_set_callbacks()
1088 static void ath10k_pci_kill_tasklet(struct ath10k *ar) in ath10k_pci_kill_tasklet() argument
1090 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_kill_tasklet()
1102 static int ath10k_pci_hif_map_service_to_pipe(struct ath10k *ar, in ath10k_pci_hif_map_service_to_pipe() argument
1111 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci hif map service\n"); in ath10k_pci_hif_map_service_to_pipe()
1155 static void ath10k_pci_hif_get_default_pipe(struct ath10k *ar, in ath10k_pci_hif_get_default_pipe() argument
1160 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci hif get default pipe\n"); in ath10k_pci_hif_get_default_pipe()
1162 (void)ath10k_pci_hif_map_service_to_pipe(ar, in ath10k_pci_hif_get_default_pipe()
1170 static void ath10k_pci_irq_msi_fw_mask(struct ath10k *ar) in ath10k_pci_irq_msi_fw_mask() argument
1174 val = ath10k_pci_read32(ar, SOC_CORE_BASE_ADDRESS + CORE_CTRL_ADDRESS); in ath10k_pci_irq_msi_fw_mask()
1177 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + CORE_CTRL_ADDRESS, val); in ath10k_pci_irq_msi_fw_mask()
1180 static void ath10k_pci_irq_msi_fw_unmask(struct ath10k *ar) in ath10k_pci_irq_msi_fw_unmask() argument
1184 val = ath10k_pci_read32(ar, SOC_CORE_BASE_ADDRESS + CORE_CTRL_ADDRESS); in ath10k_pci_irq_msi_fw_unmask()
1187 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + CORE_CTRL_ADDRESS, val); in ath10k_pci_irq_msi_fw_unmask()
1190 static void ath10k_pci_irq_disable(struct ath10k *ar) in ath10k_pci_irq_disable() argument
1192 ath10k_ce_disable_interrupts(ar); in ath10k_pci_irq_disable()
1193 ath10k_pci_disable_and_clear_legacy_irq(ar); in ath10k_pci_irq_disable()
1194 ath10k_pci_irq_msi_fw_mask(ar); in ath10k_pci_irq_disable()
1197 static void ath10k_pci_irq_sync(struct ath10k *ar) in ath10k_pci_irq_sync() argument
1199 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_irq_sync()
1206 static void ath10k_pci_irq_enable(struct ath10k *ar) in ath10k_pci_irq_enable() argument
1208 ath10k_ce_enable_interrupts(ar); in ath10k_pci_irq_enable()
1209 ath10k_pci_enable_legacy_irq(ar); in ath10k_pci_irq_enable()
1210 ath10k_pci_irq_msi_fw_unmask(ar); in ath10k_pci_irq_enable()
1213 static int ath10k_pci_hif_start(struct ath10k *ar) in ath10k_pci_hif_start() argument
1215 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif start\n"); in ath10k_pci_hif_start()
1217 ath10k_pci_irq_enable(ar); in ath10k_pci_hif_start()
1218 ath10k_pci_rx_post(ar); in ath10k_pci_hif_start()
1225 struct ath10k *ar; in ath10k_pci_rx_pipe_cleanup() local
1231 ar = pci_pipe->hif_ce_state; in ath10k_pci_rx_pipe_cleanup()
1248 dma_unmap_single(ar->dev, ATH10K_SKB_RXCB(skb)->paddr, in ath10k_pci_rx_pipe_cleanup()
1257 struct ath10k *ar; in ath10k_pci_tx_pipe_cleanup() local
1266 ar = pci_pipe->hif_ce_state; in ath10k_pci_tx_pipe_cleanup()
1267 ar_pci = ath10k_pci_priv(ar); in ath10k_pci_tx_pipe_cleanup()
1290 ar_pci->msg_callbacks_current.tx_completion(ar, skb); in ath10k_pci_tx_pipe_cleanup()
1302 static void ath10k_pci_buffer_cleanup(struct ath10k *ar) in ath10k_pci_buffer_cleanup() argument
1304 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_buffer_cleanup()
1316 static void ath10k_pci_ce_deinit(struct ath10k *ar) in ath10k_pci_ce_deinit() argument
1321 ath10k_ce_deinit_pipe(ar, i); in ath10k_pci_ce_deinit()
1324 static void ath10k_pci_flush(struct ath10k *ar) in ath10k_pci_flush() argument
1326 ath10k_pci_kill_tasklet(ar); in ath10k_pci_flush()
1327 ath10k_pci_buffer_cleanup(ar); in ath10k_pci_flush()
1330 static void ath10k_pci_hif_stop(struct ath10k *ar) in ath10k_pci_hif_stop() argument
1332 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif stop\n"); in ath10k_pci_hif_stop()
1345 ath10k_pci_warm_reset(ar); in ath10k_pci_hif_stop()
1347 ath10k_pci_irq_disable(ar); in ath10k_pci_hif_stop()
1348 ath10k_pci_irq_sync(ar); in ath10k_pci_hif_stop()
1349 ath10k_pci_flush(ar); in ath10k_pci_hif_stop()
1352 static int ath10k_pci_hif_exchange_bmi_msg(struct ath10k *ar, in ath10k_pci_hif_exchange_bmi_msg() argument
1356 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_exchange_bmi_msg()
1379 req_paddr = dma_map_single(ar->dev, treq, req_len, DMA_TO_DEVICE); in ath10k_pci_hif_exchange_bmi_msg()
1380 ret = dma_mapping_error(ar->dev, req_paddr); in ath10k_pci_hif_exchange_bmi_msg()
1393 resp_paddr = dma_map_single(ar->dev, tresp, *resp_len, in ath10k_pci_hif_exchange_bmi_msg()
1395 ret = dma_mapping_error(ar->dev, resp_paddr); in ath10k_pci_hif_exchange_bmi_msg()
1429 dma_unmap_single(ar->dev, resp_paddr, in ath10k_pci_hif_exchange_bmi_msg()
1433 dma_unmap_single(ar->dev, req_paddr, req_len, DMA_TO_DEVICE); in ath10k_pci_hif_exchange_bmi_msg()
1462 struct ath10k *ar = ce_state->ar; in ath10k_pci_bmi_recv_data() local
1477 ath10k_warn(ar, "unexpected: BMI data received; ignoring\n"); in ath10k_pci_bmi_recv_data()
1508 static int ath10k_pci_wake_target_cpu(struct ath10k *ar) in ath10k_pci_wake_target_cpu() argument
1513 val = ath10k_pci_read32(ar, addr); in ath10k_pci_wake_target_cpu()
1515 ath10k_pci_write32(ar, addr, val); in ath10k_pci_wake_target_cpu()
1520 static int ath10k_pci_get_num_banks(struct ath10k *ar) in ath10k_pci_get_num_banks() argument
1522 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_get_num_banks()
1528 switch (MS(ar->chip_id, SOC_CHIP_ID_REV)) { in ath10k_pci_get_num_banks()
1544 ath10k_warn(ar, "unknown number of banks, assuming 1\n"); in ath10k_pci_get_num_banks()
1548 static int ath10k_pci_init_config(struct ath10k *ar) in ath10k_pci_init_config() argument
1566 ret = ath10k_pci_diag_read32(ar, interconnect_targ_addr, in ath10k_pci_init_config()
1569 ath10k_err(ar, "Failed to get pcie state addr: %d\n", ret); in ath10k_pci_init_config()
1575 ath10k_err(ar, "Invalid pcie state addr\n"); in ath10k_pci_init_config()
1579 ret = ath10k_pci_diag_read32(ar, (pcie_state_targ_addr + in ath10k_pci_init_config()
1584 ath10k_err(ar, "Failed to get pipe cfg addr: %d\n", ret); in ath10k_pci_init_config()
1590 ath10k_err(ar, "Invalid pipe cfg addr\n"); in ath10k_pci_init_config()
1594 ret = ath10k_pci_diag_write_mem(ar, pipe_cfg_targ_addr, in ath10k_pci_init_config()
1599 ath10k_err(ar, "Failed to write pipe cfg: %d\n", ret); in ath10k_pci_init_config()
1603 ret = ath10k_pci_diag_read32(ar, (pcie_state_targ_addr + in ath10k_pci_init_config()
1608 ath10k_err(ar, "Failed to get svc/pipe map: %d\n", ret); in ath10k_pci_init_config()
1614 ath10k_err(ar, "Invalid svc_to_pipe map\n"); in ath10k_pci_init_config()
1618 ret = ath10k_pci_diag_write_mem(ar, svc_to_pipe_map, in ath10k_pci_init_config()
1622 ath10k_err(ar, "Failed to write svc/pipe map: %d\n", ret); in ath10k_pci_init_config()
1626 ret = ath10k_pci_diag_read32(ar, (pcie_state_targ_addr + in ath10k_pci_init_config()
1631 ath10k_err(ar, "Failed to get pcie config_flags: %d\n", ret); in ath10k_pci_init_config()
1637 ret = ath10k_pci_diag_write32(ar, (pcie_state_targ_addr + in ath10k_pci_init_config()
1642 ath10k_err(ar, "Failed to write pcie config_flags: %d\n", ret); in ath10k_pci_init_config()
1649 ret = ath10k_pci_diag_read32(ar, ealloc_targ_addr, &ealloc_value); in ath10k_pci_init_config()
1651 ath10k_err(ar, "Faile to get early alloc val: %d\n", ret); in ath10k_pci_init_config()
1658 ealloc_value |= ((ath10k_pci_get_num_banks(ar) << in ath10k_pci_init_config()
1662 ret = ath10k_pci_diag_write32(ar, ealloc_targ_addr, ealloc_value); in ath10k_pci_init_config()
1664 ath10k_err(ar, "Failed to set early alloc val: %d\n", ret); in ath10k_pci_init_config()
1671 ret = ath10k_pci_diag_read32(ar, flag2_targ_addr, &flag2_value); in ath10k_pci_init_config()
1673 ath10k_err(ar, "Failed to get option val: %d\n", ret); in ath10k_pci_init_config()
1679 ret = ath10k_pci_diag_write32(ar, flag2_targ_addr, flag2_value); in ath10k_pci_init_config()
1681 ath10k_err(ar, "Failed to set option val: %d\n", ret); in ath10k_pci_init_config()
1688 static int ath10k_pci_alloc_pipes(struct ath10k *ar) in ath10k_pci_alloc_pipes() argument
1690 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_alloc_pipes()
1698 pipe->hif_ce_state = ar; in ath10k_pci_alloc_pipes()
1700 ret = ath10k_ce_alloc_pipe(ar, i, &host_ce_config_wlan[i], in ath10k_pci_alloc_pipes()
1704 ath10k_err(ar, "failed to allocate copy engine pipe %d: %d\n", in ath10k_pci_alloc_pipes()
1721 static void ath10k_pci_free_pipes(struct ath10k *ar) in ath10k_pci_free_pipes() argument
1726 ath10k_ce_free_pipe(ar, i); in ath10k_pci_free_pipes()
1729 static int ath10k_pci_init_pipes(struct ath10k *ar) in ath10k_pci_init_pipes() argument
1734 ret = ath10k_ce_init_pipe(ar, i, &host_ce_config_wlan[i]); in ath10k_pci_init_pipes()
1736 ath10k_err(ar, "failed to initialize copy engine pipe %d: %d\n", in ath10k_pci_init_pipes()
1745 static bool ath10k_pci_has_fw_crashed(struct ath10k *ar) in ath10k_pci_has_fw_crashed() argument
1747 return ath10k_pci_read32(ar, FW_INDICATOR_ADDRESS) & in ath10k_pci_has_fw_crashed()
1751 static void ath10k_pci_fw_crashed_clear(struct ath10k *ar) in ath10k_pci_fw_crashed_clear() argument
1755 val = ath10k_pci_read32(ar, FW_INDICATOR_ADDRESS); in ath10k_pci_fw_crashed_clear()
1757 ath10k_pci_write32(ar, FW_INDICATOR_ADDRESS, val); in ath10k_pci_fw_crashed_clear()
1761 static void ath10k_pci_warm_reset_si0(struct ath10k *ar) in ath10k_pci_warm_reset_si0() argument
1765 val = ath10k_pci_soc_read32(ar, SOC_RESET_CONTROL_ADDRESS); in ath10k_pci_warm_reset_si0()
1766 ath10k_pci_soc_write32(ar, SOC_RESET_CONTROL_ADDRESS, in ath10k_pci_warm_reset_si0()
1768 val = ath10k_pci_soc_read32(ar, SOC_RESET_CONTROL_ADDRESS); in ath10k_pci_warm_reset_si0()
1772 val = ath10k_pci_soc_read32(ar, SOC_RESET_CONTROL_ADDRESS); in ath10k_pci_warm_reset_si0()
1773 ath10k_pci_soc_write32(ar, SOC_RESET_CONTROL_ADDRESS, in ath10k_pci_warm_reset_si0()
1775 val = ath10k_pci_soc_read32(ar, SOC_RESET_CONTROL_ADDRESS); in ath10k_pci_warm_reset_si0()
1780 static void ath10k_pci_warm_reset_cpu(struct ath10k *ar) in ath10k_pci_warm_reset_cpu() argument
1784 ath10k_pci_write32(ar, FW_INDICATOR_ADDRESS, 0); in ath10k_pci_warm_reset_cpu()
1786 val = ath10k_pci_read32(ar, RTC_SOC_BASE_ADDRESS + in ath10k_pci_warm_reset_cpu()
1788 ath10k_pci_write32(ar, RTC_SOC_BASE_ADDRESS + SOC_RESET_CONTROL_ADDRESS, in ath10k_pci_warm_reset_cpu()
1792 static void ath10k_pci_warm_reset_ce(struct ath10k *ar) in ath10k_pci_warm_reset_ce() argument
1796 val = ath10k_pci_read32(ar, RTC_SOC_BASE_ADDRESS + in ath10k_pci_warm_reset_ce()
1799 ath10k_pci_write32(ar, RTC_SOC_BASE_ADDRESS + SOC_RESET_CONTROL_ADDRESS, in ath10k_pci_warm_reset_ce()
1802 ath10k_pci_write32(ar, RTC_SOC_BASE_ADDRESS + SOC_RESET_CONTROL_ADDRESS, in ath10k_pci_warm_reset_ce()
1806 static void ath10k_pci_warm_reset_clear_lf(struct ath10k *ar) in ath10k_pci_warm_reset_clear_lf() argument
1810 val = ath10k_pci_read32(ar, RTC_SOC_BASE_ADDRESS + in ath10k_pci_warm_reset_clear_lf()
1812 ath10k_pci_write32(ar, RTC_SOC_BASE_ADDRESS + in ath10k_pci_warm_reset_clear_lf()
1817 static int ath10k_pci_warm_reset(struct ath10k *ar) in ath10k_pci_warm_reset() argument
1821 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot warm reset\n"); in ath10k_pci_warm_reset()
1823 spin_lock_bh(&ar->data_lock); in ath10k_pci_warm_reset()
1824 ar->stats.fw_warm_reset_counter++; in ath10k_pci_warm_reset()
1825 spin_unlock_bh(&ar->data_lock); in ath10k_pci_warm_reset()
1827 ath10k_pci_irq_disable(ar); in ath10k_pci_warm_reset()
1834 ath10k_pci_warm_reset_si0(ar); in ath10k_pci_warm_reset()
1835 ath10k_pci_warm_reset_cpu(ar); in ath10k_pci_warm_reset()
1836 ath10k_pci_init_pipes(ar); in ath10k_pci_warm_reset()
1837 ath10k_pci_wait_for_target_init(ar); in ath10k_pci_warm_reset()
1839 ath10k_pci_warm_reset_clear_lf(ar); in ath10k_pci_warm_reset()
1840 ath10k_pci_warm_reset_ce(ar); in ath10k_pci_warm_reset()
1841 ath10k_pci_warm_reset_cpu(ar); in ath10k_pci_warm_reset()
1842 ath10k_pci_init_pipes(ar); in ath10k_pci_warm_reset()
1844 ret = ath10k_pci_wait_for_target_init(ar); in ath10k_pci_warm_reset()
1846 ath10k_warn(ar, "failed to wait for target init: %d\n", ret); in ath10k_pci_warm_reset()
1850 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot warm reset complete\n"); in ath10k_pci_warm_reset()
1855 static int ath10k_pci_qca988x_chip_reset(struct ath10k *ar) in ath10k_pci_qca988x_chip_reset() argument
1860 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot 988x chip reset\n"); in ath10k_pci_qca988x_chip_reset()
1870 ret = ath10k_pci_warm_reset(ar); in ath10k_pci_qca988x_chip_reset()
1872 ath10k_warn(ar, "failed to warm reset attempt %d of %d: %d\n", in ath10k_pci_qca988x_chip_reset()
1887 ret = ath10k_pci_init_pipes(ar); in ath10k_pci_qca988x_chip_reset()
1889 ath10k_warn(ar, "failed to init copy engine: %d\n", in ath10k_pci_qca988x_chip_reset()
1894 ret = ath10k_pci_diag_read32(ar, QCA988X_HOST_INTEREST_ADDRESS, in ath10k_pci_qca988x_chip_reset()
1897 ath10k_warn(ar, "failed to poke copy engine: %d\n", in ath10k_pci_qca988x_chip_reset()
1902 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot chip reset complete (warm)\n"); in ath10k_pci_qca988x_chip_reset()
1907 ath10k_warn(ar, "refusing cold reset as requested\n"); in ath10k_pci_qca988x_chip_reset()
1911 ret = ath10k_pci_cold_reset(ar); in ath10k_pci_qca988x_chip_reset()
1913 ath10k_warn(ar, "failed to cold reset: %d\n", ret); in ath10k_pci_qca988x_chip_reset()
1917 ret = ath10k_pci_wait_for_target_init(ar); in ath10k_pci_qca988x_chip_reset()
1919 ath10k_warn(ar, "failed to wait for target after cold reset: %d\n", in ath10k_pci_qca988x_chip_reset()
1924 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot qca988x chip reset complete (cold)\n"); in ath10k_pci_qca988x_chip_reset()
1929 static int ath10k_pci_qca6174_chip_reset(struct ath10k *ar) in ath10k_pci_qca6174_chip_reset() argument
1933 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot qca6174 chip reset\n"); in ath10k_pci_qca6174_chip_reset()
1937 ret = ath10k_pci_cold_reset(ar); in ath10k_pci_qca6174_chip_reset()
1939 ath10k_warn(ar, "failed to cold reset: %d\n", ret); in ath10k_pci_qca6174_chip_reset()
1943 ret = ath10k_pci_wait_for_target_init(ar); in ath10k_pci_qca6174_chip_reset()
1945 ath10k_warn(ar, "failed to wait for target after cold reset: %d\n", in ath10k_pci_qca6174_chip_reset()
1950 ret = ath10k_pci_warm_reset(ar); in ath10k_pci_qca6174_chip_reset()
1952 ath10k_warn(ar, "failed to warm reset: %d\n", ret); in ath10k_pci_qca6174_chip_reset()
1956 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot qca6174 chip reset complete (cold)\n"); in ath10k_pci_qca6174_chip_reset()
1961 static int ath10k_pci_chip_reset(struct ath10k *ar) in ath10k_pci_chip_reset() argument
1963 if (QCA_REV_988X(ar)) in ath10k_pci_chip_reset()
1964 return ath10k_pci_qca988x_chip_reset(ar); in ath10k_pci_chip_reset()
1965 else if (QCA_REV_6174(ar)) in ath10k_pci_chip_reset()
1966 return ath10k_pci_qca6174_chip_reset(ar); in ath10k_pci_chip_reset()
1971 static int ath10k_pci_hif_power_up(struct ath10k *ar) in ath10k_pci_hif_power_up() argument
1975 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif power up\n"); in ath10k_pci_hif_power_up()
1977 ret = ath10k_pci_wake(ar); in ath10k_pci_hif_power_up()
1979 ath10k_err(ar, "failed to wake up target: %d\n", ret); in ath10k_pci_hif_power_up()
1993 ret = ath10k_pci_chip_reset(ar); in ath10k_pci_hif_power_up()
1995 if (ath10k_pci_has_fw_crashed(ar)) { in ath10k_pci_hif_power_up()
1996 ath10k_warn(ar, "firmware crashed during chip reset\n"); in ath10k_pci_hif_power_up()
1997 ath10k_pci_fw_crashed_clear(ar); in ath10k_pci_hif_power_up()
1998 ath10k_pci_fw_crashed_dump(ar); in ath10k_pci_hif_power_up()
2001 ath10k_err(ar, "failed to reset chip: %d\n", ret); in ath10k_pci_hif_power_up()
2005 ret = ath10k_pci_init_pipes(ar); in ath10k_pci_hif_power_up()
2007 ath10k_err(ar, "failed to initialize CE: %d\n", ret); in ath10k_pci_hif_power_up()
2011 ret = ath10k_pci_init_config(ar); in ath10k_pci_hif_power_up()
2013 ath10k_err(ar, "failed to setup init config: %d\n", ret); in ath10k_pci_hif_power_up()
2017 ret = ath10k_pci_wake_target_cpu(ar); in ath10k_pci_hif_power_up()
2019 ath10k_err(ar, "could not wake up target CPU: %d\n", ret); in ath10k_pci_hif_power_up()
2026 ath10k_pci_ce_deinit(ar); in ath10k_pci_hif_power_up()
2029 ath10k_pci_sleep(ar); in ath10k_pci_hif_power_up()
2033 static void ath10k_pci_hif_power_down(struct ath10k *ar) in ath10k_pci_hif_power_down() argument
2035 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif power down\n"); in ath10k_pci_hif_power_down()
2041 ath10k_pci_sleep(ar); in ath10k_pci_hif_power_down()
2048 static int ath10k_pci_hif_suspend(struct ath10k *ar) in ath10k_pci_hif_suspend() argument
2050 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_suspend()
2066 static int ath10k_pci_hif_resume(struct ath10k *ar) in ath10k_pci_hif_resume() argument
2068 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_hif_resume()
2120 ath10k_ce_per_engine_service(ar_pci->ar, pipe->pipe_num); in ath10k_pci_ce_tasklet()
2125 struct ath10k *ar = (struct ath10k *)data; in ath10k_msi_err_tasklet() local
2127 if (!ath10k_pci_has_fw_crashed(ar)) { in ath10k_msi_err_tasklet()
2128 ath10k_warn(ar, "received unsolicited fw crash interrupt\n"); in ath10k_msi_err_tasklet()
2132 ath10k_pci_irq_disable(ar); in ath10k_msi_err_tasklet()
2133 ath10k_pci_fw_crashed_clear(ar); in ath10k_msi_err_tasklet()
2134 ath10k_pci_fw_crashed_dump(ar); in ath10k_msi_err_tasklet()
2143 struct ath10k *ar = arg; in ath10k_pci_per_engine_handler() local
2144 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_per_engine_handler()
2148 ath10k_warn(ar, "unexpected/invalid irq %d ce_id %d\n", irq, in ath10k_pci_per_engine_handler()
2167 struct ath10k *ar = arg; in ath10k_pci_msi_fw_handler() local
2168 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_msi_fw_handler()
2181 struct ath10k *ar = arg; in ath10k_pci_interrupt_handler() local
2182 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_interrupt_handler()
2185 if (!ath10k_pci_irq_pending(ar)) in ath10k_pci_interrupt_handler()
2188 ath10k_pci_disable_and_clear_legacy_irq(ar); in ath10k_pci_interrupt_handler()
2198 struct ath10k *ar = (struct ath10k *)data; in ath10k_pci_tasklet() local
2199 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_tasklet()
2201 if (ath10k_pci_has_fw_crashed(ar)) { in ath10k_pci_tasklet()
2202 ath10k_pci_irq_disable(ar); in ath10k_pci_tasklet()
2203 ath10k_pci_fw_crashed_clear(ar); in ath10k_pci_tasklet()
2204 ath10k_pci_fw_crashed_dump(ar); in ath10k_pci_tasklet()
2208 ath10k_ce_per_engine_service_any(ar); in ath10k_pci_tasklet()
2212 ath10k_pci_enable_legacy_irq(ar); in ath10k_pci_tasklet()
2215 static int ath10k_pci_request_irq_msix(struct ath10k *ar) in ath10k_pci_request_irq_msix() argument
2217 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_request_irq_msix()
2222 IRQF_SHARED, "ath10k_pci", ar); in ath10k_pci_request_irq_msix()
2224 ath10k_warn(ar, "failed to request MSI-X fw irq %d: %d\n", in ath10k_pci_request_irq_msix()
2232 IRQF_SHARED, "ath10k_pci", ar); in ath10k_pci_request_irq_msix()
2234 ath10k_warn(ar, "failed to request MSI-X ce irq %d: %d\n", in ath10k_pci_request_irq_msix()
2238 free_irq(ar_pci->pdev->irq + i, ar); in ath10k_pci_request_irq_msix()
2240 free_irq(ar_pci->pdev->irq + MSI_ASSIGN_FW, ar); in ath10k_pci_request_irq_msix()
2248 static int ath10k_pci_request_irq_msi(struct ath10k *ar) in ath10k_pci_request_irq_msi() argument
2250 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_request_irq_msi()
2255 IRQF_SHARED, "ath10k_pci", ar); in ath10k_pci_request_irq_msi()
2257 ath10k_warn(ar, "failed to request MSI irq %d: %d\n", in ath10k_pci_request_irq_msi()
2265 static int ath10k_pci_request_irq_legacy(struct ath10k *ar) in ath10k_pci_request_irq_legacy() argument
2267 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_request_irq_legacy()
2272 IRQF_SHARED, "ath10k_pci", ar); in ath10k_pci_request_irq_legacy()
2274 ath10k_warn(ar, "failed to request legacy irq %d: %d\n", in ath10k_pci_request_irq_legacy()
2282 static int ath10k_pci_request_irq(struct ath10k *ar) in ath10k_pci_request_irq() argument
2284 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_request_irq()
2288 return ath10k_pci_request_irq_legacy(ar); in ath10k_pci_request_irq()
2290 return ath10k_pci_request_irq_msi(ar); in ath10k_pci_request_irq()
2292 return ath10k_pci_request_irq_msix(ar); in ath10k_pci_request_irq()
2295 ath10k_warn(ar, "unknown irq configuration upon request\n"); in ath10k_pci_request_irq()
2299 static void ath10k_pci_free_irq(struct ath10k *ar) in ath10k_pci_free_irq() argument
2301 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_free_irq()
2307 free_irq(ar_pci->pdev->irq + i, ar); in ath10k_pci_free_irq()
2310 static void ath10k_pci_init_irq_tasklets(struct ath10k *ar) in ath10k_pci_init_irq_tasklets() argument
2312 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_init_irq_tasklets()
2315 tasklet_init(&ar_pci->intr_tq, ath10k_pci_tasklet, (unsigned long)ar); in ath10k_pci_init_irq_tasklets()
2317 (unsigned long)ar); in ath10k_pci_init_irq_tasklets()
2326 static int ath10k_pci_init_irq(struct ath10k *ar) in ath10k_pci_init_irq() argument
2328 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_init_irq()
2331 ath10k_pci_init_irq_tasklets(ar); in ath10k_pci_init_irq()
2334 ath10k_info(ar, "limiting irq mode to: %d\n", in ath10k_pci_init_irq()
2368 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + PCIE_INTR_ENABLE_ADDRESS, in ath10k_pci_init_irq()
2374 static void ath10k_pci_deinit_irq_legacy(struct ath10k *ar) in ath10k_pci_deinit_irq_legacy() argument
2376 ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS + PCIE_INTR_ENABLE_ADDRESS, in ath10k_pci_deinit_irq_legacy()
2380 static int ath10k_pci_deinit_irq(struct ath10k *ar) in ath10k_pci_deinit_irq() argument
2382 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_deinit_irq()
2386 ath10k_pci_deinit_irq_legacy(ar); in ath10k_pci_deinit_irq()
2397 ath10k_warn(ar, "unknown irq configuration upon deinit\n"); in ath10k_pci_deinit_irq()
2401 static int ath10k_pci_wait_for_target_init(struct ath10k *ar) in ath10k_pci_wait_for_target_init() argument
2403 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_wait_for_target_init()
2407 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot waiting target to initialise\n"); in ath10k_pci_wait_for_target_init()
2412 val = ath10k_pci_read32(ar, FW_INDICATOR_ADDRESS); in ath10k_pci_wait_for_target_init()
2414 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot target indicator %x\n", in ath10k_pci_wait_for_target_init()
2430 ath10k_pci_enable_legacy_irq(ar); in ath10k_pci_wait_for_target_init()
2435 ath10k_pci_disable_and_clear_legacy_irq(ar); in ath10k_pci_wait_for_target_init()
2436 ath10k_pci_irq_msi_fw_mask(ar); in ath10k_pci_wait_for_target_init()
2439 ath10k_err(ar, "failed to read device register, device is gone\n"); in ath10k_pci_wait_for_target_init()
2444 ath10k_warn(ar, "device has crashed during init\n"); in ath10k_pci_wait_for_target_init()
2449 ath10k_err(ar, "failed to receive initialized event from target: %08x\n", in ath10k_pci_wait_for_target_init()
2454 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot target initialised\n"); in ath10k_pci_wait_for_target_init()
2458 static int ath10k_pci_cold_reset(struct ath10k *ar) in ath10k_pci_cold_reset() argument
2463 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot cold reset\n"); in ath10k_pci_cold_reset()
2465 spin_lock_bh(&ar->data_lock); in ath10k_pci_cold_reset()
2467 ar->stats.fw_cold_reset_counter++; in ath10k_pci_cold_reset()
2469 spin_unlock_bh(&ar->data_lock); in ath10k_pci_cold_reset()
2472 val = ath10k_pci_reg_read32(ar, SOC_GLOBAL_RESET_ADDRESS); in ath10k_pci_cold_reset()
2474 ath10k_pci_reg_write32(ar, SOC_GLOBAL_RESET_ADDRESS, val); in ath10k_pci_cold_reset()
2477 if (ath10k_pci_reg_read32(ar, RTC_STATE_ADDRESS) & in ath10k_pci_cold_reset()
2485 ath10k_pci_reg_write32(ar, SOC_GLOBAL_RESET_ADDRESS, val); in ath10k_pci_cold_reset()
2488 if (!(ath10k_pci_reg_read32(ar, RTC_STATE_ADDRESS) & in ath10k_pci_cold_reset()
2494 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot cold reset complete\n"); in ath10k_pci_cold_reset()
2499 static int ath10k_pci_claim(struct ath10k *ar) in ath10k_pci_claim() argument
2501 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_claim()
2506 pci_set_drvdata(pdev, ar); in ath10k_pci_claim()
2510 ath10k_err(ar, "failed to enable pci device: %d\n", ret); in ath10k_pci_claim()
2516 ath10k_err(ar, "failed to request region BAR%d: %d\n", BAR_NUM, in ath10k_pci_claim()
2524 ath10k_err(ar, "failed to set dma mask to 32-bit: %d\n", ret); in ath10k_pci_claim()
2530 ath10k_err(ar, "failed to set consistent dma mask to 32-bit: %d\n", in ath10k_pci_claim()
2544 ath10k_err(ar, "failed to iomap BAR%d\n", BAR_NUM); in ath10k_pci_claim()
2549 ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot pci_mem 0x%p\n", ar_pci->mem); in ath10k_pci_claim()
2564 static void ath10k_pci_release(struct ath10k *ar) in ath10k_pci_release() argument
2566 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); in ath10k_pci_release()
2596 struct ath10k *ar; in ath10k_pci_probe() local
2613 ar = ath10k_core_create(sizeof(*ar_pci), &pdev->dev, ATH10K_BUS_PCI, in ath10k_pci_probe()
2615 if (!ar) { in ath10k_pci_probe()
2620 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci probe\n"); in ath10k_pci_probe()
2622 ar_pci = ath10k_pci_priv(ar); in ath10k_pci_probe()
2625 ar_pci->ar = ar; in ath10k_pci_probe()
2629 (unsigned long)ar); in ath10k_pci_probe()
2631 ret = ath10k_pci_claim(ar); in ath10k_pci_probe()
2633 ath10k_err(ar, "failed to claim device: %d\n", ret); in ath10k_pci_probe()
2637 ret = ath10k_pci_wake(ar); in ath10k_pci_probe()
2639 ath10k_err(ar, "failed to wake up: %d\n", ret); in ath10k_pci_probe()
2643 ret = ath10k_pci_alloc_pipes(ar); in ath10k_pci_probe()
2645 ath10k_err(ar, "failed to allocate copy engine pipes: %d\n", in ath10k_pci_probe()
2650 ath10k_pci_ce_deinit(ar); in ath10k_pci_probe()
2651 ath10k_pci_irq_disable(ar); in ath10k_pci_probe()
2653 ret = ath10k_pci_init_irq(ar); in ath10k_pci_probe()
2655 ath10k_err(ar, "failed to init irqs: %d\n", ret); in ath10k_pci_probe()
2659 ath10k_info(ar, "pci irq %s interrupts %d irq_mode %d reset_mode %d\n", in ath10k_pci_probe()
2660 ath10k_pci_get_irq_method(ar), ar_pci->num_msi_intrs, in ath10k_pci_probe()
2663 ret = ath10k_pci_request_irq(ar); in ath10k_pci_probe()
2665 ath10k_warn(ar, "failed to request irqs: %d\n", ret); in ath10k_pci_probe()
2669 ret = ath10k_pci_chip_reset(ar); in ath10k_pci_probe()
2671 ath10k_err(ar, "failed to reset chip: %d\n", ret); in ath10k_pci_probe()
2675 chip_id = ath10k_pci_soc_read32(ar, SOC_CHIP_ID_ADDRESS); in ath10k_pci_probe()
2677 ath10k_err(ar, "failed to get chip id\n"); in ath10k_pci_probe()
2682 ath10k_err(ar, "device %04x with chip_id %08x isn't supported\n", in ath10k_pci_probe()
2687 ath10k_pci_sleep(ar); in ath10k_pci_probe()
2689 ret = ath10k_core_register(ar, chip_id); in ath10k_pci_probe()
2691 ath10k_err(ar, "failed to register driver core: %d\n", ret); in ath10k_pci_probe()
2698 ath10k_pci_free_irq(ar); in ath10k_pci_probe()
2699 ath10k_pci_kill_tasklet(ar); in ath10k_pci_probe()
2702 ath10k_pci_deinit_irq(ar); in ath10k_pci_probe()
2705 ath10k_pci_free_pipes(ar); in ath10k_pci_probe()
2708 ath10k_pci_sleep(ar); in ath10k_pci_probe()
2711 ath10k_pci_release(ar); in ath10k_pci_probe()
2714 ath10k_core_destroy(ar); in ath10k_pci_probe()
2721 struct ath10k *ar = pci_get_drvdata(pdev); in ath10k_pci_remove() local
2724 ath10k_dbg(ar, ATH10K_DBG_PCI, "pci remove\n"); in ath10k_pci_remove()
2726 if (!ar) in ath10k_pci_remove()
2729 ar_pci = ath10k_pci_priv(ar); in ath10k_pci_remove()
2734 ath10k_core_unregister(ar); in ath10k_pci_remove()
2735 ath10k_pci_free_irq(ar); in ath10k_pci_remove()
2736 ath10k_pci_kill_tasklet(ar); in ath10k_pci_remove()
2737 ath10k_pci_deinit_irq(ar); in ath10k_pci_remove()
2738 ath10k_pci_ce_deinit(ar); in ath10k_pci_remove()
2739 ath10k_pci_free_pipes(ar); in ath10k_pci_remove()
2740 ath10k_pci_release(ar); in ath10k_pci_remove()
2741 ath10k_core_destroy(ar); in ath10k_pci_remove()