Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Avinash Patil and committed by
Kalle Valo
7be0f5b5 f3b35f28

+26 -8
+25 -8
drivers/net/wireless/marvell/mwifiex/pcie.c
··· 2599 2599 kfree(card); 2600 2600 } 2601 2601 2602 + static int mwifiex_pcie_request_irq(struct mwifiex_adapter *adapter) 2603 + { 2604 + int ret; 2605 + struct pcie_service_card *card = adapter->card; 2606 + struct pci_dev *pdev = card->dev; 2607 + 2608 + if (pci_enable_msi(pdev) != 0) 2609 + pci_disable_msi(pdev); 2610 + else 2611 + card->msi_enable = 1; 2612 + 2613 + mwifiex_dbg(adapter, INFO, "msi_enable = %d\n", card->msi_enable); 2614 + 2615 + ret = request_irq(pdev->irq, mwifiex_pcie_interrupt, IRQF_SHARED, 2616 + "MRVL_PCIE", pdev); 2617 + if (ret) { 2618 + pr_err("request_irq failed: ret=%d\n", ret); 2619 + adapter->card = NULL; 2620 + return -1; 2621 + } 2622 + 2623 + return 0; 2624 + } 2625 + 2602 2626 /* 2603 2627 * This function registers the PCIE device. 2604 2628 * ··· 2630 2606 */ 2631 2607 static int mwifiex_register_dev(struct mwifiex_adapter *adapter) 2632 2608 { 2633 - int ret; 2634 2609 struct pcie_service_card *card = adapter->card; 2635 2610 struct pci_dev *pdev = card->dev; 2636 2611 2637 2612 /* save adapter pointer in card */ 2638 2613 card->adapter = adapter; 2639 2614 2640 - ret = request_irq(pdev->irq, mwifiex_pcie_interrupt, IRQF_SHARED, 2641 - "MRVL_PCIE", pdev); 2642 - if (ret) { 2643 - mwifiex_dbg(adapter, ERROR, 2644 - "request_irq failed: ret=%d\n", ret); 2645 - adapter->card = NULL; 2615 + if (mwifiex_pcie_request_irq(adapter)) 2646 2616 return -1; 2647 - } 2648 2617 2649 2618 adapter->dev = &pdev->dev; 2650 2619 adapter->tx_buf_size = card->pcie.tx_buf_size;
+1
drivers/net/wireless/marvell/mwifiex/pcie.h
··· 326 326 dma_addr_t sleep_cookie_pbase; 327 327 void __iomem *pci_mmap; 328 328 void __iomem *pci_mmap1; 329 + int msi_enable; 329 330 }; 330 331 331 332 static inline int