2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-20 11:13:58 +08:00

mwifiex: enable MSI interrupt support in pcie

Newer pcie devices (8897 onwards) support MSI. This
patch enables it.

Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Avinash Patil 2015-12-16 04:21:45 -08:00 committed by Kalle Valo
parent f3b35f2809
commit 7be0f5b5e1
2 changed files with 26 additions and 8 deletions

View File

@ -2599,6 +2599,30 @@ static void mwifiex_pcie_cleanup(struct mwifiex_adapter *adapter)
kfree(card);
}
static int mwifiex_pcie_request_irq(struct mwifiex_adapter *adapter)
{
int ret;
struct pcie_service_card *card = adapter->card;
struct pci_dev *pdev = card->dev;
if (pci_enable_msi(pdev) != 0)
pci_disable_msi(pdev);
else
card->msi_enable = 1;
mwifiex_dbg(adapter, INFO, "msi_enable = %d\n", card->msi_enable);
ret = request_irq(pdev->irq, mwifiex_pcie_interrupt, IRQF_SHARED,
"MRVL_PCIE", pdev);
if (ret) {
pr_err("request_irq failed: ret=%d\n", ret);
adapter->card = NULL;
return -1;
}
return 0;
}
/*
* This function registers the PCIE device.
*
@ -2606,21 +2630,14 @@ static void mwifiex_pcie_cleanup(struct mwifiex_adapter *adapter)
*/
static int mwifiex_register_dev(struct mwifiex_adapter *adapter)
{
int ret;
struct pcie_service_card *card = adapter->card;
struct pci_dev *pdev = card->dev;
/* save adapter pointer in card */
card->adapter = adapter;
ret = request_irq(pdev->irq, mwifiex_pcie_interrupt, IRQF_SHARED,
"MRVL_PCIE", pdev);
if (ret) {
mwifiex_dbg(adapter, ERROR,
"request_irq failed: ret=%d\n", ret);
adapter->card = NULL;
if (mwifiex_pcie_request_irq(adapter))
return -1;
}
adapter->dev = &pdev->dev;
adapter->tx_buf_size = card->pcie.tx_buf_size;

View File

@ -326,6 +326,7 @@ struct pcie_service_card {
dma_addr_t sleep_cookie_pbase;
void __iomem *pci_mmap;
void __iomem *pci_mmap1;
int msi_enable;
};
static inline int