diff options
author | Dave Airlie <airlied@redhat.com> | 2013-10-22 10:32:40 +0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-10-22 10:32:40 +0400 |
commit | 3bcec5f076688c58436a6c354f5b94eef16469da (patch) | |
tree | 6e50e1c03d52bffbd17b16dd6b153a428f0b9e7c /drivers/spi/spi-pxa2xx.c | |
parent | bc5bd37ce48c66e9192ad2e7231e9678880f6f8e (diff) | |
parent | 828c79087cec61eaf4c76bb32c222fbe35ac3930 (diff) | |
download | linux-3bcec5f076688c58436a6c354f5b94eef16469da.tar.xz |
Merge tag 'drm-intel-fixes-2013-10-21' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
Just an lvds clock gating fix and a pte clearing hack for hsw to avoid
memory corruption when hibernating - something doesn't seem to switch off
properly, we're still investigating.
* tag 'drm-intel-fixes-2013-10-21' of git://people.freedesktop.org/~danvet/drm-intel: (96 commits)
drm/i915: Disable GGTT PTEs on GEN6+ suspend
drm/i915: Make PTE valid encoding optional
drm/i915: disable LVDS clock gating on CPT v2
Diffstat (limited to 'drivers/spi/spi-pxa2xx.c')
-rw-r--r-- | drivers/spi/spi-pxa2xx.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c index 2eb06ee0b326..c1a50674c1e3 100644 --- a/drivers/spi/spi-pxa2xx.c +++ b/drivers/spi/spi-pxa2xx.c @@ -546,8 +546,17 @@ static irqreturn_t ssp_int(int irq, void *dev_id) if (pm_runtime_suspended(&drv_data->pdev->dev)) return IRQ_NONE; - sccr1_reg = read_SSCR1(reg); + /* + * If the device is not yet in RPM suspended state and we get an + * interrupt that is meant for another device, check if status bits + * are all set to one. That means that the device is already + * powered off. + */ status = read_SSSR(reg); + if (status == ~0) + return IRQ_NONE; + + sccr1_reg = read_SSCR1(reg); /* Ignore possible writes if we don't need to write */ if (!(sccr1_reg & SSCR1_TIE)) |