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

Commit b7fcc5ad authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add CNSS wrapper function for msm_pcie_reg_dump()"

parents de31e2c4 5e6277f6
Loading
Loading
Loading
Loading
+36 −5
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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);