mbox

[PULL] ARM: clockevents: Migrate to 'set-state' callbacks

Message ID cover.1437101996.git.viresh.kumar@linaro.org
State New
Headers show

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git ARM/clkevt/set-state-4.3

Message

Viresh Kumar July 17, 2015, 5:10 a.m. UTC
Hi Olof,

This series migrates ARM clockevent drivers (present in arch/arm/
directory), 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.

--
viresh

The following changes since commit bc0195aad0daa2ad5b0d76cce22b167bc3435590:

  Linux 4.2-rc2 (2015-07-12 15:10:30 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git ARM/clkevt/set-state-4.3

for you to fetch changes up to 10dca88a4be632678088f5cbc20b54c2113ecb91:

  ARM/orion/time: Migrate to new 'set-state' interface (2015-07-17 08:29:44 +0530)

----------------------------------------------------------------
Viresh Kumar (18):
      ARM/smp_twd: Migrate to new 'set-state' interface
      ARM/cns3xxx/timer: Migrate to new 'set-state' interface
      ARM/davinci/time: Migrate to new 'set-state' interface
      ARM/dc21285-timer: Migrate to new 'set-state' interface
      ARM/gemini/time: Migrate to new 'set-state' interface
      ARM/imx/epit: Migrate to new 'set-state' interface
      ARM/ixp4xx/timer: Migrate to new 'set-state' interface
      ARM/ks8695/time: Migrate to new 'set-state' interface
      ARM/lpc32xx/timer: Migrate to new 'set-state' interface
      ARM/mmp/time: Migrate to new 'set-state' interface
      ARM/netx/time: Migrate to new 'set-state' interface
      ARM/omap1/time: Migrate to new 'set-state' interface
      ARM/omap1/timer32: Migrate to new 'set-state' interface
      ARM/omap2/timer: Migrate to new 'set-state' interface
      ARM/SPEAr/time: Migrate to new 'set-state' interface
      ARM/w90x900/time: Migrate to new 'set-state' interface
      ARM/iop/time: Migrate to new 'set-state' interface
      ARM/orion/time: Migrate to new 'set-state' interface

 arch/arm/kernel/smp_twd.c                | 48 +++++++++--------
 arch/arm/mach-cns3xxx/core.c             | 55 ++++++++++---------
 arch/arm/mach-davinci/time.c             | 54 ++++++++++---------
 arch/arm/mach-footbridge/dc21285-timer.c | 48 ++++++++---------
 arch/arm/mach-gemini/time.c              | 69 ++++++++++++------------
 arch/arm/mach-imx/epit.c                 | 67 ++++++++++++-----------
 arch/arm/mach-ixp4xx/common.c            | 68 +++++++++++++----------
 arch/arm/mach-ks8695/time.c              | 43 ++++++++-------
 arch/arm/mach-lpc32xx/timer.c            | 40 +++++---------
 arch/arm/mach-mmp/time.c                 | 29 ++++------
 arch/arm/mach-netx/time.c                | 61 +++++++++++----------
 arch/arm/mach-omap1/time.c               | 35 ++++++------
 arch/arm/mach-omap1/timer32k.c           | 33 ++++++------
 arch/arm/mach-omap2/timer.c              | 48 ++++++++---------
 arch/arm/mach-spear/time.c               | 89 ++++++++++++++++--------------
 arch/arm/mach-w90x900/time.c             | 51 ++++++++++--------
 arch/arm/plat-iop/time.c                 | 70 ++++++++++++++----------
 arch/arm/plat-orion/time.c               | 93 ++++++++++++++++----------------
 18 files changed, 522 insertions(+), 479 deletions(-)

Comments

Olof Johansson July 17, 2015, 4:59 p.m. UTC | #1
On Fri, Jul 17, 2015 at 10:40:54AM +0530, Viresh Kumar wrote:
> Hi Olof,
> 
> This series migrates ARM clockevent drivers (present in arch/arm/
> directory), 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.
> 
> --
> viresh
> 
> The following changes since commit bc0195aad0daa2ad5b0d76cce22b167bc3435590:
> 
>   Linux 4.2-rc2 (2015-07-12 15:10:30 -0700)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git ARM/clkevt/set-state-4.3

Merged into next/cleanup. Please consider using signed tags in the future
instead of plain branches.


-Olof
Viresh Kumar July 18, 2015, 4:29 a.m. UTC | #2
On 17-07-15, 09:59, Olof Johansson wrote:
> Merged into next/cleanup. Please consider using signed tags in the future
> instead of plain branches.

Okay, will remember that.
Wan ZongShun July 24, 2015, 4:53 a.m. UTC | #3
2015-07-17 13:11 GMT+08:00 Viresh Kumar <viresh.kumar@linaro.org>:
> 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 <mcuos.com@gmail.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  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 <mcuos.com@gmail.com>

thanks!

>  /*IRQ handler for the timer*/
> --
> 2.4.0
>