Loading drivers/net/wireless/cnss/cnss.c +37 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <soc/qcom/ramdump.h> #include <linux/msm-bus.h> #include <linux/msm-bus-board.h> #include <linux/spinlock.h> #include <linux/suspend.h> #include <linux/rwsem.h> #ifdef CONFIG_PCI_MSM Loading Loading @@ -110,6 +111,8 @@ static struct cnss_fw_files FW_FILES_DEFAULT = { #define CNSS_PINCTRL_STATE_ACTIVE "default" static DEFINE_SPINLOCK(pci_link_down_lock); struct cnss_wlan_gpio_info { char *name; u32 num; Loading Loading @@ -776,11 +779,45 @@ DECLARE_WORK(recovery_work, recovery_work_handler); void cnss_pci_link_down_cb(struct msm_pcie_notify *notify) { unsigned long flags; spin_lock_irqsave(&pci_link_down_lock, flags); if (penv->pcie_link_down_ind) { pr_debug("PCI link down recovery is in progress, ignore!\n"); spin_unlock_irqrestore(&pci_link_down_lock, flags); return; } penv->pcie_link_down_ind = true; spin_unlock_irqrestore(&pci_link_down_lock, flags); pr_err("PCI link down, schedule recovery\n"); schedule_work(&recovery_work); } void cnss_wlan_pci_link_down(void) { unsigned long flags; spin_lock_irqsave(&pci_link_down_lock, flags); if (penv->pcie_link_down_ind) { pr_debug("PCI link down recovery is in progress, ignore!\n"); spin_unlock_irqrestore(&pci_link_down_lock, flags); return; } penv->pcie_link_down_ind = true; spin_unlock_irqrestore(&pci_link_down_lock, flags); pr_err("PCI link down detected by host driver, schedule recovery!\n"); schedule_work(&recovery_work); } EXPORT_SYMBOL(cnss_wlan_pci_link_down); int cnss_pcie_shadow_control(struct pci_dev *dev, bool enable) { return msm_pcie_shadow_control(dev, enable); } EXPORT_SYMBOL(cnss_pcie_shadow_control); int cnss_wlan_register_driver(struct cnss_wlan_driver *driver) { int ret = 0; Loading include/net/cnss.h +2 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ extern int cnss_get_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 *ch_count, u16 buf_len); extern int cnss_wlan_set_dfs_nol(void *info, u16 info_len); extern int cnss_wlan_get_dfs_nol(void *info, u16 info_len); extern void cnss_wlan_pci_link_down(void); extern int cnss_pcie_shadow_control(struct pci_dev *dev, bool enable); extern int cnss_wlan_register_driver(struct cnss_wlan_driver *driver); extern void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver); extern int cnss_get_fw_files(struct cnss_fw_files *pfw_files); Loading Loading
drivers/net/wireless/cnss/cnss.c +37 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <soc/qcom/ramdump.h> #include <linux/msm-bus.h> #include <linux/msm-bus-board.h> #include <linux/spinlock.h> #include <linux/suspend.h> #include <linux/rwsem.h> #ifdef CONFIG_PCI_MSM Loading Loading @@ -110,6 +111,8 @@ static struct cnss_fw_files FW_FILES_DEFAULT = { #define CNSS_PINCTRL_STATE_ACTIVE "default" static DEFINE_SPINLOCK(pci_link_down_lock); struct cnss_wlan_gpio_info { char *name; u32 num; Loading Loading @@ -776,11 +779,45 @@ DECLARE_WORK(recovery_work, recovery_work_handler); void cnss_pci_link_down_cb(struct msm_pcie_notify *notify) { unsigned long flags; spin_lock_irqsave(&pci_link_down_lock, flags); if (penv->pcie_link_down_ind) { pr_debug("PCI link down recovery is in progress, ignore!\n"); spin_unlock_irqrestore(&pci_link_down_lock, flags); return; } penv->pcie_link_down_ind = true; spin_unlock_irqrestore(&pci_link_down_lock, flags); pr_err("PCI link down, schedule recovery\n"); schedule_work(&recovery_work); } void cnss_wlan_pci_link_down(void) { unsigned long flags; spin_lock_irqsave(&pci_link_down_lock, flags); if (penv->pcie_link_down_ind) { pr_debug("PCI link down recovery is in progress, ignore!\n"); spin_unlock_irqrestore(&pci_link_down_lock, flags); return; } penv->pcie_link_down_ind = true; spin_unlock_irqrestore(&pci_link_down_lock, flags); pr_err("PCI link down detected by host driver, schedule recovery!\n"); schedule_work(&recovery_work); } EXPORT_SYMBOL(cnss_wlan_pci_link_down); int cnss_pcie_shadow_control(struct pci_dev *dev, bool enable) { return msm_pcie_shadow_control(dev, enable); } EXPORT_SYMBOL(cnss_pcie_shadow_control); int cnss_wlan_register_driver(struct cnss_wlan_driver *driver) { int ret = 0; Loading
include/net/cnss.h +2 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ extern int cnss_get_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 *ch_count, u16 buf_len); extern int cnss_wlan_set_dfs_nol(void *info, u16 info_len); extern int cnss_wlan_get_dfs_nol(void *info, u16 info_len); extern void cnss_wlan_pci_link_down(void); extern int cnss_pcie_shadow_control(struct pci_dev *dev, bool enable); extern int cnss_wlan_register_driver(struct cnss_wlan_driver *driver); extern void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver); extern int cnss_get_fw_files(struct cnss_fw_files *pfw_files); Loading