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

Commit d15d938f authored by Lin Bai's avatar Lin Bai
Browse files

cnss2: Add CNSS_BUS_EVENT to report bus info



CNSS_BUS_EVENT type added to report bus related info to
CLD driver.
Currently only PCIe's link down event taken care.

Change-Id: Ia18ce1b9ca8d0641e62271d645f1c87461029a26
Signed-off-by: default avatarLin Bai <lbai@codeaurora.org>
parent 3144c1d4
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -889,6 +889,17 @@ void cnss_pci_allow_l1(struct device *dev)
}
EXPORT_SYMBOL(cnss_pci_allow_l1);

static void cnss_pci_update_link_event(struct cnss_pci_data *pci_priv,
				       enum cnss_bus_event_type type,
				       void *data)
{
	struct cnss_bus_event bus_event;

	bus_event.etype = type;
	bus_event.event_data = data;
	cnss_pci_call_driver_uevent(pci_priv, CNSS_BUS_EVENT, &bus_event);
}

static void cnss_pci_handle_linkdown(struct cnss_pci_data *pci_priv)
{
	struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
@@ -913,6 +924,12 @@ static void cnss_pci_handle_linkdown(struct cnss_pci_data *pci_priv)
	if (pci_dev->device == QCA6174_DEVICE_ID)
		disable_irq(pci_dev->irq);

	/* Notify bus related event. Now for all supported chips.
	 * Here PCIe LINK_DOWN notification taken care.
	 * uevent buffer can be extended later, to cover more bus info.
	 */
	cnss_pci_update_link_event(pci_priv, BUS_EVENT_PCI_LINK_DOWN, NULL);

	cnss_fatal_err("PCI link down, schedule recovery\n");
	cnss_schedule_recovery(&pci_dev->dev, CNSS_REASON_LINK_DOWN);
}
+12 −0
Original line number Diff line number Diff line
@@ -83,6 +83,13 @@ enum cnss_driver_status {
	CNSS_RECOVERY,
	CNSS_FW_DOWN,
	CNSS_HANG_EVENT,
	CNSS_BUS_EVENT,
};

enum cnss_bus_event_type {
	BUS_EVENT_PCI_LINK_DOWN = 0,

	BUS_EVENT_INVALID = 0xFFFF,
};

struct cnss_hang_event {
@@ -90,6 +97,11 @@ struct cnss_hang_event {
	u16 hang_event_data_len;
};

struct cnss_bus_event {
	enum cnss_bus_event_type etype;
	void *event_data;
};

struct cnss_uevent_data {
	enum cnss_driver_status status;
	void *data;