diff mbox series

hid:intel-ish-hid: add MSI interrupt support

Message ID 1543825642-31988-1-git-send-email-hongyan.song@intel.com (mailing list archive)
State Superseded
Delegated to: Jiri Kosina
Headers show
Series hid:intel-ish-hid: add MSI interrupt support | expand

Commit Message

Song, Hongyan Dec. 3, 2018, 8:27 a.m. UTC
From: Song Hongyan <hongyan.song@intel.com>

Add single MSI interrupt support to widely match interrupt types.

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Reviewed-by: Hong Liu <hong.liu@intel.com>
---
 drivers/hid/intel-ish-hid/ipc/pci-ish.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Jiri Kosina Dec. 10, 2018, 12:38 p.m. UTC | #1
On Mon, 3 Dec 2018, hongyan.song@intel.com wrote:

> From: Song Hongyan <hongyan.song@intel.com>
> 
> Add single MSI interrupt support to widely match interrupt types.

Could you please provide more verbose and detailed changelog? Namely why 
do we need to have this patch, what it is improving, what are user visible 
changes / improvements, etc.

Thanks,
diff mbox series

Patch

diff --git a/drivers/hid/intel-ish-hid/ipc/pci-ish.c b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
index 8793cc4..a6e1ee7 100644
--- a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
+++ b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
@@ -117,6 +117,7 @@  static int ish_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	int ret;
 	struct ish_hw *hw;
+	unsigned long irq_flag = 0;
 	struct ishtp_device *ishtp;
 	struct device *dev = &pdev->dev;
 
@@ -156,8 +157,12 @@  static int ish_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
 
 	/* request and enable interrupt */
+	ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
+	if (!pdev->msi_enabled && !pdev->msix_enabled)
+		irq_flag = IRQF_SHARED;
+
 	ret = devm_request_irq(dev, pdev->irq, ish_irq_handler,
-			       IRQF_SHARED, KBUILD_MODNAME, ishtp);
+			       irq_flag, KBUILD_MODNAME, ishtp);
 	if (ret) {
 		dev_err(dev, "ISH: request IRQ %d failed\n", pdev->irq);
 		return ret;