aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSong Hongyan <hongyan.song@intel.com>2018-12-10 20:58:23 -0500
committerJiri Kosina <jkosina@suse.cz>2018-12-19 13:59:01 -0500
commit74fbc7d371d9a438b8e39d926d9d5012d2f762c4 (patch)
tree903758c649f326fda946121342a24a3aabb6eaa4 /drivers
parentf5d582777bcb1c7ff19a5a2343f66ea01de401c6 (diff)
HID: intel-ish-hid: add MSI interrupt support
Now ish hid ipc only support sideband interrupt but on some platforms they use MSI interrupt. In order to make the interrupt type coverage all the scenario add single MSI interrupt support, it can match all interrupt types. Signed-off-by: Song Hongyan <hongyan.song@intel.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/hid/intel-ish-hid/ipc/pci-ish.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/hid/intel-ish-hid/ipc/pci-ish.c b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
index 8793cc49f855..a6e1ee744f4d 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)
117{ 117{
118 int ret; 118 int ret;
119 struct ish_hw *hw; 119 struct ish_hw *hw;
120 unsigned long irq_flag = 0;
120 struct ishtp_device *ishtp; 121 struct ishtp_device *ishtp;
121 struct device *dev = &pdev->dev; 122 struct device *dev = &pdev->dev;
122 123
@@ -156,8 +157,12 @@ static int ish_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
156 pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3; 157 pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
157 158
158 /* request and enable interrupt */ 159 /* request and enable interrupt */
160 ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
161 if (!pdev->msi_enabled && !pdev->msix_enabled)
162 irq_flag = IRQF_SHARED;
163
159 ret = devm_request_irq(dev, pdev->irq, ish_irq_handler, 164 ret = devm_request_irq(dev, pdev->irq, ish_irq_handler,
160 IRQF_SHARED, KBUILD_MODNAME, ishtp); 165 irq_flag, KBUILD_MODNAME, ishtp);
161 if (ret) { 166 if (ret) {
162 dev_err(dev, "ISH: request IRQ %d failed\n", pdev->irq); 167 dev_err(dev, "ISH: request IRQ %d failed\n", pdev->irq);
163 return ret; 168 return ret;