|
@@ -3234,8 +3234,12 @@ int cnss_pci_register_driver_hdlr(struct cnss_pci_data *pci_priv,
|
|
|
|
|
|
int cnss_pci_unregister_driver_hdlr(struct cnss_pci_data *pci_priv)
|
|
|
{
|
|
|
- struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
|
|
|
+ struct cnss_plat_data *plat_priv;
|
|
|
+
|
|
|
+ if (!pci_priv)
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
+ plat_priv = pci_priv->plat_priv;
|
|
|
set_bit(CNSS_DRIVER_UNLOADING, &plat_priv->driver_state);
|
|
|
cnss_pci_dev_shutdown(pci_priv);
|
|
|
pci_priv->driver_ops = NULL;
|
|
@@ -5789,7 +5793,9 @@ static void cnss_pci_unregister_mhi(struct cnss_pci_data *pci_priv)
|
|
|
|
|
|
mhi_unregister_controller(mhi_ctrl);
|
|
|
kfree(mhi_ctrl->irq);
|
|
|
+ mhi_ctrl->irq = NULL;
|
|
|
mhi_free_controller(mhi_ctrl);
|
|
|
+ pci_priv->mhi_ctrl = NULL;
|
|
|
}
|
|
|
|
|
|
static void cnss_pci_config_regs(struct cnss_pci_data *pci_priv)
|
|
@@ -6166,6 +6172,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev)
|
|
|
cnss_bus_dev_to_plat_priv(&pci_dev->dev);
|
|
|
|
|
|
clear_bit(CNSS_PCI_PROBE_DONE, &plat_priv->driver_state);
|
|
|
+ cnss_pci_unregister_driver_hdlr(pci_priv);
|
|
|
cnss_pci_free_m3_mem(pci_priv);
|
|
|
cnss_pci_free_fw_mem(pci_priv);
|
|
|
cnss_pci_free_qdss_mem(pci_priv);
|