[PATCH V2] clockevents: rockchip: Add rockchip timer for rk3288

Daniel Lezcano daniel.lezcano at linaro.org
Mon Jan 26 01:33:23 PST 2015


On 01/26/2015 02:25 AM, Kever Yang wrote:
> Hi Daniel,

Hi Kever,

[ ... ]

>> +static inline int rk_timer_set_next_event(unsigned long cycles,
>> +                      struct clock_event_device *ce)
>> +{
>> +    rk_timer_disable(ce);
>> +    rk_timer_update_counter(cycles, ce);
>> +    rk_timer_enable(ce, TIMER_MODE_USER_DEFINED_COUNT);
>> +    return 0;
>> +}
>> +
>> +static inline void rk_timer_set_mode(enum clock_event_mode mode,
>> +                     struct clock_event_device *ce)
>> +{
>> +    switch (mode) {
>> +    case CLOCK_EVT_MODE_PERIODIC:
>> +        rk_timer_disable(ce);
>> +        rk_timer_update_counter(rk_timer(ce)->freq / HZ - 1, ce);
>> +        rk_timer_enable(ce, TIMER_MODE_FREE_RUNNING);
>> +    case CLOCK_EVT_MODE_ONESHOT:
> This driver seems init the timer as ONE SHOT mode, and we can
> set to PERIODIC by this code, but what if user set the timer
> as PERIODIC mode and then want to set back to ONESHOT mode?

Mmh, I think that will be followed by a call set_next_event, hence 
disabling the timer and set the right mode with the next event.


-- 
  <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




More information about the Linux-rockchip mailing list