Loading drivers/net/wireless/cnss2/pci.c +36 −5 Original line number Original line Diff line number Diff line Loading @@ -364,6 +364,31 @@ static struct cnss_misc_reg wlaon_reg_access_seq[] = { #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) #if IS_ENABLED(CONFIG_PCI_MSM) /** * _cnss_pci_get_reg_dump() - Dump PCIe RC registers for debug * @pci_priv: driver PCI bus context pointer * @buf: destination buffer pointer * @len: length of the buffer * * This function shall call corresponding PCIe root complex driver API * to dump PCIe RC registers for debug purpose. * * Return: 0 for success, negative value for error */ static int _cnss_pci_get_reg_dump(struct cnss_pci_data *pci_priv, u8 *buf, u32 len) { return msm_pcie_reg_dump(pci_priv->pci_dev, buf, len); } #else static int _cnss_pci_get_reg_dump(struct cnss_pci_data *pci_priv, u8 *buf, u32 len) { return 0; } #endif /* CONFIG_PCI_MSM */ int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) { { u16 device_id; u16 device_id; Loading Loading @@ -930,15 +955,21 @@ EXPORT_SYMBOL(cnss_pci_link_down); int cnss_pci_get_reg_dump(struct device *dev, uint8_t *buffer, uint32_t len) int cnss_pci_get_reg_dump(struct device *dev, uint8_t *buffer, uint32_t len) { { struct pci_dev *pci_dev = to_pci_dev(dev); struct pci_dev *pci_dev = to_pci_dev(dev); struct cnss_pci_data *pci_priv = cnss_get_pci_priv(pci_dev); if (!pci_dev) { if (!pci_priv) { cnss_pr_err("pci_dev is NULL\n"); cnss_pr_err("pci_priv is NULL\n"); return -EINVAL; return -ENODEV; } if (pci_priv->pci_link_state == PCI_LINK_DOWN) { cnss_pr_dbg("No PCIe reg dump since PCIe device is suspended(D3)\n"); return -EACCES; } } cnss_pr_dbg("Get pci reg dump for hang data\n"); cnss_pr_dbg("Start to get PCIe reg dump\n"); return msm_pcie_reg_dump(pci_dev, buffer, len); return _cnss_pci_get_reg_dump(pci_priv, buffer, len); } } EXPORT_SYMBOL(cnss_pci_get_reg_dump); EXPORT_SYMBOL(cnss_pci_get_reg_dump); Loading Loading
drivers/net/wireless/cnss2/pci.c +36 −5 Original line number Original line Diff line number Diff line Loading @@ -364,6 +364,31 @@ static struct cnss_misc_reg wlaon_reg_access_seq[] = { #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) #if IS_ENABLED(CONFIG_PCI_MSM) /** * _cnss_pci_get_reg_dump() - Dump PCIe RC registers for debug * @pci_priv: driver PCI bus context pointer * @buf: destination buffer pointer * @len: length of the buffer * * This function shall call corresponding PCIe root complex driver API * to dump PCIe RC registers for debug purpose. * * Return: 0 for success, negative value for error */ static int _cnss_pci_get_reg_dump(struct cnss_pci_data *pci_priv, u8 *buf, u32 len) { return msm_pcie_reg_dump(pci_priv->pci_dev, buf, len); } #else static int _cnss_pci_get_reg_dump(struct cnss_pci_data *pci_priv, u8 *buf, u32 len) { return 0; } #endif /* CONFIG_PCI_MSM */ int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) { { u16 device_id; u16 device_id; Loading Loading @@ -930,15 +955,21 @@ EXPORT_SYMBOL(cnss_pci_link_down); int cnss_pci_get_reg_dump(struct device *dev, uint8_t *buffer, uint32_t len) int cnss_pci_get_reg_dump(struct device *dev, uint8_t *buffer, uint32_t len) { { struct pci_dev *pci_dev = to_pci_dev(dev); struct pci_dev *pci_dev = to_pci_dev(dev); struct cnss_pci_data *pci_priv = cnss_get_pci_priv(pci_dev); if (!pci_dev) { if (!pci_priv) { cnss_pr_err("pci_dev is NULL\n"); cnss_pr_err("pci_priv is NULL\n"); return -EINVAL; return -ENODEV; } if (pci_priv->pci_link_state == PCI_LINK_DOWN) { cnss_pr_dbg("No PCIe reg dump since PCIe device is suspended(D3)\n"); return -EACCES; } } cnss_pr_dbg("Get pci reg dump for hang data\n"); cnss_pr_dbg("Start to get PCIe reg dump\n"); return msm_pcie_reg_dump(pci_dev, buffer, len); return _cnss_pci_get_reg_dump(pci_priv, buffer, len); } } EXPORT_SYMBOL(cnss_pci_get_reg_dump); EXPORT_SYMBOL(cnss_pci_get_reg_dump); Loading