Skip to contentSkip to conversation

sh_cmt: use remove_irq() and remove clockevent workaround

PATCH In review Magnus Damm 2 participants 2 messages Apr 1, 2009 – Apr 2, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sh_cmt: use remove_irq() and remove clockevent workaround

From: Magnus Damm <[email protected]>

Update the sh_cmt driver to make use of recent irq and clockevent changes:
- use remove_irq() together with setup_irq()
- remove mult workaround since WARN_ON() now has been moved

---

 drivers/clocksource/sh_cmt.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/clocksource/sh_cmt.c +1 -2
@@ -465,7 +465,6 @@ static void sh_cmt_register_clockevent(s
 	ced->set_mode = sh_cmt_clock_event_mode;
 
 	pr_info("sh_cmt: %s used for clock events\n", ced->name);
-	ced->mult = 1; /* work around misplaced WARN_ON() in clockevents.c */
 	clockevents_register_device(ced);
 }
 
@@ -557,7 +556,7 @@ static int sh_cmt_setup(struct sh_cmt_pr
 			       cfg->clockevent_rating,
 			       cfg->clocksource_rating);
  err2:
-	free_irq(irq, p);
+	remove_irq(irq, &p->irqaction);
  err1:
 	iounmap(p->mapbase);
  err0:
#1 lore raw
Quoted 3 lines · Magnus Damm

Update the sh_cmt driver to make use of recent irq and clockevent changes:
- use remove_irq() together with setup_irq()
- remove mult workaround since WARN_ON() now has been moved

Quoted 6 lines · Magnus Damm

Modify the intc code to install a disable callback. The current solution without a disable callback results in use of the generic default_disable() function. This function is a no-op so suspend_device_irqs() will not disable any intc interrupts at suspend time without this patch. Also, install enable and shutdown callbacks while at it.

Quoted 8 lines · Magnus Damm

Add set_irq_wake() support to intc using sysdev and suspend.

The intc controllers are put on a list at registration time and registered as sysdev devices later on during the boot.

The sysdev class suspend callback is used to find irqs with wakeup enabled belonging to our intc controller. Such irqs are simply enabled so wakeup interrupts may reach the cpu.

Quoted 4 lines · Magnus Damm

Modify the sh_keysc driver to use enable/disable_irq_wake() during suspend and resume. These functions are used to enable the sh_keysc interrupt in the interrupt controller so the keypad can be used to wakeup the system from suspend.

Quoted 4 lines · Magnus Damm

Modify the sh_rtc driver to use set_irq_wake() during suspend and resume. These functions are used to enable the rtc interrupts in the interrupt controller so the rtc can be used to wakeup the system from suspend.

Quoted 3 lines · Magnus Damm

Add wakeup support to the migor_ts driver. If user space has enabled wakeup, use set_irq_wake() during suspend and resume. With this patch the migor_ts driver can be used to wake the system from suspend.

All applied, thanks.