On 07/20/2013 02:04 AM, Tomasz Figa wrote:
> In case of Samsung PWM timer, clocksource MMIO can not be used, because
> custom suspend/resume callbacks are required.
> 
> Signed-off-by: Tomasz Figa <[email protected]>
> ---

Reviewed-by: Daniel Lezcano <[email protected]>

Please in the future Cc me and Thomas Gleixner (clocksource/clockevent
maintainers).

Thanks
  -- Daniel

>  drivers/clocksource/Kconfig             |  1 -
>  drivers/clocksource/samsung_pwm_timer.c | 19 +++++++++++++++----
>  2 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index b7b9b04..41c6946 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -99,7 +99,6 @@ config CLKSRC_EXYNOS_MCT
>  
>  config CLKSRC_SAMSUNG_PWM
>       bool
> -     select CLKSRC_MMIO
>       help
>         This is a new clocksource driver for the PWM timer found in
>         Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
> diff --git a/drivers/clocksource/samsung_pwm_timer.c 
> b/drivers/clocksource/samsung_pwm_timer.c
> index 823279b..753ffec 100644
> --- a/drivers/clocksource/samsung_pwm_timer.c
> +++ b/drivers/clocksource/samsung_pwm_timer.c
> @@ -288,6 +288,18 @@ static void __init samsung_clockevent_init(void)
>       }
>  }
>  
> +static cycle_t samsung_clocksource_read(struct clocksource *c)
> +{
> +     return ~readl_relaxed(pwm.source_reg);
> +}
> +
> +static struct clocksource samsung_clocksource = {
> +     .name           = "samsung_clocksource_timer",
> +     .rating         = 250,
> +     .read           = samsung_clocksource_read,
> +     .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
> +};
> +
>  /*
>   * Override the global weak sched_clock symbol with this
>   * local implementation which uses the clocksource to get some
> @@ -297,7 +309,7 @@ static void __init samsung_clockevent_init(void)
>   */
>  static u32 notrace samsung_read_sched_clock(void)
>  {
> -     return ~__raw_readl(pwm.source_reg);
> +     return samsung_clocksource_read(NULL);
>  }
>  
>  static void __init samsung_clocksource_init(void)
> @@ -324,9 +336,8 @@ static void __init samsung_clocksource_init(void)
>       setup_sched_clock(samsung_read_sched_clock,
>                                               pwm.variant.bits, clock_rate);
>  
> -     ret = clocksource_mmio_init(pwm.source_reg, "samsung_clocksource_timer",
> -                                     clock_rate, 250, pwm.variant.bits,
> -                                     clocksource_mmio_readl_down);
> +     samsung_clocksource.mask = CLOCKSOURCE_MASK(pwm.variant.bits);
> +     ret = clocksource_register_hz(&samsung_clocksource, clock_rate);
>       if (ret)
>               panic("samsung_clocksource_timer: can't register 
> clocksource\n");
>  }
> 


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to