Merge git://git.infradead.org/iommu-2.6 into iommu/fixes
[deliverable/linux.git] / arch / arm / mach-tegra / cpuidle-tegra20.c
index 706aa4215c3636ffd39a2211dda5cc1319ce52db..b82dcaee2ef4eb80ae215bf3d0dbe4ceb1cc8ba0 100644 (file)
@@ -211,6 +211,18 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev,
 }
 #endif
 
+/*
+ * Tegra20 HW appears to have a bug such that PCIe device interrupts, whether
+ * they are legacy IRQs or MSI, are lost when LP2 is enabled. To work around
+ * this, simply disable LP2 if the PCI driver and DT node are both enabled.
+ */
+void tegra20_cpuidle_pcie_irqs_in_use(void)
+{
+       pr_info_once(
+               "Disabling cpuidle LP2 state, since PCIe IRQs are in use\n");
+       tegra_idle_driver.states[1].disabled = true;
+}
+
 int __init tegra20_cpuidle_init(void)
 {
        return cpuidle_register(&tegra_idle_driver, cpu_possible_mask);
This page took 0.023977 seconds and 5 git commands to generate.