Commit 4c5bb6eb authored by Alexander Shishkin's avatar Alexander Shishkin Committed by Greg Kroah-Hartman

intel_th: Only report useful IRQs to subdevices

The only type of IRQ triggering event that is useful to us at the moment
is the "last block" interrupt of the MSU. This interrupt can only be
enabled via "MINTCTL" register that doesn't exist in earlier version of
the Intel TH.

Enumerate the presence of MINTCTL via per-device driver data structure
and only instantiate the IRQ resource for subdevices if this capability
is present.
Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent aac8da65
...@@ -639,7 +639,12 @@ intel_th_subdevice_alloc(struct intel_th *th, ...@@ -639,7 +639,12 @@ intel_th_subdevice_alloc(struct intel_th *th,
dev_dbg(th->dev, "%s:%d @ %pR\n", dev_dbg(th->dev, "%s:%d @ %pR\n",
subdev->name, r, &res[r]); subdev->name, r, &res[r]);
} else if (res[r].flags & IORESOURCE_IRQ) { } else if (res[r].flags & IORESOURCE_IRQ) {
res[r].start = th->irq; /*
* Only pass on the IRQ if we have useful interrupts:
* the ones that can be configured via MINTCTL.
*/
if (INTEL_TH_CAP(th, has_mintctl) && th->irq != -1)
res[r].start = th->irq;
} }
} }
......
...@@ -44,10 +44,12 @@ struct intel_th_output { ...@@ -44,10 +44,12 @@ struct intel_th_output {
/** /**
* struct intel_th_drvdata - describes hardware capabilities and quirks * struct intel_th_drvdata - describes hardware capabilities and quirks
* @tscu_enable: device needs SW to enable time stamping unit * @tscu_enable: device needs SW to enable time stamping unit
* @has_mintctl: device has interrupt control (MINTCTL) register
* @host_mode_only: device can only operate in 'host debugger' mode * @host_mode_only: device can only operate in 'host debugger' mode
*/ */
struct intel_th_drvdata { struct intel_th_drvdata {
unsigned int tscu_enable : 1, unsigned int tscu_enable : 1,
has_mintctl : 1,
host_mode_only : 1; host_mode_only : 1;
}; };
......
...@@ -122,6 +122,7 @@ static void intel_th_pci_remove(struct pci_dev *pdev) ...@@ -122,6 +122,7 @@ static void intel_th_pci_remove(struct pci_dev *pdev)
static const struct intel_th_drvdata intel_th_2x = { static const struct intel_th_drvdata intel_th_2x = {
.tscu_enable = 1, .tscu_enable = 1,
.has_mintctl = 1,
}; };
static const struct pci_device_id intel_th_pci_id_table[] = { static const struct pci_device_id intel_th_pci_id_table[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment