diff options
-rw-r--r-- | drivers/staging/fsl_pme2/pme2_ctrl.c | 6 | ||||
-rw-r--r-- | drivers/staging/fsl_pme2/pme2_suspend.c | 5 |
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(); |