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

Commit 18de5bc4 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Linus Torvalds
Browse files

clockevents: fix resume logic



We need to make sure, that the clockevent devices are resumed, before
the tick is resumed. The current resume logic does not guarantee this.

Add CLOCK_EVT_MODE_RESUME and call the set mode functions of the clock
event devices before resuming the tick / oneshot functionality.

Fixup the existing users.

Thanks to Nigel Cunningham for tracking down a long standing thinko,
which affected the jinxed VAIO.

[akpm@linux-foundation.org: xen build fix]
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 93da56ef
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -285,6 +285,8 @@ static void davinci_set_mode(enum clock_event_mode mode,
	case CLOCK_EVT_MODE_SHUTDOWN:
		t->opts = TIMER_OPTS_DISABLED;
		break;
	case CLOCK_EVT_MODE_RESUME:
		break;
	}
}

+1 −0
Original line number Diff line number Diff line
@@ -159,6 +159,7 @@ static void imx_set_mode(enum clock_event_mode mode, struct clock_event_device *
		break;
	case CLOCK_EVT_MODE_SHUTDOWN:
	case CLOCK_EVT_MODE_UNUSED:
	case CLOCK_EVT_MODE_RESUME:
		/* Left event sources disabled, no more interrupts appears */
		break;
	}
+2 −0
Original line number Diff line number Diff line
@@ -459,6 +459,8 @@ static void ixp4xx_set_mode(enum clock_event_mode mode,
	default:
		osrt = opts = 0;
		break;
	case CLOCK_EVT_MODE_RESUME:
		break;
	}

	*IXP4XX_OSRT1 = osrt | opts;
+1 −0
Original line number Diff line number Diff line
@@ -156,6 +156,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
		break;
	case CLOCK_EVT_MODE_UNUSED:
	case CLOCK_EVT_MODE_SHUTDOWN:
	case CLOCK_EVT_MODE_RESUME:
		break;
	}
}
+2 −0
Original line number Diff line number Diff line
@@ -156,6 +156,8 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode,
	case CLOCK_EVT_MODE_SHUTDOWN:
		omap_32k_timer_stop();
		break;
	case CLOCK_EVT_MODE_RESUME:
		break;
	}
}

Loading