Skip to content

Commit

Permalink
sh: intc: Added resume from hibernation support to the intc
Browse files Browse the repository at this point in the history
It's required for all modules loaded in the previous runtime
session because not initilized duing the kernel start-up.

Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Francesco VIRLINZI authored and Paul Mundt committed Apr 6, 2009
1 parent 0221c81 commit 7fd87b3
Showing 1 changed file with 31 additions and 4 deletions.
35 changes: 31 additions & 4 deletions drivers/sh/intc.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ struct intc_handle_int {
struct intc_desc_int {
struct list_head list;
struct sys_device sysdev;
pm_message_t state;
unsigned long *reg;
#ifdef CONFIG_SMP
unsigned long *smp;
Expand Down Expand Up @@ -786,18 +787,44 @@ static int intc_suspend(struct sys_device *dev, pm_message_t state)
/* get intc controller associated with this sysdev */
d = container_of(dev, struct intc_desc_int, sysdev);

/* enable wakeup irqs belonging to this intc controller */
for_each_irq_desc(irq, desc) {
if ((desc->status & IRQ_WAKEUP) && (desc->chip == &d->chip))
intc_enable(irq);
switch (state.event) {
case PM_EVENT_ON:
if (d->state.event != PM_EVENT_FREEZE)
break;
for_each_irq_desc(irq, desc) {
if (desc->chip != &d->chip)
continue;
if (desc->status & IRQ_DISABLED)
intc_disable(irq);
else
intc_enable(irq);
}
break;
case PM_EVENT_FREEZE:
/* nothing has to be done */
break;
case PM_EVENT_SUSPEND:
/* enable wakeup irqs belonging to this intc controller */
for_each_irq_desc(irq, desc) {
if ((desc->status & IRQ_WAKEUP) && (desc->chip == &d->chip))
intc_enable(irq);
}
break;
}
d->state = state;

return 0;
}

static int intc_resume(struct sys_device *dev)
{
return intc_suspend(dev, PMSG_ON);
}

static struct sysdev_class intc_sysdev_class = {
.name = "intc",
.suspend = intc_suspend,
.resume = intc_resume,
};

/* register this intc as sysdev to allow suspend/resume */
Expand Down

0 comments on commit 7fd87b3

Please sign in to comment.