Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd0e08a8 authored by Deepak Sikri's avatar Deepak Sikri Committed by Linus Torvalds
Browse files

rtc-spear: fix for balancing the enable_irq_wake in Power Mgmt



Handle the fix for unbalanced irq for the cases when enable_irq_wake
fails, and a warning related to same is displayed on the console.  The
workaround is handled at the driver level.

Signed-off-by: default avatarDeepak Sikri <deepak.sikri@st.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
Acked-by: default avatarRajeev Kumar <rajeev-dlh.kumar@st.com>
Cc: Shiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0e0cb892
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ struct spear_rtc_config {
	struct clk *clk;
	spinlock_t lock;
	void __iomem *ioaddr;
	unsigned int irq_wake;
};

static inline void spear_rtc_clear_interrupt(struct spear_rtc_config *config)
@@ -463,9 +464,10 @@ static int spear_rtc_suspend(struct platform_device *pdev, pm_message_t state)
	int irq;

	irq = platform_get_irq(pdev, 0);
	if (device_may_wakeup(&pdev->dev))
		enable_irq_wake(irq);
	else {
	if (device_may_wakeup(&pdev->dev)) {
		if (!enable_irq_wake(irq))
			config->irq_wake = 1;
	} else {
		spear_rtc_disable_interrupt(config);
		clk_disable(config->clk);
	}
@@ -481,9 +483,12 @@ static int spear_rtc_resume(struct platform_device *pdev)

	irq = platform_get_irq(pdev, 0);

	if (device_may_wakeup(&pdev->dev))
	if (device_may_wakeup(&pdev->dev)) {
		if (config->irq_wake) {
			disable_irq_wake(irq);
	else {
			config->irq_wake = 0;
		}
	} else {
		clk_enable(config->clk);
		spear_rtc_enable_interrupt(config);
	}