Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60111823 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add support to update status to WLAN driver"

parents 0f8c3985 09636b44
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -332,3 +332,19 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv,
		return -EINVAL;
		return -EINVAL;
	}
	}
}
}

int cnss_bus_update_status(struct cnss_plat_data *plat_priv,
			   enum cnss_driver_status status)
{
	if (!plat_priv)
		return -ENODEV;

	switch (plat_priv->bus_type) {
	case CNSS_BUS_PCI:
		return cnss_pci_update_status(plat_priv->bus_priv, status);
	default:
		cnss_pr_err("Unsupported bus type: %d\n",
			    plat_priv->bus_type);
		return -EINVAL;
	}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -51,5 +51,7 @@ int cnss_bus_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data);
int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv);
int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv);
int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv,
int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv,
				      int modem_current_status);
				      int modem_current_status);
int cnss_bus_update_status(struct cnss_plat_data *plat_priv,
			   enum cnss_driver_status status);


#endif /* _CNSS_BUS_H */
#endif /* _CNSS_BUS_H */
+24 −2
Original line number Original line Diff line number Diff line
@@ -223,6 +223,7 @@ int cnss_pci_link_down(struct device *dev)


	cnss_pr_err("PCI link down is detected by host driver, schedule recovery!\n");
	cnss_pr_err("PCI link down is detected by host driver, schedule recovery!\n");


	cnss_pci_update_status(pci_priv, CNSS_FW_DOWN);
	cnss_schedule_recovery(dev, CNSS_REASON_LINK_DOWN);
	cnss_schedule_recovery(dev, CNSS_REASON_LINK_DOWN);


	return 0;
	return 0;
@@ -350,6 +351,25 @@ int cnss_pci_call_driver_modem_status(struct cnss_pci_data *pci_priv,
	return 0;
	return 0;
}
}


int cnss_pci_update_status(struct cnss_pci_data *pci_priv,
			   enum cnss_driver_status status)
{
	struct cnss_wlan_driver *driver_ops;

	if (!pci_priv)
		return -ENODEV;

	driver_ops = pci_priv->driver_ops;
	if (!driver_ops || !driver_ops->update_status)
		return -EINVAL;

	cnss_pr_dbg("Update driver status: %d\n", status);

	driver_ops->update_status(pci_priv->pci_dev, status);

	return 0;
}

static int cnss_qca6174_powerup(struct cnss_pci_data *pci_priv)
static int cnss_qca6174_powerup(struct cnss_pci_data *pci_priv)
{
{
	int ret = 0;
	int ret = 0;
@@ -890,6 +910,8 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify)
		cnss_pr_err("PCI link down, schedule recovery!\n");
		cnss_pr_err("PCI link down, schedule recovery!\n");
		if (pci_dev->device == QCA6174_DEVICE_ID)
		if (pci_dev->device == QCA6174_DEVICE_ID)
			disable_irq(pci_dev->irq);
			disable_irq(pci_dev->irq);

		cnss_pci_update_status(pci_priv, CNSS_FW_DOWN);
		cnss_schedule_recovery(&pci_dev->dev, CNSS_REASON_LINK_DOWN);
		cnss_schedule_recovery(&pci_dev->dev, CNSS_REASON_LINK_DOWN);
		break;
		break;
	case MSM_PCIE_EVENT_WAKEUP:
	case MSM_PCIE_EVENT_WAKEUP:
@@ -2027,8 +2049,8 @@ static void cnss_mhi_notify_status(struct mhi_controller *mhi_ctrl, void *priv,
	set_bit(CNSS_DEV_ERR_NOTIFY, &plat_priv->driver_state);
	set_bit(CNSS_DEV_ERR_NOTIFY, &plat_priv->driver_state);
	del_timer(&plat_priv->fw_boot_timer);
	del_timer(&plat_priv->fw_boot_timer);


	cnss_schedule_recovery(&pci_priv->pci_dev->dev,
	cnss_pci_update_status(pci_priv, CNSS_FW_DOWN);
			       cnss_reason);
	cnss_schedule_recovery(&pci_priv->pci_dev->dev, cnss_reason);
}
}


static int cnss_pci_get_mhi_msi(struct cnss_pci_data *pci_priv)
static int cnss_pci_get_mhi_msi(struct cnss_pci_data *pci_priv)
+2 −0
Original line number Original line Diff line number Diff line
@@ -149,5 +149,7 @@ void cnss_pci_pm_runtime_get_noresume(struct cnss_pci_data *pci_priv);
int cnss_pci_pm_runtime_put_autosuspend(struct cnss_pci_data *pci_priv);
int cnss_pci_pm_runtime_put_autosuspend(struct cnss_pci_data *pci_priv);
void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv);
void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv);
void cnss_pci_pm_runtime_mark_last_busy(struct cnss_pci_data *pci_priv);
void cnss_pci_pm_runtime_mark_last_busy(struct cnss_pci_data *pci_priv);
int cnss_pci_update_status(struct cnss_pci_data *pci_priv,
			   enum cnss_driver_status status);


#endif /* _CNSS_PCI_H */
#endif /* _CNSS_PCI_H */