linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface
@ 2015-07-16 11:26 Viresh Kumar
  2015-07-16 11:26 ` [PATCH 01/23] alpha/time: Migrate to new " Viresh Kumar
                   ` (22 more replies)
  0 siblings, 23 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano; +Cc: linaro-kernel, linux-kernel, Viresh Kumar

Hi Guys,

This series migrates Miscellaneous architecture clockevent drivers to
the new set-state interface. This would enable these drivers to use new
states (like: ONESHOT_STOPPED, etc.) of a clockevent device (if
required), as the set-mode interface is marked obsolete now and wouldn't
be expanded to handle new states.

Rebased over: v4.2-rc2
Target kernel: v4.3

This has been build/boot tested by two bots on various platforms for few
days now, not sure if we had a good coverage for these architectures
though:

- kernelci, http://kernelci.org/
- 0-DAY kernel test infrastructure, kbuild test robot

Can be applied directly by respective maintainers.

Viresh Kumar (23):
  alpha/time: Migrate to new 'set-state' interface
  ARC/time: Migrate to new 'set-state' interface
  AVR32/time: Migrate to new 'set-state' interface
  blackfin/time-ts: Migrate to new 'set-state' interface
  c6x/timer64: Migrate to new 'set-state' interface
  cris/time: Migrate to new 'set-state' interface
  hexagon/time: Migrate to new 'set-state' interface
  m68k/coldfire/pit: Migrate to new 'set-state' interface
  microblaze/timer: Migrate to new 'set-state' interface
  mn10300/cevt-mn10300: Migrate to new 'set-state' interface
  nios2/time: Migrate to new 'set-state' interface
  openrisc/time: Migrate to new 'set-state' interface
  powerpc/time: Migrate to new 'set-state' interface
  s390/time: Migrate to new 'set-state' interface
  score/time: Migrate to new 'set-state' interface
  sh/localtimer: Migrate to new 'set-state' interface
  sparc/time: Migrate to new 'set-state' interface
  tile/time: Migrate to new 'set-state' interface
  um/time: Migrate to new 'set-state' interface
  unicore/time: Migrate to new 'set-state' interface
  xtensa/time: Migrate to new 'set-state' interface
  drivers/hv: Migrate to new 'set-state' interface
  kernel: broadcast-hrtimer: Migrate to new 'set-state' interface

 arch/alpha/kernel/time.c             |  18 ++---
 arch/arc/kernel/time.c               |  40 ++++-------
 arch/avr32/kernel/time.c             |  65 ++++++++---------
 arch/blackfin/kernel/time-ts.c       | 136 ++++++++++++++++++-----------------
 arch/c6x/platforms/timer64.c         |  52 +++++++-------
 arch/cris/arch-v32/kernel/time.c     |   8 ++-
 arch/hexagon/kernel/time.c           |  17 +----
 arch/m68k/coldfire/pit.c             |  66 ++++++++---------
 arch/microblaze/kernel/timer.c       |  46 +++++-------
 arch/mn10300/kernel/cevt-mn10300.c   |   7 --
 arch/nios2/kernel/time.c             |  49 +++++++------
 arch/openrisc/kernel/time.c          |  24 -------
 arch/powerpc/kernel/time.c           |  24 +++----
 arch/s390/kernel/time.c              |   6 --
 arch/score/kernel/time.c             |  31 +++-----
 arch/sh/kernel/localtimer.c          |   6 --
 arch/sparc/kernel/sun4m_smp.c        |   2 +-
 arch/sparc/kernel/time_32.c          |  57 +++++++--------
 arch/sparc/kernel/time_64.c          |  33 +++------
 arch/tile/kernel/time.c              |   8 ++-
 arch/um/kernel/time.c                |  44 ++++++------
 arch/unicore32/kernel/time.c         |  29 +++-----
 arch/xtensa/kernel/time.c            |  53 +++++++-------
 drivers/hv/hv.c                      |  45 +++++-------
 kernel/time/tick-broadcast-hrtimer.c |  49 ++++++-------
 25 files changed, 395 insertions(+), 520 deletions(-)

-- 
2.4.0


^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 01/23] alpha/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 02/23] ARC/time: " Viresh Kumar
                   ` (21 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Richard Henderson,
	Ivan Kokshaysky, Matt Turner, Christoph Lameter, linux-alpha,
	Tejun Heo

Migrate alpha driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

rtc clockevent device wasn't doing anything in set-mode and so its
set-state callbacks aren't implemented.

Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: linux-alpha@vger.kernel.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/alpha/kernel/time.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index 643a9dcdf093..5b6202a825ff 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -93,7 +93,7 @@ rtc_timer_interrupt(int irq, void *dev)
 	struct clock_event_device *ce = &per_cpu(cpu_ce, cpu);
 
 	/* Don't run the hook for UNUSED or SHUTDOWN.  */
-	if (likely(ce->mode == CLOCK_EVT_MODE_PERIODIC))
+	if (likely(clockevent_state_periodic(ce)))
 		ce->event_handler(ce);
 
 	if (test_irq_work_pending()) {
@@ -104,13 +104,6 @@ rtc_timer_interrupt(int irq, void *dev)
 	return IRQ_HANDLED;
 }
 
-static void
-rtc_ce_set_mode(enum clock_event_mode mode, struct clock_event_device *ce)
-{
-	/* The mode member of CE is updated in generic code.
-	   Since we only support periodic events, nothing to do.  */
-}
-
 static int
 rtc_ce_set_next_event(unsigned long evt, struct clock_event_device *ce)
 {
@@ -129,7 +122,6 @@ init_rtc_clockevent(void)
 		.features = CLOCK_EVT_FEAT_PERIODIC,
 		.rating = 100,
 		.cpumask = cpumask_of(cpu),
-		.set_mode = rtc_ce_set_mode,
 		.set_next_event = rtc_ce_set_next_event,
 	};
 
@@ -161,12 +153,12 @@ static struct clocksource qemu_cs = {
  * The QEMU alarm as a clock_event_device primitive.
  */
 
-static void
-qemu_ce_set_mode(enum clock_event_mode mode, struct clock_event_device *ce)
+static int qemu_ce_shutdown(struct clock_event_device *ce)
 {
 	/* The mode member of CE is updated for us in generic code.
 	   Just make sure that the event is disabled.  */
 	qemu_set_alarm_abs(0);
+	return 0;
 }
 
 static int
@@ -197,7 +189,9 @@ init_qemu_clockevent(void)
 		.features = CLOCK_EVT_FEAT_ONESHOT,
 		.rating = 400,
 		.cpumask = cpumask_of(cpu),
-		.set_mode = qemu_ce_set_mode,
+		.set_state_shutdown = qemu_ce_shutdown,
+		.set_state_oneshot = qemu_ce_shutdown,
+		.tick_resume = qemu_ce_shutdown,
 		.set_next_event = qemu_ce_set_next_event,
 	};
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 02/23] ARC/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
  2015-07-16 11:26 ` [PATCH 01/23] alpha/time: Migrate to new " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-20 10:55   ` Vineet Gupta
  2015-07-16 11:26 ` [PATCH 03/23] AVR32/time: " Viresh Kumar
                   ` (20 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Vineet Gupta

Migrate arc driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/arc/kernel/time.c | 40 +++++++++++++++-------------------------
 1 file changed, 15 insertions(+), 25 deletions(-)

diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c
index 3364d2bbc515..4294761a2b3e 100644
--- a/arch/arc/kernel/time.c
+++ b/arch/arc/kernel/time.c
@@ -203,34 +203,24 @@ static int arc_clkevent_set_next_event(unsigned long delta,
 	return 0;
 }
 
-static void arc_clkevent_set_mode(enum clock_event_mode mode,
-				  struct clock_event_device *dev)
+static int arc_clkevent_set_periodic(struct clock_event_device *dev)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-                /*
-                 * At X Hz, 1 sec = 1000ms -> X cycles;
-                 *                    10ms -> X / 100 cycles
-                 */
-		arc_timer_event_setup(arc_get_core_freq() / HZ);
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-		break;
-	default:
-		break;
-	}
-
-	return;
+	/*
+	 * At X Hz, 1 sec = 1000ms -> X cycles;
+	 *		      10ms -> X / 100 cycles
+	 */
+	arc_timer_event_setup(arc_get_core_freq() / HZ);
+	return 0;
 }
 
 static DEFINE_PER_CPU(struct clock_event_device, arc_clockevent_device) = {
-	.name		= "ARC Timer0",
-	.features	= CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
-	.mode		= CLOCK_EVT_MODE_UNUSED,
-	.rating		= 300,
-	.irq		= TIMER0_IRQ,	/* hardwired, no need for resources */
-	.set_next_event = arc_clkevent_set_next_event,
-	.set_mode	= arc_clkevent_set_mode,
+	.name			= "ARC Timer0",
+	.features		= CLOCK_EVT_FEAT_ONESHOT |
+				  CLOCK_EVT_FEAT_PERIODIC,
+	.rating			= 300,
+	.irq			= TIMER0_IRQ,	/* hardwired, no need for resources */
+	.set_next_event		= arc_clkevent_set_next_event,
+	.set_state_periodic	= arc_clkevent_set_periodic,
 };
 
 static irqreturn_t timer_irq_handler(int irq, void *dev_id)
@@ -240,7 +230,7 @@ static irqreturn_t timer_irq_handler(int irq, void *dev_id)
 	 * irq_set_chip_and_handler() asked for handle_percpu_devid_irq()
 	 */
 	struct clock_event_device *evt = this_cpu_ptr(&arc_clockevent_device);
-	int irq_reenable = evt->mode == CLOCK_EVT_MODE_PERIODIC;
+	int irq_reenable = clockevent_state_periodic(evt);
 
 	/*
 	 * Any write to CTRL reg ACks the interrupt, we rewrite the
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 03/23] AVR32/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
  2015-07-16 11:26 ` [PATCH 01/23] alpha/time: Migrate to new " Viresh Kumar
  2015-07-16 11:26 ` [PATCH 02/23] ARC/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-20  7:40   ` Hans-Christian Egtvedt
  2015-07-16 11:26 ` [PATCH 04/23] blackfin/time-ts: " Viresh Kumar
                   ` (19 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Haavard Skinnemoen,
	Hans-Christian Egtvedt

Migrate avr32 driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We want to call cpu_idle_poll_ctrl() in shutdown only if we were in
oneshot or resume state earlier. Create another variable to save this
information and check that in shutdown callback.

Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/avr32/kernel/time.c | 65 ++++++++++++++++++++++++------------------------
 1 file changed, 33 insertions(+), 32 deletions(-)

diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c
index d0f771be9e96..a124c55733db 100644
--- a/arch/avr32/kernel/time.c
+++ b/arch/avr32/kernel/time.c
@@ -18,6 +18,7 @@
 
 #include <mach/pm.h>
 
+static bool disable_cpu_idle_poll;
 
 static cycle_t read_cycle_count(struct clocksource *cs)
 {
@@ -80,45 +81,45 @@ static int comparator_next_event(unsigned long delta,
 	return 0;
 }
 
-static void comparator_mode(enum clock_event_mode mode,
-		struct clock_event_device *evdev)
+static int comparator_shutdown(struct clock_event_device *evdev)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_ONESHOT:
-		pr_debug("%s: start\n", evdev->name);
-		/* FALLTHROUGH */
-	case CLOCK_EVT_MODE_RESUME:
+	pr_debug("%s: %s\n", __func__, evdev->name);
+	sysreg_write(COMPARE, 0);
+
+	if (disable_cpu_idle_poll) {
+		disable_cpu_idle_poll = false;
 		/*
-		 * If we're using the COUNT and COMPARE registers we
-		 * need to force idle poll.
+		 * Only disable idle poll if we have forced that
+		 * in a previous call.
 		 */
-		cpu_idle_poll_ctrl(true);
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		sysreg_write(COMPARE, 0);
-		pr_debug("%s: stop\n", evdev->name);
-		if (evdev->mode == CLOCK_EVT_MODE_ONESHOT ||
-		    evdev->mode == CLOCK_EVT_MODE_RESUME) {
-			/*
-			 * Only disable idle poll if we have forced that
-			 * in a previous call.
-			 */
-			cpu_idle_poll_ctrl(false);
-		}
-		break;
-	default:
-		BUG();
+		cpu_idle_poll_ctrl(false);
 	}
+	return 0;
+}
+
+static int comparator_set_oneshot(struct clock_event_device *evdev)
+{
+	pr_debug("%s: %s\n", __func__, evdev->name);
+
+	disable_cpu_idle_poll = true;
+	/*
+	 * If we're using the COUNT and COMPARE registers we
+	 * need to force idle poll.
+	 */
+	cpu_idle_poll_ctrl(true);
+
+	return 0;
 }
 
 static struct clock_event_device comparator = {
-	.name		= "avr32_comparator",
-	.features	= CLOCK_EVT_FEAT_ONESHOT,
-	.shift		= 16,
-	.rating		= 50,
-	.set_next_event	= comparator_next_event,
-	.set_mode	= comparator_mode,
+	.name			= "avr32_comparator",
+	.features		= CLOCK_EVT_FEAT_ONESHOT,
+	.shift			= 16,
+	.rating			= 50,
+	.set_next_event		= comparator_next_event,
+	.set_state_shutdown	= comparator_shutdown,
+	.set_state_oneshot	= comparator_set_oneshot,
+	.tick_resume		= comparator_set_oneshot,
 };
 
 void read_persistent_clock(struct timespec *ts)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/23] blackfin/time-ts: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (2 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 03/23] AVR32/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 05/23] c6x/timer64: " Viresh Kumar
                   ` (18 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Steven Miao,
	adi-buildroot-devel

Migrate blackfin driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ->set_mode(RESUME) and so tick_resume()
isn't implemented.

Cc: Steven Miao <realmz6@gmail.com>
Cc: adi-buildroot-devel@lists.sourceforge.net
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/blackfin/kernel/time-ts.c | 136 +++++++++++++++++++++--------------------
 1 file changed, 70 insertions(+), 66 deletions(-)

diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index cb0a4845339e..fb9e95f1b719 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -136,44 +136,44 @@ static int bfin_gptmr0_set_next_event(unsigned long cycles,
 	return 0;
 }
 
-static void bfin_gptmr0_set_mode(enum clock_event_mode mode,
-				struct clock_event_device *evt)
+static int bfin_gptmr0_set_periodic(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC: {
 #ifndef CONFIG_BF60x
-		set_gptimer_config(TIMER0_id, \
-			TIMER_OUT_DIS | TIMER_IRQ_ENA | \
-			TIMER_PERIOD_CNT | TIMER_MODE_PWM);
+	set_gptimer_config(TIMER0_id,
+			   TIMER_OUT_DIS | TIMER_IRQ_ENA |
+			   TIMER_PERIOD_CNT | TIMER_MODE_PWM);
 #else
-		set_gptimer_config(TIMER0_id,  TIMER_OUT_DIS
-			| TIMER_MODE_PWM_CONT | TIMER_PULSE_HI | TIMER_IRQ_PER);
+	set_gptimer_config(TIMER0_id,
+			   TIMER_OUT_DIS | TIMER_MODE_PWM_CONT |
+			   TIMER_PULSE_HI | TIMER_IRQ_PER);
 #endif
 
-		set_gptimer_period(TIMER0_id, get_sclk() / HZ);
-		set_gptimer_pwidth(TIMER0_id, get_sclk() / HZ - 1);
-		enable_gptimers(TIMER0bit);
-		break;
-	}
-	case CLOCK_EVT_MODE_ONESHOT:
-		disable_gptimers(TIMER0bit);
+	set_gptimer_period(TIMER0_id, get_sclk() / HZ);
+	set_gptimer_pwidth(TIMER0_id, get_sclk() / HZ - 1);
+	enable_gptimers(TIMER0bit);
+	return 0;
+}
+
+static int bfin_gptmr0_set_oneshot(struct clock_event_device *evt)
+{
+	disable_gptimers(TIMER0bit);
 #ifndef CONFIG_BF60x
-		set_gptimer_config(TIMER0_id, \
-			TIMER_OUT_DIS | TIMER_IRQ_ENA | TIMER_MODE_PWM);
+	set_gptimer_config(TIMER0_id,
+			   TIMER_OUT_DIS | TIMER_IRQ_ENA | TIMER_MODE_PWM);
 #else
-		set_gptimer_config(TIMER0_id, TIMER_OUT_DIS | TIMER_MODE_PWM
-			| TIMER_PULSE_HI | TIMER_IRQ_WID_DLY);
+	set_gptimer_config(TIMER0_id,
+			   TIMER_OUT_DIS | TIMER_MODE_PWM | TIMER_PULSE_HI |
+			   TIMER_IRQ_WID_DLY);
 #endif
 
-		set_gptimer_period(TIMER0_id, 0);
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		disable_gptimers(TIMER0bit);
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-	}
+	set_gptimer_period(TIMER0_id, 0);
+	return 0;
+}
+
+static int bfin_gptmr0_shutdown(struct clock_event_device *evt)
+{
+	disable_gptimers(TIMER0bit);
+	return 0;
 }
 
 static void bfin_gptmr0_ack(void)
@@ -211,13 +211,16 @@ static struct irqaction gptmr0_irq = {
 };
 
 static struct clock_event_device clockevent_gptmr0 = {
-	.name		= "bfin_gptimer0",
-	.rating		= 300,
-	.irq		= IRQ_TIMER0,
-	.shift		= 32,
-	.features 	= CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
-	.set_next_event = bfin_gptmr0_set_next_event,
-	.set_mode	= bfin_gptmr0_set_mode,
+	.name			= "bfin_gptimer0",
+	.rating			= 300,
+	.irq			= IRQ_TIMER0,
+	.shift			= 32,
+	.features		= CLOCK_EVT_FEAT_PERIODIC |
+				  CLOCK_EVT_FEAT_ONESHOT,
+	.set_next_event		= bfin_gptmr0_set_next_event,
+	.set_state_shutdown	= bfin_gptmr0_shutdown,
+	.set_state_periodic	= bfin_gptmr0_set_periodic,
+	.set_state_oneshot	= bfin_gptmr0_set_oneshot,
 };
 
 static void __init bfin_gptmr0_clockevent_init(struct clock_event_device *evt)
@@ -250,36 +253,35 @@ static int bfin_coretmr_set_next_event(unsigned long cycles,
 	return 0;
 }
 
-static void bfin_coretmr_set_mode(enum clock_event_mode mode,
-				struct clock_event_device *evt)
+static int bfin_coretmr_set_periodic(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC: {
-		unsigned long tcount = ((get_cclk() / (HZ * TIME_SCALE)) - 1);
-		bfin_write_TCNTL(TMPWR);
-		CSYNC();
-		bfin_write_TSCALE(TIME_SCALE - 1);
-		bfin_write_TPERIOD(tcount);
-		bfin_write_TCOUNT(tcount);
-		CSYNC();
-		bfin_write_TCNTL(TMPWR | TMREN | TAUTORLD);
-		break;
-	}
-	case CLOCK_EVT_MODE_ONESHOT:
-		bfin_write_TCNTL(TMPWR);
-		CSYNC();
-		bfin_write_TSCALE(TIME_SCALE - 1);
-		bfin_write_TPERIOD(0);
-		bfin_write_TCOUNT(0);
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		bfin_write_TCNTL(0);
-		CSYNC();
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-	}
+	unsigned long tcount = ((get_cclk() / (HZ * TIME_SCALE)) - 1);
+
+	bfin_write_TCNTL(TMPWR);
+	CSYNC();
+	bfin_write_TSCALE(TIME_SCALE - 1);
+	bfin_write_TPERIOD(tcount);
+	bfin_write_TCOUNT(tcount);
+	CSYNC();
+	bfin_write_TCNTL(TMPWR | TMREN | TAUTORLD);
+	return 0;
+}
+
+static int bfin_coretmr_set_oneshot(struct clock_event_device *evt)
+{
+	bfin_write_TCNTL(TMPWR);
+	CSYNC();
+	bfin_write_TSCALE(TIME_SCALE - 1);
+	bfin_write_TPERIOD(0);
+	bfin_write_TCOUNT(0);
+	return 0;
+}
+
+static int bfin_coretmr_shutdown(struct clock_event_device *evt)
+{
+	bfin_write_TCNTL(0);
+	CSYNC();
+	return 0;
 }
 
 void bfin_coretmr_init(void)
@@ -335,7 +337,9 @@ void bfin_coretmr_clockevent_init(void)
 	evt->shift = 32;
 	evt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
 	evt->set_next_event = bfin_coretmr_set_next_event;
-	evt->set_mode = bfin_coretmr_set_mode;
+	evt->set_state_shutdown = bfin_coretmr_shutdown;
+	evt->set_state_periodic = bfin_coretmr_set_periodic;
+	evt->set_state_oneshot = bfin_coretmr_set_oneshot;
 
 	clock_tick = get_cclk() / TIME_SCALE;
 	evt->mult = div_sc(clock_tick, NSEC_PER_SEC, evt->shift);
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 05/23] c6x/timer64: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (3 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 04/23] blackfin/time-ts: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 06/23] cris/time: " Viresh Kumar
                   ` (17 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Mark Salter,
	Aurelien Jacquiot, linux-c6x-dev

Migrate c6x driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ->set_mode(RESUME) and so tick_resume()
isn't implemented.

Cc: Mark Salter <msalter@redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
Cc: linux-c6x-dev@linux-c6x.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/c6x/platforms/timer64.c | 52 +++++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 25 deletions(-)

diff --git a/arch/c6x/platforms/timer64.c b/arch/c6x/platforms/timer64.c
index 3c73d74a4674..c19901e5f055 100644
--- a/arch/c6x/platforms/timer64.c
+++ b/arch/c6x/platforms/timer64.c
@@ -126,35 +126,37 @@ static int next_event(unsigned long delta,
 	return 0;
 }
 
-static void set_clock_mode(enum clock_event_mode mode,
-			   struct clock_event_device *evt)
+static int set_periodic(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		timer64_enable();
-		timer64_mode = TIMER64_MODE_PERIODIC;
-		timer64_config(TIMER64_RATE / HZ);
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-		timer64_enable();
-		timer64_mode = TIMER64_MODE_ONE_SHOT;
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		timer64_mode = TIMER64_MODE_DISABLED;
-		timer64_disable();
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-	}
+	timer64_enable();
+	timer64_mode = TIMER64_MODE_PERIODIC;
+	timer64_config(TIMER64_RATE / HZ);
+	return 0;
+}
+
+static int set_oneshot(struct clock_event_device *evt)
+{
+	timer64_enable();
+	timer64_mode = TIMER64_MODE_ONE_SHOT;
+	return 0;
+}
+
+static int shutdown(struct clock_event_device *evt)
+{
+	timer64_mode = TIMER64_MODE_DISABLED;
+	timer64_disable();
+	return 0;
 }
 
 static struct clock_event_device t64_clockevent_device = {
-	.name		= "TIMER64_EVT32_TIMER",
-	.features	= CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
-	.rating		= 200,
-	.set_mode	= set_clock_mode,
-	.set_next_event	= next_event,
+	.name			= "TIMER64_EVT32_TIMER",
+	.features		= CLOCK_EVT_FEAT_ONESHOT |
+				  CLOCK_EVT_FEAT_PERIODIC,
+	.rating			= 200,
+	.set_state_shutdown	= shutdown,
+	.set_state_periodic	= set_periodic,
+	.set_state_oneshot	= set_oneshot,
+	.set_next_event		= next_event,
 };
 
 static irqreturn_t timer_interrupt(int irq, void *dev_id)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 06/23] cris/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (4 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 05/23] c6x/timer64: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-17 18:47   ` Rabin Vincent
  2015-07-16 11:26 ` [PATCH 07/23] hexagon/time: " Viresh Kumar
                   ` (16 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Mikael Starvik,
	Jesper Nilsson, Rabin Vincent, Guenter Roeck, linux-cris-kernel

Migrate cris driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Mikael Starvik <starvik@axis.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Rabin Vincent <rabin@rab.in>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: linux-cris-kernel@axis.com
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/cris/arch-v32/kernel/time.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/cris/arch-v32/kernel/time.c b/arch/cris/arch-v32/kernel/time.c
index 4fce9f1f7cc0..d2a84407654a 100644
--- a/arch/cris/arch-v32/kernel/time.c
+++ b/arch/cris/arch-v32/kernel/time.c
@@ -172,8 +172,7 @@ void handle_watchdog_bite(struct pt_regs *regs)
 extern void cris_profile_sample(struct pt_regs *regs);
 static void __iomem *timer_base;
 
-static void crisv32_clkevt_mode(enum clock_event_mode mode,
-				struct clock_event_device *dev)
+static int crisv32_clkevt_switch_state(struct clock_event_device *dev)
 {
 	reg_timer_rw_tmr0_ctrl ctrl = {
 		.op = regk_timer_hold,
@@ -181,6 +180,7 @@ static void crisv32_clkevt_mode(enum clock_event_mode mode,
 	};
 
 	REG_WR(timer, timer_base, rw_tmr0_ctrl, ctrl);
+	return 0;
 }
 
 static int crisv32_clkevt_next_event(unsigned long evt,
@@ -231,7 +231,9 @@ static struct clock_event_device crisv32_clockevent = {
 	.name = "crisv32-timer",
 	.rating = 300,
 	.features = CLOCK_EVT_FEAT_ONESHOT,
-	.set_mode = crisv32_clkevt_mode,
+	.set_state_oneshot = crisv32_clkevt_switch_state,
+	.set_state_shutdown = crisv32_clkevt_switch_state,
+	.tick_resume = crisv32_clkevt_switch_state,
 	.set_next_event = crisv32_clkevt_next_event,
 };
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 07/23] hexagon/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (5 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 06/23] cris/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-21 22:28   ` rkuo
  2015-07-16 11:26 ` [PATCH 08/23] m68k/coldfire/pit: " Viresh Kumar
                   ` (15 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Richard Kuo, linux-hexagon

Migrate hexagon driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in the ->set_mode() callback. So, this patch
doesn't provide any set-state callbacks.

Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: linux-hexagon@vger.kernel.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/hexagon/kernel/time.c | 17 +----------------
 1 file changed, 1 insertion(+), 16 deletions(-)

diff --git a/arch/hexagon/kernel/time.c b/arch/hexagon/kernel/time.c
index 17fbf45bf150..a6a1d1f8309a 100644
--- a/arch/hexagon/kernel/time.c
+++ b/arch/hexagon/kernel/time.c
@@ -97,20 +97,6 @@ static int set_next_event(unsigned long delta, struct clock_event_device *evt)
 	return 0;
 }
 
-/*
- * Sets the mode (periodic, shutdown, oneshot, etc) of a timer.
- */
-static void set_mode(enum clock_event_mode mode,
-	struct clock_event_device *evt)
-{
-	switch (mode) {
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		/* XXX implement me */
-	default:
-		break;
-	}
-}
-
 #ifdef CONFIG_SMP
 /*  Broadcast mechanism  */
 static void broadcast(const struct cpumask *mask)
@@ -119,13 +105,13 @@ static void broadcast(const struct cpumask *mask)
 }
 #endif
 
+/* XXX Implement set_state_shutdown() */
 static struct clock_event_device hexagon_clockevent_dev = {
 	.name		= "clockevent",
 	.features	= CLOCK_EVT_FEAT_ONESHOT,
 	.rating		= 400,
 	.irq		= RTOS_TIMER_INT,
 	.set_next_event = set_next_event,
-	.set_mode	= set_mode,
 #ifdef CONFIG_SMP
 	.broadcast	= broadcast,
 #endif
@@ -146,7 +132,6 @@ void setup_percpu_clockdev(void)
 
 	dummy_clock_dev->features = CLOCK_EVT_FEAT_DUMMY;
 	dummy_clock_dev->cpumask = cpumask_of(cpu);
-	dummy_clock_dev->mode = CLOCK_EVT_MODE_UNUSED;
 
 	clockevents_register_device(dummy_clock_dev);
 }
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 08/23] m68k/coldfire/pit: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (6 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 07/23] hexagon/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 12:42   ` Greg Ungerer
  2015-07-16 11:26 ` [PATCH 09/23] microblaze/timer: " Viresh Kumar
                   ` (14 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Greg Ungerer,
	Geert Uytterhoeven, linux-m68k

Migrate m68k driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ->set_mode(RESUME) and so tick_resume()
isn't implemented.

Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-m68k@lists.linux-m68k.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/m68k/coldfire/pit.c | 66 ++++++++++++++++++++++--------------------------
 1 file changed, 30 insertions(+), 36 deletions(-)

diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c
index 493b3111d4c1..d86a9ffb3f13 100644
--- a/arch/m68k/coldfire/pit.c
+++ b/arch/m68k/coldfire/pit.c
@@ -42,37 +42,28 @@ static u32 pit_cnt;
  * This is also called after resume to bring the PIT into operation again.
  */
 
-static void init_cf_pit_timer(enum clock_event_mode mode,
-                             struct clock_event_device *evt)
+static int cf_pit_set_periodic(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-
-		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
-		__raw_writew(PIT_CYCLES_PER_JIFFY, TA(MCFPIT_PMR));
-		__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE | \
-				MCFPIT_PCSR_OVW | MCFPIT_PCSR_RLD | \
-				MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
-		break;
-
-	case CLOCK_EVT_MODE_SHUTDOWN:
-	case CLOCK_EVT_MODE_UNUSED:
-
-		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
-		break;
-
-	case CLOCK_EVT_MODE_ONESHOT:
-
-		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
-		__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE | \
-				MCFPIT_PCSR_OVW | MCFPIT_PCSR_CLK64, \
-				TA(MCFPIT_PCSR));
-		break;
-
-	case CLOCK_EVT_MODE_RESUME:
-		/* Nothing to do here */
-		break;
-	}
+	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
+	__raw_writew(PIT_CYCLES_PER_JIFFY, TA(MCFPIT_PMR));
+	__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE |
+		     MCFPIT_PCSR_OVW | MCFPIT_PCSR_RLD |
+		     MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
+	return 0;
+}
+
+static int cf_pit_set_oneshot(struct clock_event_device *evt)
+{
+	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
+	__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE |
+		     MCFPIT_PCSR_OVW | MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
+	return 0;
+}
+
+static int cf_pit_shutdown(struct clock_event_device *evt)
+{
+	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
+	return 0;
 }
 
 /*
@@ -88,12 +79,15 @@ static int cf_pit_next_event(unsigned long delta,
 }
 
 struct clock_event_device cf_pit_clockevent = {
-	.name		= "pit",
-	.features	= CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
-	.set_mode	= init_cf_pit_timer,
-	.set_next_event	= cf_pit_next_event,
-	.shift		= 32,
-	.irq		= MCF_IRQ_PIT1,
+	.name			= "pit",
+	.features		= CLOCK_EVT_FEAT_PERIODIC |
+				  CLOCK_EVT_FEAT_ONESHOT,
+	.set_state_shutdown	= cf_pit_shutdown,
+	.set_state_periodic	= cf_pit_set_periodic,
+	.set_state_oneshot	= cf_pit_set_oneshot,
+	.set_next_event		= cf_pit_next_event,
+	.shift			= 32,
+	.irq			= MCF_IRQ_PIT1,
 };
 
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 09/23] microblaze/timer: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (7 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 08/23] m68k/coldfire/pit: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 10/23] mn10300/cevt-mn10300: " Viresh Kumar
                   ` (13 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Michal Simek,
	David S. Miller, Richard Cochran

Migrate microblaze driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ->set_mode(RESUME or ONESHOT) and so
tick_resume() set_state_oneshot() aren't implemented.

Cc: Michal Simek <monstr@monstr.eu>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/microblaze/kernel/timer.c | 46 +++++++++++++++++-------------------------
 1 file changed, 19 insertions(+), 27 deletions(-)

diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
index c8977450e28c..67e2ef48d2d0 100644
--- a/arch/microblaze/kernel/timer.c
+++ b/arch/microblaze/kernel/timer.c
@@ -122,37 +122,29 @@ static int xilinx_timer_set_next_event(unsigned long delta,
 	return 0;
 }
 
-static void xilinx_timer_set_mode(enum clock_event_mode mode,
-				struct clock_event_device *evt)
+static int xilinx_timer_shutdown(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		pr_info("%s: periodic\n", __func__);
-		xilinx_timer0_start_periodic(freq_div_hz);
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-		pr_info("%s: oneshot\n", __func__);
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-		pr_info("%s: unused\n", __func__);
-		break;
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		pr_info("%s: shutdown\n", __func__);
-		xilinx_timer0_stop();
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		pr_info("%s: resume\n", __func__);
-		break;
-	}
+	pr_info("%s\n", __func__);
+	xilinx_timer0_stop();
+	return 0;
+}
+
+static int xilinx_timer_set_periodic(struct clock_event_device *evt)
+{
+	pr_info("%s\n", __func__);
+	xilinx_timer0_start_periodic(freq_div_hz);
+	return 0;
 }
 
 static struct clock_event_device clockevent_xilinx_timer = {
-	.name		= "xilinx_clockevent",
-	.features       = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
-	.shift		= 8,
-	.rating		= 300,
-	.set_next_event	= xilinx_timer_set_next_event,
-	.set_mode	= xilinx_timer_set_mode,
+	.name			= "xilinx_clockevent",
+	.features		= CLOCK_EVT_FEAT_ONESHOT |
+				  CLOCK_EVT_FEAT_PERIODIC,
+	.shift			= 8,
+	.rating			= 300,
+	.set_next_event		= xilinx_timer_set_next_event,
+	.set_state_shutdown	= xilinx_timer_shutdown,
+	.set_state_periodic	= xilinx_timer_set_periodic,
 };
 
 static inline void timer_ack(void)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 10/23] mn10300/cevt-mn10300: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (8 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 09/23] microblaze/timer: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 11/23] nios2/time: " Viresh Kumar
                   ` (12 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, David Howells,
	Koichi Yasutake, linux-am33-list

Migrate mn10300 driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in the ->set_mode() callback. So, this patch
doesn't provide any set-state callbacks.

Cc: David Howells <dhowells@redhat.com>
Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
Cc: linux-am33-list@redhat.com
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/mn10300/kernel/cevt-mn10300.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/arch/mn10300/kernel/cevt-mn10300.c b/arch/mn10300/kernel/cevt-mn10300.c
index 60f64ca1752a..3aae9f5a98aa 100644
--- a/arch/mn10300/kernel/cevt-mn10300.c
+++ b/arch/mn10300/kernel/cevt-mn10300.c
@@ -41,12 +41,6 @@ static int next_event(unsigned long delta,
 	return 0;
 }
 
-static void set_clock_mode(enum clock_event_mode mode,
-			   struct clock_event_device *evt)
-{
-	/* Nothing to do ...  */
-}
-
 static DEFINE_PER_CPU(struct clock_event_device, mn10300_clockevent_device);
 static DEFINE_PER_CPU(struct irqaction, timer_irq);
 
@@ -108,7 +102,6 @@ int __init init_clockevents(void)
 
 	cd->rating		= 200;
 	cd->cpumask		= cpumask_of(smp_processor_id());
-	cd->set_mode		= set_clock_mode;
 	cd->event_handler	= event_handler;
 	cd->set_next_event	= next_event;
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 11/23] nios2/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (9 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 10/23] mn10300/cevt-mn10300: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-17  9:01   ` Tobias Klauser
  2015-07-16 11:26 ` [PATCH 12/23] openrisc/time: " Viresh Kumar
                   ` (11 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Ley Foon Tan,
	Tobias Klauser, Herbert Xu, Dmitry Torokhov, nios2-dev

Migrate nios2 driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Ley Foon Tan <lftan@altera.com>
Cc: Tobias Klauser <tklauser@distanz.ch>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Dmitry Torokhov <dtor@chromium.org>
Cc: nios2-dev@lists.rocketboards.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/nios2/kernel/time.c | 49 ++++++++++++++++++++++++++++--------------------
 1 file changed, 29 insertions(+), 20 deletions(-)

diff --git a/arch/nios2/kernel/time.c b/arch/nios2/kernel/time.c
index 9e3cc8a40ee9..bbc3f9157f9c 100644
--- a/arch/nios2/kernel/time.c
+++ b/arch/nios2/kernel/time.c
@@ -130,7 +130,7 @@ static void nios2_timer_stop(struct nios2_timer *timer)
 }
 
 static void nios2_timer_config(struct nios2_timer *timer, unsigned long period,
-	enum clock_event_mode mode)
+			       bool periodic)
 {
 	u16 ctrl;
 
@@ -148,7 +148,7 @@ static void nios2_timer_config(struct nios2_timer *timer, unsigned long period,
 	timer_writew(timer, period >> 16, ALTERA_TIMER_PERIODH_REG);
 
 	ctrl |= ALTERA_TIMER_CONTROL_START_MSK | ALTERA_TIMER_CONTROL_ITO_MSK;
-	if (mode == CLOCK_EVT_MODE_PERIODIC)
+	if (periodic)
 		ctrl |= ALTERA_TIMER_CONTROL_CONT_MSK;
 	else
 		ctrl &= ~ALTERA_TIMER_CONTROL_CONT_MSK;
@@ -160,32 +160,38 @@ static int nios2_timer_set_next_event(unsigned long delta,
 {
 	struct nios2_clockevent_dev *nios2_ced = to_nios2_clkevent(evt);
 
-	nios2_timer_config(&nios2_ced->timer, delta, evt->mode);
+	nios2_timer_config(&nios2_ced->timer, delta, false);
 
 	return 0;
 }
 
-static void nios2_timer_set_mode(enum clock_event_mode mode,
-	struct clock_event_device *evt)
+static int nios2_timer_shutdown(struct clock_event_device *evt)
+{
+	struct nios2_clockevent_dev *nios2_ced = to_nios2_clkevent(evt);
+	struct nios2_timer *timer = &nios2_ced->timer;
+
+	nios2_timer_stop(timer);
+	return 0;
+}
+
+static int nios2_timer_set_periodic(struct clock_event_device *evt)
 {
 	unsigned long period;
 	struct nios2_clockevent_dev *nios2_ced = to_nios2_clkevent(evt);
 	struct nios2_timer *timer = &nios2_ced->timer;
 
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		period = DIV_ROUND_UP(timer->freq, HZ);
-		nios2_timer_config(timer, period, CLOCK_EVT_MODE_PERIODIC);
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		nios2_timer_stop(timer);
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		nios2_timer_start(timer);
-		break;
-	}
+	period = DIV_ROUND_UP(timer->freq, HZ);
+	nios2_timer_config(timer, period, true);
+	return 0;
+}
+
+static int nios2_timer_resume(struct clock_event_device *evt)
+{
+	struct nios2_clockevent_dev *nios2_ced = to_nios2_clkevent(evt);
+	struct nios2_timer *timer = &nios2_ced->timer;
+
+	nios2_timer_start(timer);
+	return 0;
 }
 
 irqreturn_t timer_interrupt(int irq, void *dev_id)
@@ -218,7 +224,10 @@ static struct nios2_clockevent_dev nios2_ce = {
 		.rating = 250,
 		.shift = 32,
 		.set_next_event = nios2_timer_set_next_event,
-		.set_mode = nios2_timer_set_mode,
+		.set_state_shutdown = nios2_timer_shutdown,
+		.set_state_periodic = nios2_timer_set_periodic,
+		.set_state_oneshot = nios2_timer_shutdown,
+		.tick_resume = nios2_timer_resume,
 	},
 };
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 12/23] openrisc/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (10 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 11/23] nios2/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 13:42   ` Jonas Bonn
  2015-07-16 11:26 ` [PATCH 13/23] powerpc/time: " Viresh Kumar
                   ` (10 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Jonas Bonn, linux

Migrate openrisc driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in the ->set_mode() callback. So, this patch
doesn't provide any set-state callbacks.

Cc: Jonas Bonn <jonas@southpole.se>
Cc: linux@lists.openrisc.net
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/openrisc/kernel/time.c | 24 ------------------------
 1 file changed, 24 deletions(-)

diff --git a/arch/openrisc/kernel/time.c b/arch/openrisc/kernel/time.c
index 7c52e9494a8d..50e970183dcd 100644
--- a/arch/openrisc/kernel/time.c
+++ b/arch/openrisc/kernel/time.c
@@ -48,29 +48,6 @@ static int openrisc_timer_set_next_event(unsigned long delta,
 	return 0;
 }
 
-static void openrisc_timer_set_mode(enum clock_event_mode mode,
-				    struct clock_event_device *evt)
-{
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		pr_debug(KERN_INFO "%s: periodic\n", __func__);
-		BUG();
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-		pr_debug(KERN_INFO "%s: oneshot\n", __func__);
-		break;
-	case CLOCK_EVT_MODE_UNUSED:
-		pr_debug(KERN_INFO "%s: unused\n", __func__);
-		break;
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		pr_debug(KERN_INFO "%s: shutdown\n", __func__);
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		pr_debug(KERN_INFO "%s: resume\n", __func__);
-		break;
-	}
-}
-
 /* This is the clock event device based on the OR1K tick timer.
  * As the timer is being used as a continuous clock-source (required for HR
  * timers) we cannot enable the PERIODIC feature.  The tick timer can run using
@@ -82,7 +59,6 @@ static struct clock_event_device clockevent_openrisc_timer = {
 	.features = CLOCK_EVT_FEAT_ONESHOT,
 	.rating = 300,
 	.set_next_event = openrisc_timer_set_next_event,
-	.set_mode = openrisc_timer_set_mode,
 };
 
 static inline void timer_ack(void)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 13/23] powerpc/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (11 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 12/23] openrisc/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 14/23] s390/time: " Viresh Kumar
                   ` (9 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar,
	Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
	linuxppc-dev, Anton Blanchard, Christoph Lameter, Cyril Bur,
	Michael Turquette, Neelesh Gupta, Tejun Heo

Migrate powerpc driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ->set_mode(ONSHOT) and so
set_state_oneshot() isn't implemented.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/powerpc/kernel/time.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 43922509a483..1be1092c7204 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -99,16 +99,17 @@ static struct clocksource clocksource_timebase = {
 
 static int decrementer_set_next_event(unsigned long evt,
 				      struct clock_event_device *dev);
-static void decrementer_set_mode(enum clock_event_mode mode,
-				 struct clock_event_device *dev);
+static int decrementer_shutdown(struct clock_event_device *evt);
 
 struct clock_event_device decrementer_clockevent = {
-	.name           = "decrementer",
-	.rating         = 200,
-	.irq            = 0,
-	.set_next_event = decrementer_set_next_event,
-	.set_mode       = decrementer_set_mode,
-	.features       = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP,
+	.name			= "decrementer",
+	.rating			= 200,
+	.irq			= 0,
+	.set_next_event		= decrementer_set_next_event,
+	.set_state_shutdown	= decrementer_shutdown,
+	.tick_resume		= decrementer_shutdown,
+	.features		= CLOCK_EVT_FEAT_ONESHOT |
+				  CLOCK_EVT_FEAT_C3STOP,
 };
 EXPORT_SYMBOL(decrementer_clockevent);
 
@@ -862,11 +863,10 @@ static int decrementer_set_next_event(unsigned long evt,
 	return 0;
 }
 
-static void decrementer_set_mode(enum clock_event_mode mode,
-				 struct clock_event_device *dev)
+static int decrementer_shutdown(struct clock_event_device *dev)
 {
-	if (mode != CLOCK_EVT_MODE_ONESHOT)
-		decrementer_set_next_event(DECREMENTER_MAX, dev);
+	decrementer_set_next_event(DECREMENTER_MAX, dev);
+	return 0;
 }
 
 /* Interrupt handler for the timer broadcast IPI */
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 14/23] s390/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (12 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 13/23] powerpc/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 15/23] score/time: " Viresh Kumar
                   ` (8 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Martin Schwidefsky,
	Heiko Carstens, linux390, linux-s390, Christoph Lameter,
	Ingo Molnar, John Stultz, Peter Zijlstra, Xunlei Pang

Migrate s390 driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in the ->set_mode() callback. So, this patch
doesn't provide any set-state callbacks.

Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/s390/kernel/time.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 9e733d965e08..0a90d17132a9 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -117,11 +117,6 @@ static int s390_next_event(unsigned long delta,
 	return 0;
 }
 
-static void s390_set_mode(enum clock_event_mode mode,
-			  struct clock_event_device *evt)
-{
-}
-
 /*
  * Set up lowcore and control register of the current cpu to
  * enable TOD clock and clock comparator interrupts.
@@ -145,7 +140,6 @@ void init_cpu_timer(void)
 	cd->rating		= 400;
 	cd->cpumask		= cpumask_of(cpu);
 	cd->set_next_event	= s390_next_event;
-	cd->set_mode		= s390_set_mode;
 
 	clockevents_register_device(cd);
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 15/23] score/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (13 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 14/23] s390/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 16/23] sh/localtimer: " Viresh Kumar
                   ` (7 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Chen Liqin, Lennox Wu,
	Michael Opdenacker

Migrate score driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in ONESHOT/SHUTDOWN/RESUME modes and so
callbacks for them aren't implemented.

Cc: Chen Liqin <liqin.linux@gmail.com>
Cc: Lennox Wu <lennox.wu@gmail.com>
Cc: Michael Opdenacker <michael.opdenacker@free-electrons.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/score/kernel/time.c | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

diff --git a/arch/score/kernel/time.c b/arch/score/kernel/time.c
index 24770cd9b473..679b8d7b0350 100644
--- a/arch/score/kernel/time.c
+++ b/arch/score/kernel/time.c
@@ -55,31 +55,20 @@ static int score_timer_set_next_event(unsigned long delta,
 	return 0;
 }
 
-static void score_timer_set_mode(enum clock_event_mode mode,
-		struct clock_event_device *evdev)
+static int score_timer_set_periodic(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL);
-		outl(SYSTEM_CLOCK/HZ, P_TIMER0_PRELOAD);
-		outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL);
-		break;
-	case CLOCK_EVT_MODE_ONESHOT:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-	case CLOCK_EVT_MODE_RESUME:
-	case CLOCK_EVT_MODE_UNUSED:
-		break;
-	default:
-		BUG();
-	}
+	outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL);
+	outl(SYSTEM_CLOCK / HZ, P_TIMER0_PRELOAD);
+	outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL);
+	return 0;
 }
 
 static struct clock_event_device score_clockevent = {
-	.name		= "score_clockevent",
-	.features	= CLOCK_EVT_FEAT_PERIODIC,
-	.shift		= 16,
-	.set_next_event	= score_timer_set_next_event,
-	.set_mode	= score_timer_set_mode,
+	.name			= "score_clockevent",
+	.features		= CLOCK_EVT_FEAT_PERIODIC,
+	.shift			= 16,
+	.set_next_event		= score_timer_set_next_event,
+	.set_state_periodic	= score_timer_set_periodic,
 };
 
 void __init time_init(void)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 16/23] sh/localtimer: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (14 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 15/23] score/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 17/23] sparc/time: " Viresh Kumar
                   ` (6 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, linux-sh

Migrate sh driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything in the ->set_mode() callback. So, this patch
doesn't provide any set-state callbacks.

Cc: linux-sh@vger.kernel.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/sh/kernel/localtimer.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/arch/sh/kernel/localtimer.c b/arch/sh/kernel/localtimer.c
index b880a7e2ace7..cbb7d4636ec0 100644
--- a/arch/sh/kernel/localtimer.c
+++ b/arch/sh/kernel/localtimer.c
@@ -39,11 +39,6 @@ void local_timer_interrupt(void)
 	irq_exit();
 }
 
-static void dummy_timer_set_mode(enum clock_event_mode mode,
-				 struct clock_event_device *clk)
-{
-}
-
 void local_timer_setup(unsigned int cpu)
 {
 	struct clock_event_device *clk = &per_cpu(local_clockevent, cpu);
@@ -54,7 +49,6 @@ void local_timer_setup(unsigned int cpu)
 				  CLOCK_EVT_FEAT_DUMMY;
 	clk->rating		= 400;
 	clk->mult		= 1;
-	clk->set_mode		= dummy_timer_set_mode;
 	clk->broadcast		= smp_timer_broadcast;
 	clk->cpumask		= cpumask_of(cpu);
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 17/23] sparc/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (15 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 16/23] sh/localtimer: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 18:13   ` David Miller
  2015-07-16 11:26 ` [PATCH 18/23] tile/time: " Viresh Kumar
                   ` (5 subsequent siblings)
  22 siblings, 1 reply; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, David S. Miller,
	sparclinux, Alexandre Belloni, Christoph Lameter, Ingo Molnar,
	John Stultz, Rusty Russell, Tejun Heo, Wolfram Sang, Xunlei Pang

Migrate sparc drivers to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything which switching to few clockevent modes and so
their callbacks aren't implemented.

Cc: "David S. Miller" <davem@davemloft.net>
Cc: sparclinux@vger.kernel.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/sparc/kernel/sun4m_smp.c |  2 +-
 arch/sparc/kernel/time_32.c   | 57 ++++++++++++++++++++-----------------------
 arch/sparc/kernel/time_64.c   | 33 ++++++++-----------------
 3 files changed, 38 insertions(+), 54 deletions(-)

diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index d3408e72d20c..278c40abce82 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -247,7 +247,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs)
 
 	ce = &per_cpu(sparc32_clockevent, cpu);
 
-	if (ce->mode & CLOCK_EVT_MODE_PERIODIC)
+	if (clockevent_state_periodic(ce))
 		sun4m_clear_profile_irq(cpu);
 	else
 		sparc_config.load_profile_irq(cpu, 0); /* Is this needless? */
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c
index c9692f387cee..1affabc96b08 100644
--- a/arch/sparc/kernel/time_32.c
+++ b/arch/sparc/kernel/time_32.c
@@ -101,21 +101,18 @@ irqreturn_t notrace timer_interrupt(int dummy, void *dev_id)
 	return IRQ_HANDLED;
 }
 
-static void timer_ce_set_mode(enum clock_event_mode mode,
-			      struct clock_event_device *evt)
+static int timer_ce_shutdown(struct clock_event_device *evt)
 {
-	switch (mode) {
-		case CLOCK_EVT_MODE_PERIODIC:
-		case CLOCK_EVT_MODE_RESUME:
-			timer_ce_enabled = 1;
-			break;
-		case CLOCK_EVT_MODE_SHUTDOWN:
-			timer_ce_enabled = 0;
-			break;
-		default:
-			break;
-	}
+	timer_ce_enabled = 0;
+	smp_mb();
+	return 0;
+}
+
+static int timer_ce_set_periodic(struct clock_event_device *evt)
+{
+	timer_ce_enabled = 1;
 	smp_mb();
+	return 0;
 }
 
 static __init void setup_timer_ce(void)
@@ -127,7 +124,9 @@ static __init void setup_timer_ce(void)
 	ce->name     = "timer_ce";
 	ce->rating   = 100;
 	ce->features = CLOCK_EVT_FEAT_PERIODIC;
-	ce->set_mode = timer_ce_set_mode;
+	ce->set_state_shutdown = timer_ce_shutdown;
+	ce->set_state_periodic = timer_ce_set_periodic;
+	ce->tick_resume = timer_ce_set_periodic;
 	ce->cpumask  = cpu_possible_mask;
 	ce->shift    = 32;
 	ce->mult     = div_sc(sparc_config.clock_rate, NSEC_PER_SEC,
@@ -183,24 +182,20 @@ static __init int setup_timer_cs(void)
 }
 
 #ifdef CONFIG_SMP
-static void percpu_ce_setup(enum clock_event_mode mode,
-			struct clock_event_device *evt)
+static int percpu_ce_shutdown(struct clock_event_device *evt)
 {
 	int cpu = cpumask_first(evt->cpumask);
 
-	switch (mode) {
-		case CLOCK_EVT_MODE_PERIODIC:
-			sparc_config.load_profile_irq(cpu,
-						      SBUS_CLOCK_RATE / HZ);
-			break;
-		case CLOCK_EVT_MODE_ONESHOT:
-		case CLOCK_EVT_MODE_SHUTDOWN:
-		case CLOCK_EVT_MODE_UNUSED:
-			sparc_config.load_profile_irq(cpu, 0);
-			break;
-		default:
-			break;
-	}
+	sparc_config.load_profile_irq(cpu, 0);
+	return 0;
+}
+
+static int percpu_ce_set_periodic(struct clock_event_device *evt)
+{
+	int cpu = cpumask_first(evt->cpumask);
+
+	sparc_config.load_profile_irq(cpu, SBUS_CLOCK_RATE / HZ);
+	return 0;
 }
 
 static int percpu_ce_set_next_event(unsigned long delta,
@@ -224,7 +219,9 @@ void register_percpu_ce(int cpu)
 	ce->name           = "percpu_ce";
 	ce->rating         = 200;
 	ce->features       = features;
-	ce->set_mode       = percpu_ce_setup;
+	ce->set_state_shutdown = percpu_ce_shutdown;
+	ce->set_state_periodic = percpu_ce_set_periodic;
+	ce->set_state_oneshot = percpu_ce_shutdown;
 	ce->set_next_event = percpu_ce_set_next_event;
 	ce->cpumask        = cpumask_of(cpu);
 	ce->shift          = 32;
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index 2e6035c0a8ca..c69b21e51efc 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -674,32 +674,19 @@ static int sparc64_next_event(unsigned long delta,
 	return tick_ops->add_compare(delta) ? -ETIME : 0;
 }
 
-static void sparc64_timer_setup(enum clock_event_mode mode,
-				struct clock_event_device *evt)
-{
-	switch (mode) {
-	case CLOCK_EVT_MODE_ONESHOT:
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		tick_ops->disable_irq();
-		break;
-
-	case CLOCK_EVT_MODE_PERIODIC:
-	case CLOCK_EVT_MODE_UNUSED:
-		WARN_ON(1);
-		break;
-	}
+static int sparc64_timer_shutdown(struct clock_event_device *evt)
+{
+	tick_ops->disable_irq();
+	return 0;
 }
 
 static struct clock_event_device sparc64_clockevent = {
-	.features	= CLOCK_EVT_FEAT_ONESHOT,
-	.set_mode	= sparc64_timer_setup,
-	.set_next_event	= sparc64_next_event,
-	.rating		= 100,
-	.shift		= 30,
-	.irq		= -1,
+	.features		= CLOCK_EVT_FEAT_ONESHOT,
+	.set_state_shutdown	= sparc64_timer_shutdown,
+	.set_next_event		= sparc64_next_event,
+	.rating			= 100,
+	.shift			= 30,
+	.irq			= -1,
 };
 static DEFINE_PER_CPU(struct clock_event_device, sparc64_events);
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 18/23] tile/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (16 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 17/23] sparc/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-20 21:02   ` Chris Metcalf
  2015-07-21 13:11   ` Chris Metcalf
  2015-07-16 11:26 ` [PATCH 19/23] um/time: " Viresh Kumar
                   ` (4 subsequent siblings)
  22 siblings, 2 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Chris Metcalf,
	Christoph Lameter, Joe Perches, John Stultz, Peter Zijlstra,
	Tejun Heo

Migrate tile driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Chris Metcalf <cmetcalf@ezchip.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/tile/kernel/time.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/tile/kernel/time.c b/arch/tile/kernel/time.c
index 00178ecf9aea..178989e6d3e3 100644
--- a/arch/tile/kernel/time.c
+++ b/arch/tile/kernel/time.c
@@ -140,10 +140,10 @@ static int tile_timer_set_next_event(unsigned long ticks,
  * Whenever anyone tries to change modes, we just mask interrupts
  * and wait for the next event to get set.
  */
-static void tile_timer_set_mode(enum clock_event_mode mode,
-				struct clock_event_device *evt)
+static int tile_timer_shutdown(struct clock_event_device *evt)
 {
 	arch_local_irq_mask_now(INT_TILE_TIMER);
+	return 0;
 }
 
 /*
@@ -157,7 +157,9 @@ static DEFINE_PER_CPU(struct clock_event_device, tile_timer) = {
 	.rating = 100,
 	.irq = -1,
 	.set_next_event = tile_timer_set_next_event,
-	.set_mode = tile_timer_set_mode,
+	.set_state_shutdown = tile_timer_shutdown,
+	.set_state_oneshot = tile_timer_shutdown,
+	.tick_resume = tile_timer_shutdown,
 };
 
 void setup_tile_timer(void)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 19/23] um/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (17 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 18/23] tile/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 20/23] unicore/time: " Viresh Kumar
                   ` (3 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Jeff Dike,
	Richard Weinberger, user-mode-linux-devel, user-mode-linux-user

Migrate um driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: user-mode-linux-user@lists.sourceforge.net
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/um/kernel/time.c | 44 ++++++++++++++++++++------------------------
 1 file changed, 20 insertions(+), 24 deletions(-)

diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 117568d4f64a..5af441efb377 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -22,23 +22,16 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
 	local_irq_restore(flags);
 }
 
-static void itimer_set_mode(enum clock_event_mode mode,
-			    struct clock_event_device *evt)
+static int itimer_shutdown(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		set_interval();
-		break;
-
-	case CLOCK_EVT_MODE_SHUTDOWN:
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_ONESHOT:
-		disable_timer();
-		break;
-
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-	}
+	disable_timer();
+	return 0;
+}
+
+static int itimer_set_periodic(struct clock_event_device *evt)
+{
+	set_interval();
+	return 0;
 }
 
 static int itimer_next_event(unsigned long delta,
@@ -48,14 +41,17 @@ static int itimer_next_event(unsigned long delta,
 }
 
 static struct clock_event_device itimer_clockevent = {
-	.name		= "itimer",
-	.rating		= 250,
-	.cpumask	= cpu_all_mask,
-	.features	= CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
-	.set_mode	= itimer_set_mode,
-	.set_next_event = itimer_next_event,
-	.shift		= 32,
-	.irq		= 0,
+	.name			= "itimer",
+	.rating			= 250,
+	.cpumask		= cpu_all_mask,
+	.features		= CLOCK_EVT_FEAT_PERIODIC |
+				  CLOCK_EVT_FEAT_ONESHOT,
+	.set_state_shutdown	= itimer_shutdown,
+	.set_state_periodic	= itimer_set_periodic,
+	.set_state_oneshot	= itimer_shutdown,
+	.set_next_event		= itimer_next_event,
+	.shift			= 32,
+	.irq			= 0,
 };
 
 static irqreturn_t um_timer(int irq, void *dev)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 20/23] unicore/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (18 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 19/23] um/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 21/23] xtensa/time: " Viresh Kumar
                   ` (2 subsequent siblings)
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Guan Xuetao

Migrate unicore driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

We weren't doing anything for PERIODIC or RESUME modes and so their
callbacks aren't implemented.

Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/unicore32/kernel/time.c | 29 ++++++++++-------------------
 1 file changed, 10 insertions(+), 19 deletions(-)

diff --git a/arch/unicore32/kernel/time.c b/arch/unicore32/kernel/time.c
index d3824b2ff644..ac4c5449bb88 100644
--- a/arch/unicore32/kernel/time.c
+++ b/arch/unicore32/kernel/time.c
@@ -46,29 +46,20 @@ puv3_osmr0_set_next_event(unsigned long delta, struct clock_event_device *c)
 	return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
 }
 
-static void
-puv3_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
+static int puv3_osmr0_shutdown(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_ONESHOT:
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		writel(readl(OST_OIER) & ~OST_OIER_E0, OST_OIER);
-		writel(readl(OST_OSSR) & ~OST_OSSR_M0, OST_OSSR);
-		break;
-
-	case CLOCK_EVT_MODE_RESUME:
-	case CLOCK_EVT_MODE_PERIODIC:
-		break;
-	}
+	writel(readl(OST_OIER) & ~OST_OIER_E0, OST_OIER);
+	writel(readl(OST_OSSR) & ~OST_OSSR_M0, OST_OSSR);
+	return 0;
 }
 
 static struct clock_event_device ckevt_puv3_osmr0 = {
-	.name		= "osmr0",
-	.features	= CLOCK_EVT_FEAT_ONESHOT,
-	.rating		= 200,
-	.set_next_event	= puv3_osmr0_set_next_event,
-	.set_mode	= puv3_osmr0_set_mode,
+	.name			= "osmr0",
+	.features		= CLOCK_EVT_FEAT_ONESHOT,
+	.rating			= 200,
+	.set_next_event		= puv3_osmr0_set_next_event,
+	.set_state_shutdown	= puv3_osmr0_shutdown,
+	.set_state_oneshot	= puv3_osmr0_shutdown,
 };
 
 static cycle_t puv3_read_oscr(struct clocksource *cs)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 21/23] xtensa/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (19 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 20/23] unicore/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 22/23] drivers/hv: " Viresh Kumar
  2015-07-16 11:26 ` [PATCH 23/23] kernel: broadcast-hrtimer: " Viresh Kumar
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, Chris Zankel,
	Max Filippov, linux-xtensa

Migrate xtensa driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Chris Zankel <chris@zankel.net>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: linux-xtensa@linux-xtensa.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/xtensa/kernel/time.c | 53 +++++++++++++++++++++++------------------------
 1 file changed, 26 insertions(+), 27 deletions(-)

diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c
index 2a1823de69cc..b97767dbc7c8 100644
--- a/arch/xtensa/kernel/time.c
+++ b/arch/xtensa/kernel/time.c
@@ -52,8 +52,6 @@ static struct clocksource ccount_clocksource = {
 
 static int ccount_timer_set_next_event(unsigned long delta,
 		struct clock_event_device *dev);
-static void ccount_timer_set_mode(enum clock_event_mode mode,
-		struct clock_event_device *evt);
 struct ccount_timer {
 	struct clock_event_device evt;
 	int irq_enabled;
@@ -77,35 +75,34 @@ static int ccount_timer_set_next_event(unsigned long delta,
 	return ret;
 }
 
-static void ccount_timer_set_mode(enum clock_event_mode mode,
-		struct clock_event_device *evt)
+/*
+ * There is no way to disable the timer interrupt at the device level,
+ * only at the intenable register itself. Since enable_irq/disable_irq
+ * calls are nested, we need to make sure that these calls are
+ * balanced.
+ */
+static int ccount_timer_shutdown(struct clock_event_device *evt)
+{
+	struct ccount_timer *timer =
+		container_of(evt, struct ccount_timer, evt);
+
+	if (timer->irq_enabled) {
+		disable_irq(evt->irq);
+		timer->irq_enabled = 0;
+	}
+	return 0;
+}
+
+static int ccount_timer_set_oneshot(struct clock_event_device *evt)
 {
 	struct ccount_timer *timer =
 		container_of(evt, struct ccount_timer, evt);
 
-	/*
-	 * There is no way to disable the timer interrupt at the device level,
-	 * only at the intenable register itself. Since enable_irq/disable_irq
-	 * calls are nested, we need to make sure that these calls are
-	 * balanced.
-	 */
-	switch (mode) {
-	case CLOCK_EVT_MODE_SHUTDOWN:
-	case CLOCK_EVT_MODE_UNUSED:
-		if (timer->irq_enabled) {
-			disable_irq(evt->irq);
-			timer->irq_enabled = 0;
-		}
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-	case CLOCK_EVT_MODE_ONESHOT:
-		if (!timer->irq_enabled) {
-			enable_irq(evt->irq);
-			timer->irq_enabled = 1;
-		}
-	default:
-		break;
+	if (!timer->irq_enabled) {
+		enable_irq(evt->irq);
+		timer->irq_enabled = 1;
 	}
+	return 0;
 }
 
 static irqreturn_t timer_interrupt(int irq, void *dev_id);
@@ -126,7 +123,9 @@ void local_timer_setup(unsigned cpu)
 	clockevent->features = CLOCK_EVT_FEAT_ONESHOT;
 	clockevent->rating = 300;
 	clockevent->set_next_event = ccount_timer_set_next_event;
-	clockevent->set_mode = ccount_timer_set_mode;
+	clockevent->set_state_shutdown = ccount_timer_shutdown;
+	clockevent->set_state_oneshot = ccount_timer_set_oneshot;
+	clockevent->tick_resume = ccount_timer_set_oneshot;
 	clockevent->cpumask = cpumask_of(cpu);
 	clockevent->irq = irq_create_mapping(NULL, LINUX_TIMER_INT);
 	if (WARN(!clockevent->irq, "error: can't map timer irq"))
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 22/23] drivers/hv: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (20 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 21/23] xtensa/time: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  2015-07-16 11:26 ` [PATCH 23/23] kernel: broadcast-hrtimer: " Viresh Kumar
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Viresh Kumar, K. Y. Srinivasan,
	Haiyang Zhang, devel

Migrate hv driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: devel@linuxdriverproject.org
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/hv/hv.c | 45 +++++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 26 deletions(-)

diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
index d3943bceecc3..76e519ec2e51 100644
--- a/drivers/hv/hv.c
+++ b/drivers/hv/hv.c
@@ -271,7 +271,7 @@ static int hv_ce_set_next_event(unsigned long delta,
 {
 	cycle_t current_tick;
 
-	WARN_ON(evt->mode != CLOCK_EVT_MODE_ONESHOT);
+	WARN_ON(!clockevent_state_oneshot(evt));
 
 	rdmsrl(HV_X64_MSR_TIME_REF_COUNT, current_tick);
 	current_tick += delta;
@@ -279,31 +279,24 @@ static int hv_ce_set_next_event(unsigned long delta,
 	return 0;
 }
 
-static void hv_ce_setmode(enum clock_event_mode mode,
-			  struct clock_event_device *evt)
+static int hv_ce_shutdown(struct clock_event_device *evt)
+{
+	wrmsrl(HV_X64_MSR_STIMER0_COUNT, 0);
+	wrmsrl(HV_X64_MSR_STIMER0_CONFIG, 0);
+
+	return 0;
+}
+
+static int hv_ce_set_oneshot(struct clock_event_device *evt)
 {
 	union hv_timer_config timer_cfg;
 
-	switch (mode) {
-	case CLOCK_EVT_MODE_PERIODIC:
-		/* unsupported */
-		break;
-
-	case CLOCK_EVT_MODE_ONESHOT:
-		timer_cfg.enable = 1;
-		timer_cfg.auto_enable = 1;
-		timer_cfg.sintx = VMBUS_MESSAGE_SINT;
-		wrmsrl(HV_X64_MSR_STIMER0_CONFIG, timer_cfg.as_uint64);
-		break;
-
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		wrmsrl(HV_X64_MSR_STIMER0_COUNT, 0);
-		wrmsrl(HV_X64_MSR_STIMER0_CONFIG, 0);
-		break;
-	case CLOCK_EVT_MODE_RESUME:
-		break;
-	}
+	timer_cfg.enable = 1;
+	timer_cfg.auto_enable = 1;
+	timer_cfg.sintx = VMBUS_MESSAGE_SINT;
+	wrmsrl(HV_X64_MSR_STIMER0_CONFIG, timer_cfg.as_uint64);
+
+	return 0;
 }
 
 static void hv_init_clockevent_device(struct clock_event_device *dev, int cpu)
@@ -318,7 +311,8 @@ static void hv_init_clockevent_device(struct clock_event_device *dev, int cpu)
 	 * references to the hv_vmbus module making it impossible to unload.
 	 */
 
-	dev->set_mode = hv_ce_setmode;
+	dev->set_state_shutdown = hv_ce_shutdown;
+	dev->set_state_oneshot = hv_ce_set_oneshot;
 	dev->set_next_event = hv_ce_set_next_event;
 }
 
@@ -503,8 +497,7 @@ void hv_synic_cleanup(void *arg)
 
 	/* Turn off clockevent device */
 	if (ms_hyperv.features & HV_X64_MSR_SYNTIMER_AVAILABLE)
-		hv_ce_setmode(CLOCK_EVT_MODE_SHUTDOWN,
-			      hv_context.clk_evt[cpu]);
+		hv_ce_shutdown(hv_context.clk_evt[cpu]);
 
 	rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64);
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 23/23] kernel: broadcast-hrtimer: Migrate to new 'set-state' interface
  2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
                   ` (21 preceding siblings ...)
  2015-07-16 11:26 ` [PATCH 22/23] drivers/hv: " Viresh Kumar
@ 2015-07-16 11:26 ` Viresh Kumar
  22 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-16 11:26 UTC (permalink / raw)
  To: Thomas Gleixner, Daniel Lezcano; +Cc: linaro-kernel, linux-kernel, Viresh Kumar

Migrate broadcast-hrtimer driver to the new 'set-state' interface
provided by clockevents core, the earlier 'set-mode' interface is marked
obsolete now.

Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 kernel/time/tick-broadcast-hrtimer.c | 49 +++++++++++++++---------------------
 1 file changed, 20 insertions(+), 29 deletions(-)

diff --git a/kernel/time/tick-broadcast-hrtimer.c b/kernel/time/tick-broadcast-hrtimer.c
index 3e7db49a2381..53d7184da0be 100644
--- a/kernel/time/tick-broadcast-hrtimer.c
+++ b/kernel/time/tick-broadcast-hrtimer.c
@@ -18,30 +18,23 @@
 
 static struct hrtimer bctimer;
 
-static void bc_set_mode(enum clock_event_mode mode,
-			struct clock_event_device *bc)
+static int bc_shutdown(struct clock_event_device *evt)
 {
-	switch (mode) {
-	case CLOCK_EVT_MODE_UNUSED:
-	case CLOCK_EVT_MODE_SHUTDOWN:
-		/*
-		 * Note, we cannot cancel the timer here as we might
-		 * run into the following live lock scenario:
-		 *
-		 * cpu 0		cpu1
-		 * lock(broadcast_lock);
-		 *			hrtimer_interrupt()
-		 *			bc_handler()
-		 *			   tick_handle_oneshot_broadcast();
-		 *			    lock(broadcast_lock);
-		 * hrtimer_cancel()
-		 *  wait_for_callback()
-		 */
-		hrtimer_try_to_cancel(&bctimer);
-		break;
-	default:
-		break;
-	}
+	/*
+	 * Note, we cannot cancel the timer here as we might
+	 * run into the following live lock scenario:
+	 *
+	 * cpu 0		cpu1
+	 * lock(broadcast_lock);
+	 *			hrtimer_interrupt()
+	 *			bc_handler()
+	 *			   tick_handle_oneshot_broadcast();
+	 *			    lock(broadcast_lock);
+	 * hrtimer_cancel()
+	 *  wait_for_callback()
+	 */
+	hrtimer_try_to_cancel(&bctimer);
+	return 0;
 }
 
 /*
@@ -82,7 +75,7 @@ static int bc_set_next(ktime_t expires, struct clock_event_device *bc)
 }
 
 static struct clock_event_device ce_broadcast_hrtimer = {
-	.set_mode		= bc_set_mode,
+	.set_state_shutdown	= bc_shutdown,
 	.set_next_ktime		= bc_set_next,
 	.features		= CLOCK_EVT_FEAT_ONESHOT |
 				  CLOCK_EVT_FEAT_KTIME |
@@ -102,13 +95,11 @@ static enum hrtimer_restart bc_handler(struct hrtimer *t)
 {
 	ce_broadcast_hrtimer.event_handler(&ce_broadcast_hrtimer);
 
-	switch (ce_broadcast_hrtimer.mode) {
-	case CLOCK_EVT_MODE_ONESHOT:
+	if (clockevent_state_oneshot(&ce_broadcast_hrtimer))
 		if (ce_broadcast_hrtimer.next_event.tv64 != KTIME_MAX)
 			return HRTIMER_RESTART;
-	default:
-		return HRTIMER_NORESTART;
-	}
+
+	return HRTIMER_NORESTART;
 }
 
 void tick_setup_hrtimer_broadcast(void)
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH 08/23] m68k/coldfire/pit: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 08/23] m68k/coldfire/pit: " Viresh Kumar
@ 2015-07-16 12:42   ` Greg Ungerer
  0 siblings, 0 replies; 36+ messages in thread
From: Greg Ungerer @ 2015-07-16 12:42 UTC (permalink / raw)
  To: Viresh Kumar, Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Geert Uytterhoeven, linux-m68k

Hi Viresh,

On 16/07/15 21:26, Viresh Kumar wrote:
> Migrate m68k driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
>
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
>
> We weren't doing anything in ->set_mode(RESUME) and so tick_resume()
> isn't implemented.
>
> Cc: Greg Ungerer <gerg@uclinux.org>

Applied and tested ok (against 4.2-rc2).

Acked-by: Greg Ungerer <gerg@uclinux.org>


> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Cc: linux-m68k@lists.linux-m68k.org
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>   arch/m68k/coldfire/pit.c | 66 ++++++++++++++++++++++--------------------------
>   1 file changed, 30 insertions(+), 36 deletions(-)
>
> diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c
> index 493b3111d4c1..d86a9ffb3f13 100644
> --- a/arch/m68k/coldfire/pit.c
> +++ b/arch/m68k/coldfire/pit.c
> @@ -42,37 +42,28 @@ static u32 pit_cnt;
>    * This is also called after resume to bring the PIT into operation again.
>    */
>   
> -static void init_cf_pit_timer(enum clock_event_mode mode,
> -                             struct clock_event_device *evt)
> +static int cf_pit_set_periodic(struct clock_event_device *evt)
>   {
> -	switch (mode) {
> -	case CLOCK_EVT_MODE_PERIODIC:
> -
> -		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> -		__raw_writew(PIT_CYCLES_PER_JIFFY, TA(MCFPIT_PMR));
> -		__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE | \
> -				MCFPIT_PCSR_OVW | MCFPIT_PCSR_RLD | \
> -				MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
> -		break;
> -
> -	case CLOCK_EVT_MODE_SHUTDOWN:
> -	case CLOCK_EVT_MODE_UNUSED:
> -
> -		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> -		break;
> -
> -	case CLOCK_EVT_MODE_ONESHOT:
> -
> -		__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> -		__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE | \
> -				MCFPIT_PCSR_OVW | MCFPIT_PCSR_CLK64, \
> -				TA(MCFPIT_PCSR));
> -		break;
> -
> -	case CLOCK_EVT_MODE_RESUME:
> -		/* Nothing to do here */
> -		break;
> -	}
> +	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> +	__raw_writew(PIT_CYCLES_PER_JIFFY, TA(MCFPIT_PMR));
> +	__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE |
> +		     MCFPIT_PCSR_OVW | MCFPIT_PCSR_RLD |
> +		     MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
> +	return 0;
> +}
> +
> +static int cf_pit_set_oneshot(struct clock_event_device *evt)
> +{
> +	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> +	__raw_writew(MCFPIT_PCSR_EN | MCFPIT_PCSR_PIE |
> +		     MCFPIT_PCSR_OVW | MCFPIT_PCSR_CLK64, TA(MCFPIT_PCSR));
> +	return 0;
> +}
> +
> +static int cf_pit_shutdown(struct clock_event_device *evt)
> +{
> +	__raw_writew(MCFPIT_PCSR_DISABLE, TA(MCFPIT_PCSR));
> +	return 0;
>   }
>   
>   /*
> @@ -88,12 +79,15 @@ static int cf_pit_next_event(unsigned long delta,
>   }
>   
>   struct clock_event_device cf_pit_clockevent = {
> -	.name		= "pit",
> -	.features	= CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
> -	.set_mode	= init_cf_pit_timer,
> -	.set_next_event	= cf_pit_next_event,
> -	.shift		= 32,
> -	.irq		= MCF_IRQ_PIT1,
> +	.name			= "pit",
> +	.features		= CLOCK_EVT_FEAT_PERIODIC |
> +				  CLOCK_EVT_FEAT_ONESHOT,
> +	.set_state_shutdown	= cf_pit_shutdown,
> +	.set_state_periodic	= cf_pit_set_periodic,
> +	.set_state_oneshot	= cf_pit_set_oneshot,
> +	.set_next_event		= cf_pit_next_event,
> +	.shift			= 32,
> +	.irq			= MCF_IRQ_PIT1,
>   };
>   
>   


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 12/23] openrisc/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 12/23] openrisc/time: " Viresh Kumar
@ 2015-07-16 13:42   ` Jonas Bonn
  0 siblings, 0 replies; 36+ messages in thread
From: Jonas Bonn @ 2015-07-16 13:42 UTC (permalink / raw)
  To: Viresh Kumar, Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, linux

On 07/16/2015 01:26 PM, Viresh Kumar wrote:
> Migrate openrisc driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
>
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
>
> We weren't doing anything in the ->set_mode() callback. So, this patch
> doesn't provide any set-state callbacks.
>
> Cc: Jonas Bonn <jonas@southpole.se>
> Cc: linux@lists.openrisc.net
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Acked-by: Jonas Bonn <jonas@southpole.se>

/Jonas

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 17/23] sparc/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 17/23] sparc/time: " Viresh Kumar
@ 2015-07-16 18:13   ` David Miller
  0 siblings, 0 replies; 36+ messages in thread
From: David Miller @ 2015-07-16 18:13 UTC (permalink / raw)
  To: viresh.kumar
  Cc: tglx, daniel.lezcano, linaro-kernel, linux-kernel, sparclinux,
	alexandre.belloni, cl, mingo, john.stultz, rusty, tj, wsa,
	pang.xunlei

From: Viresh Kumar <viresh.kumar@linaro.org>
Date: Thu, 16 Jul 2015 16:56:29 +0530

> Migrate sparc drivers to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
> 
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
> 
> We weren't doing anything which switching to few clockevent modes and so
> their callbacks aren't implemented.
> 
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: sparclinux@vger.kernel.org
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Acked-by: David S. Miller <davem@davemloft.net>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 11/23] nios2/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 11/23] nios2/time: " Viresh Kumar
@ 2015-07-17  9:01   ` Tobias Klauser
  2015-07-21 10:03     ` [Nios2-dev] " Ley Foon Tan
  0 siblings, 1 reply; 36+ messages in thread
From: Tobias Klauser @ 2015-07-17  9:01 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Thomas Gleixner, Daniel Lezcano, linaro-kernel, linux-kernel,
	Ley Foon Tan, Herbert Xu, Dmitry Torokhov, nios2-dev

On 2015-07-16 at 13:26:23 +0200, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> Migrate nios2 driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
> 
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
> 
> Cc: Ley Foon Tan <lftan@altera.com>
> Cc: Tobias Klauser <tklauser@distanz.ch>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Dmitry Torokhov <dtor@chromium.org>
> Cc: nios2-dev@lists.rocketboards.org
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Reviewed-by: Tobias Klauser <tklauser@distanz.ch>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 06/23] cris/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 06/23] cris/time: " Viresh Kumar
@ 2015-07-17 18:47   ` Rabin Vincent
  0 siblings, 0 replies; 36+ messages in thread
From: Rabin Vincent @ 2015-07-17 18:47 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Thomas Gleixner, Daniel Lezcano, linaro-kernel, linux-kernel,
	Mikael Starvik, Jesper Nilsson, Guenter Roeck, linux-cris-kernel

On Thu, Jul 16, 2015 at 04:56:18PM +0530, Viresh Kumar wrote:
> Migrate cris driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
> 
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
> 
> Cc: Mikael Starvik <starvik@axis.com>
> Cc: Jesper Nilsson <jesper.nilsson@axis.com>
> Cc: Rabin Vincent <rabin@rab.in>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: linux-cris-kernel@axis.com
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Acked-by: Rabin Vincent <rabin@rab.in>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 03/23] AVR32/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 03/23] AVR32/time: " Viresh Kumar
@ 2015-07-20  7:40   ` Hans-Christian Egtvedt
  0 siblings, 0 replies; 36+ messages in thread
From: Hans-Christian Egtvedt @ 2015-07-20  7:40 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Thomas Gleixner, Daniel Lezcano, linaro-kernel, linux-kernel,
	Haavard Skinnemoen

Around Thu 16 Jul 2015 16:56:15 +0530 or thereabout, Viresh Kumar wrote:
> Migrate avr32 driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
> 
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
> 
> We want to call cpu_idle_poll_ctrl() in shutdown only if we were in
> oneshot or resume state earlier. Create another variable to save this
> information and check that in shutdown callback.
> 
> Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Looks sane.

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

> ---
>  arch/avr32/kernel/time.c | 65 ++++++++++++++++++++++++------------------------
>  1 file changed, 33 insertions(+), 32 deletions(-)

<snipp diff>

-- 
BR, HcE

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 02/23] ARC/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 02/23] ARC/time: " Viresh Kumar
@ 2015-07-20 10:55   ` Vineet Gupta
  0 siblings, 0 replies; 36+ messages in thread
From: Vineet Gupta @ 2015-07-20 10:55 UTC (permalink / raw)
  To: Viresh Kumar, Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Vineet Gupta

On Thursday 16 July 2015 02:27 PM, Viresh Kumar wrote:

Migrate arc driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Cc: Vineet Gupta <vgupta@synopsys.com><mailto:vgupta@synopsys.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org><mailto:viresh.kumar@linaro.org>

Added to ARC for-next.

Thx Viresh,

-Vineet

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 18/23] tile/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 18/23] tile/time: " Viresh Kumar
@ 2015-07-20 21:02   ` Chris Metcalf
  2015-07-21 13:11   ` Chris Metcalf
  1 sibling, 0 replies; 36+ messages in thread
From: Chris Metcalf @ 2015-07-20 21:02 UTC (permalink / raw)
  To: Viresh Kumar, Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Christoph Lameter, Joe Perches,
	John Stultz, Peter Zijlstra, Tejun Heo

On 07/16/2015 07:26 AM, Viresh Kumar wrote:
> Migrate tile driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
>
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
>
> Cc: Chris Metcalf <cmetcalf@ezchip.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>   arch/tile/kernel/time.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)

Acked-by: Chris Metcalf <cmetcalf@ezchip.com>

-- 
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [Nios2-dev] [PATCH 11/23] nios2/time: Migrate to new 'set-state' interface
  2015-07-17  9:01   ` Tobias Klauser
@ 2015-07-21 10:03     ` Ley Foon Tan
  0 siblings, 0 replies; 36+ messages in thread
From: Ley Foon Tan @ 2015-07-21 10:03 UTC (permalink / raw)
  To: Tobias Klauser
  Cc: Viresh Kumar, linaro-kernel, Herbert Xu, Daniel Lezcano,
	linux-kernel, nios2-dev, Thomas Gleixner, Dmitry Torokhov

On Fri, Jul 17, 2015 at 5:01 PM, Tobias Klauser <tklauser@distanz.ch> wrote:
> On 2015-07-16 at 13:26:23 +0200, Viresh Kumar <viresh.kumar@linaro.org> wrote:
>> Migrate nios2 driver to the new 'set-state' interface provided by
>> clockevents core, the earlier 'set-mode' interface is marked obsolete
>> now.
>>
>> This also enables us to implement callbacks for new states of clockevent
>> devices, for example: ONESHOT_STOPPED.
>>
>> Cc: Ley Foon Tan <lftan@altera.com>
>> Cc: Tobias Klauser <tklauser@distanz.ch>
>> Cc: Herbert Xu <herbert@gondor.apana.org.au>
>> Cc: Dmitry Torokhov <dtor@chromium.org>
>> Cc: nios2-dev@lists.rocketboards.org
>> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
>
> Reviewed-by: Tobias Klauser <tklauser@distanz.ch>

Acked-by: Ley Foon Tan <lftan@altera.com>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 18/23] tile/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 18/23] tile/time: " Viresh Kumar
  2015-07-20 21:02   ` Chris Metcalf
@ 2015-07-21 13:11   ` Chris Metcalf
  2015-07-21 14:09     ` Viresh Kumar
  1 sibling, 1 reply; 36+ messages in thread
From: Chris Metcalf @ 2015-07-21 13:11 UTC (permalink / raw)
  To: Viresh Kumar, Thomas Gleixner, Daniel Lezcano
  Cc: linaro-kernel, linux-kernel, Christoph Lameter, Joe Perches,
	John Stultz, Peter Zijlstra, Tejun Heo

On 7/16/2015 7:26 AM, Viresh Kumar wrote:
> Migrate tile driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
>
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
>
> Cc: Chris Metcalf<cmetcalf@ezchip.com>
> Signed-off-by: Viresh Kumar<viresh.kumar@linaro.org>
> ---
>   arch/tile/kernel/time.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)

Viresh suggested I take this into the tile tree, and I have now done so.

-- 
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 18/23] tile/time: Migrate to new 'set-state' interface
  2015-07-21 13:11   ` Chris Metcalf
@ 2015-07-21 14:09     ` Viresh Kumar
  0 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2015-07-21 14:09 UTC (permalink / raw)
  To: Chris Metcalf
  Cc: Thomas Gleixner, Daniel Lezcano, linaro-kernel, linux-kernel,
	Christoph Lameter, Joe Perches, John Stultz, Peter Zijlstra,
	Tejun Heo

On 21-07-15, 09:11, Chris Metcalf wrote:
> Viresh suggested I take this into the tile tree, and I have now done so.

Thanks.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 07/23] hexagon/time: Migrate to new 'set-state' interface
  2015-07-16 11:26 ` [PATCH 07/23] hexagon/time: " Viresh Kumar
@ 2015-07-21 22:28   ` rkuo
  0 siblings, 0 replies; 36+ messages in thread
From: rkuo @ 2015-07-21 22:28 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Thomas Gleixner, Daniel Lezcano, linaro-kernel, linux-kernel,
	linux-hexagon

On Thu, Jul 16, 2015 at 04:56:19PM +0530, Viresh Kumar wrote:
> Migrate hexagon driver to the new 'set-state' interface provided by
> clockevents core, the earlier 'set-mode' interface is marked obsolete
> now.
> 
> This also enables us to implement callbacks for new states of clockevent
> devices, for example: ONESHOT_STOPPED.
> 
> We weren't doing anything in the ->set_mode() callback. So, this patch
> doesn't provide any set-state callbacks.
> 
> Cc: Richard Kuo <rkuo@codeaurora.org>
> Cc: linux-hexagon@vger.kernel.org
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  arch/hexagon/kernel/time.c | 17 +----------------
>  1 file changed, 1 insertion(+), 16 deletions(-)
> 

Hexagon bits look fine to me, thanks!

Acked-by: Richard Kuo <rkuo@codeaurora.org>

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, 
a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2015-07-21 22:28 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-16 11:26 [PATCH 00/23] ARCH: Migrate clockevent drivers to 'set-state' interface Viresh Kumar
2015-07-16 11:26 ` [PATCH 01/23] alpha/time: Migrate to new " Viresh Kumar
2015-07-16 11:26 ` [PATCH 02/23] ARC/time: " Viresh Kumar
2015-07-20 10:55   ` Vineet Gupta
2015-07-16 11:26 ` [PATCH 03/23] AVR32/time: " Viresh Kumar
2015-07-20  7:40   ` Hans-Christian Egtvedt
2015-07-16 11:26 ` [PATCH 04/23] blackfin/time-ts: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 05/23] c6x/timer64: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 06/23] cris/time: " Viresh Kumar
2015-07-17 18:47   ` Rabin Vincent
2015-07-16 11:26 ` [PATCH 07/23] hexagon/time: " Viresh Kumar
2015-07-21 22:28   ` rkuo
2015-07-16 11:26 ` [PATCH 08/23] m68k/coldfire/pit: " Viresh Kumar
2015-07-16 12:42   ` Greg Ungerer
2015-07-16 11:26 ` [PATCH 09/23] microblaze/timer: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 10/23] mn10300/cevt-mn10300: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 11/23] nios2/time: " Viresh Kumar
2015-07-17  9:01   ` Tobias Klauser
2015-07-21 10:03     ` [Nios2-dev] " Ley Foon Tan
2015-07-16 11:26 ` [PATCH 12/23] openrisc/time: " Viresh Kumar
2015-07-16 13:42   ` Jonas Bonn
2015-07-16 11:26 ` [PATCH 13/23] powerpc/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 14/23] s390/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 15/23] score/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 16/23] sh/localtimer: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 17/23] sparc/time: " Viresh Kumar
2015-07-16 18:13   ` David Miller
2015-07-16 11:26 ` [PATCH 18/23] tile/time: " Viresh Kumar
2015-07-20 21:02   ` Chris Metcalf
2015-07-21 13:11   ` Chris Metcalf
2015-07-21 14:09     ` Viresh Kumar
2015-07-16 11:26 ` [PATCH 19/23] um/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 20/23] unicore/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 21/23] xtensa/time: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 22/23] drivers/hv: " Viresh Kumar
2015-07-16 11:26 ` [PATCH 23/23] kernel: broadcast-hrtimer: " Viresh Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).