static int ath10k_ahb_remove(struct platform_device *pdev) { struct ath10k *ar = platform_get_drvdata(pdev); struct ath10k_ahb *ar_ahb; if (!ar) return -EINVAL; ar_ahb = ath10k_ahb_priv(ar); if (!ar_ahb) return -EINVAL; ath10k_dbg(ar, ATH10K_DBG_AHB, "ahb remove\n"); ath10k_core_unregister(ar); ath10k_ahb_irq_disable(ar); ath10k_ahb_release_irq_legacy(ar); ath10k_pci_release_resource(ar); ath10k_ahb_halt_chip(ar); ath10k_ahb_clock_disable(ar); ath10k_ahb_resource_deinit(ar); ath10k_core_destroy(ar); platform_set_drvdata(pdev, NULL); return 0; }
static void ath10k_ahb_hif_stop(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot ahb hif stop\n"); ath10k_ahb_irq_disable(ar); synchronize_irq(ar_ahb->irq); ath10k_pci_flush(ar); }
static void ath10k_ahb_hif_stop(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot ahb hif stop\n"); ath10k_ahb_irq_disable(ar); synchronize_irq(ar_ahb->irq); if (ar->napi_enabled) { napi_synchronize(&ar->napi); napi_disable(&ar->napi); ar->napi_enabled = false; } ath10k_pci_flush(ar); }
static int ath10k_ahb_prepare_device(struct ath10k *ar) { u32 val; int ret; ret = ath10k_ahb_clock_enable(ar); if (ret) { ath10k_err(ar, "failed to enable clocks\n"); return ret; } /* Clock for the target is supplied from outside of target (ie, * external clock module controlled by the host). Target needs * to know what frequency target cpu is configured which is needed * for target internal use. Read target cpu frequency info from * gcc register and write into target's scratch register where * target expects this information. */ val = ath10k_ahb_gcc_read32(ar, ATH10K_AHB_GCC_FEPLL_PLL_DIV); ath10k_ahb_write32(ar, ATH10K_AHB_WIFI_SCRATCH_5_REG, val); ret = ath10k_ahb_release_reset(ar); if (ret) goto err_clk_disable; ath10k_ahb_irq_disable(ar); ath10k_ahb_write32(ar, FW_INDICATOR_ADDRESS, FW_IND_HOST_READY); ret = ath10k_pci_wait_for_target_init(ar); if (ret) goto err_halt_chip; return 0; err_halt_chip: ath10k_ahb_halt_chip(ar); err_clk_disable: ath10k_ahb_clock_disable(ar); return ret; }