summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/fsl_pme2/pme2_ctrl.c6
-rw-r--r--drivers/staging/fsl_pme2/pme2_suspend.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/staging/fsl_pme2/pme2_ctrl.c b/drivers/staging/fsl_pme2/pme2_ctrl.c
index 016648c..136d7e0 100644
--- a/drivers/staging/fsl_pme2/pme2_ctrl.c
+++ b/drivers/staging/fsl_pme2/pme2_ctrl.c
@@ -891,6 +891,9 @@ int pme_attr_set(enum pme_attr attr, u32 val)
case pme_attr_efqc:
pme_out(global_pme, EFQC, val);
break;
+ case pme_attr_iir:
+ pme_out(global_pme, IIR, val);
+ break;
default:
pr_err("pme: Unknown attr %u\n", attr);
return -EINVAL;
@@ -1383,6 +1386,9 @@ int pme_attr_get(enum pme_attr attr, u32 *val)
attr_val = pme_in(global_pme, EFQC);
break;
+ case pme_attr_iir:
+ attr_val = pme_in(global_pme, IIR);
+ break;
default:
pr_err("pme: Unknown attr %u\n", attr);
diff --git a/drivers/staging/fsl_pme2/pme2_suspend.c b/drivers/staging/fsl_pme2/pme2_suspend.c
index e2ef2af..6cbb3f5 100644
--- a/drivers/staging/fsl_pme2/pme2_suspend.c
+++ b/drivers/staging/fsl_pme2/pme2_suspend.c
@@ -1012,6 +1012,11 @@ int pme_suspend(struct pme2_private_data *priv_data)
/* disable pme */
pme_attr_set(pme_attr_faconf_en, 0);
+ /* Set IIR to mask any pending interrupts, required to have idle
+ * line asserted
+ */
+ pme_attr_set(pme_attr_iir, 1);
+
/* wait until device is not active */
while (is_pme_active()) {
cpu_relax();