Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753693AbbGXNrs (ORCPT ); Fri, 24 Jul 2015 09:47:48 -0400 Received: from mail-yk0-f193.google.com ([209.85.160.193]:32940 "EHLO mail-yk0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752531AbbGXNrp (ORCPT ); Fri, 24 Jul 2015 09:47:45 -0400 MIME-Version: 1.0 In-Reply-To: <6c724d4388997588f38587213ce1ab7d3925b87c.1437101996.git.viresh.kumar@linaro.org> References: <6c724d4388997588f38587213ce1ab7d3925b87c.1437101996.git.viresh.kumar@linaro.org> From: Wan ZongShun Date: Fri, 24 Jul 2015 12:53:01 +0800 Message-ID: Subject: Re: [PATCH 16/18] ARM/w90x900/time: Migrate to new 'set-state' interface To: Viresh Kumar Cc: arm@kernel.org, Olof Johansson , linaro-kernel@lists.linaro.org, arnd.bergmann@linaro.org, linux-arm-kernel , open list , Russell King Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3802 Lines: 110 2015-07-17 13:11 GMT+08:00 Viresh Kumar : > Migrate w90x900 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: Wan ZongShun > Signed-off-by: Viresh Kumar > --- > arch/arm/mach-w90x900/time.c | 51 ++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 23 deletions(-) > > diff --git a/arch/arm/mach-w90x900/time.c b/arch/arm/mach-w90x900/time.c > index 9230d3725599..cd1966ec9143 100644 > --- a/arch/arm/mach-w90x900/time.c > +++ b/arch/arm/mach-w90x900/time.c > @@ -48,31 +48,32 @@ > > static unsigned int timer0_load; > > -static void nuc900_clockevent_setmode(enum clock_event_mode mode, > - struct clock_event_device *clk) > +static int nuc900_clockevent_shutdown(struct clock_event_device *evt) > { > - unsigned int val; > + unsigned int val = __raw_readl(REG_TCSR0) & ~(0x03 << 27); > > - val = __raw_readl(REG_TCSR0); > - val &= ~(0x03 << 27); > + __raw_writel(val, REG_TCSR0); > + return 0; > +} > + > +static int nuc900_clockevent_set_oneshot(struct clock_event_device *evt) > +{ > + unsigned int val = __raw_readl(REG_TCSR0) & ~(0x03 << 27); > > - switch (mode) { > - case CLOCK_EVT_MODE_PERIODIC: > - __raw_writel(timer0_load, REG_TICR0); > - val |= (PERIOD | COUNTEN | INTEN | PRESCALE); > - break; > + val |= (ONESHOT | COUNTEN | INTEN | PRESCALE); > > - case CLOCK_EVT_MODE_ONESHOT: > - val |= (ONESHOT | COUNTEN | INTEN | PRESCALE); > - break; > + __raw_writel(val, REG_TCSR0); > + return 0; > +} > > - case CLOCK_EVT_MODE_UNUSED: > - case CLOCK_EVT_MODE_SHUTDOWN: > - case CLOCK_EVT_MODE_RESUME: > - break; > - } > +static int nuc900_clockevent_set_periodic(struct clock_event_device *evt) > +{ > + unsigned int val = __raw_readl(REG_TCSR0) & ~(0x03 << 27); > > + __raw_writel(timer0_load, REG_TICR0); > + val |= (PERIOD | COUNTEN | INTEN | PRESCALE); > __raw_writel(val, REG_TCSR0); > + return 0; > } > > static int nuc900_clockevent_setnextevent(unsigned long evt, > @@ -90,11 +91,15 @@ static int nuc900_clockevent_setnextevent(unsigned long evt, > } > > static struct clock_event_device nuc900_clockevent_device = { > - .name = "nuc900-timer0", > - .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, > - .set_mode = nuc900_clockevent_setmode, > - .set_next_event = nuc900_clockevent_setnextevent, > - .rating = 300, > + .name = "nuc900-timer0", > + .features = CLOCK_EVT_FEAT_PERIODIC | > + CLOCK_EVT_FEAT_ONESHOT, > + .set_state_shutdown = nuc900_clockevent_shutdown, > + .set_state_periodic = nuc900_clockevent_set_periodic, > + .set_state_oneshot = nuc900_clockevent_set_oneshot, > + .tick_resume = nuc900_clockevent_shutdown, > + .set_next_event = nuc900_clockevent_setnextevent, > + .rating = 300, > }; > Acked-by: Wan zongshun thanks! > /*IRQ handler for the timer*/ > -- > 2.4.0 > -- --- Vincent Wan(Zongshun) www.mcuos.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/