irq: enable suspended EARLY_RESUME irqs forcefully if not resumed
authorLaxman Dewangan <ldewangan@nvidia.com>
Mon, 3 Jun 2013 12:21:30 +0000 (17:21 +0530)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 14 Sep 2013 20:17:16 +0000 (13:17 -0700)
commitc6578a40f72640d31200745fb8c452c159e8880c
tree85ae8fb198f304077c517f40382583d01fce1d88
parent5870ae5a1b25ce0e73164a762d27caaa46e92cbe
irq: enable suspended EARLY_RESUME irqs forcefully if not resumed

When system enters into suspend, it disable all irqs in single
function call. This disables EARLY_RESUME irqs also along with
normal irqs.

The EARLY_RESUME irqs get enabled in sys_core_ops->resume and
non-EARLY_RESUME irqs get enabled in normal system resume path.

When suspend_noirq failed or suspend is aborted for any reason,
the EARLY_RESUME irqs do not get enabled as sys_core_ops->resume()
call did not happen. It only enables the non-EARLY_RESUME irqs in normal
system resume path. This makes the EARLY_RESUME irqs interrupt to be
disable for remaining life of system.

Add checks on normal irq_resume() whether EARLY_RESUME irqs have been
enabled or not and if not then enable it forcefully.

bug 1282448

Change-Id: I7ffffd725675ca635310eb4913a1f885d2e42e37
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/235000
(Cherrypicked commit 91262b293e7c061f6c80488fa235811362e128e6)
Reviewed-on: http://git-master/r/236600
Reviewed-by: Automatic_Commit_Validation_User
kernel/irq/pm.c