Re: [PATCH v3 2/2] clocksource: sprd: Add timer driver for Spreadtrum SC9860 platform

From: Arnd Bergmann
Date: Tue Dec 12 2017 - 04:42:32 EST


On Tue, Dec 12, 2017 at 10:26 AM, Baolin Wang <baolin.wang@xxxxxxxxxx> wrote:
> On 12 December 2017 at 17:16, Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote:
>> On 08/12/2017 09:20, Baolin Wang wrote:
>>>>> +static irqreturn_t sprd_timer_interrupt(int irq, void *dev_id)
>>>>> +{
>>>>> + struct clock_event_device *ce = (struct clock_event_device *)dev_id;
>>>>> + struct timer_of *to = to_timer_of(ce);
>>>>> +
>>>>> + sprd_timer_clear_interrupt(timer_of_base(to));
>>>>> +
>>>>> + if (clockevent_state_oneshot(ce))
>>>>> + sprd_timer_disable(timer_of_base(to));
>>>>> +
>>>>> + ce->event_handler(ce);
>>>>> + return IRQ_HANDLED;
>>>>> +}
>>>>> +
>>>>> +static struct timer_of to = {
>>>>> + .flags = TIMER_OF_IRQ | TIMER_OF_BASE,
>>>>
>>>> Why not the TIMER_OF_CLOCK ?
>>>
>>> The timer's clock is fixed to 32.768K and no need to divide the
>>> frequency, so our clock tree does not supply the timer's clock now.
>>
>> The driver is fine. However, I would like to unify the clk usage in the
>> timer driver, so if you refer to a clock so the TIMER_OF_CLOCK can be
>> used, that will nice.
>
> I understand your concern, but I've asked our clock driver owner in
> Spreadtrum, we have no related registers to describe the topology of
> the RTC fixed 32.768K, so the clock driver can not add timer's clock
> node.

I think you can easily put a separate DT node in the tree with
compatible="fixed-clock". This will be available during early boot,
and interpreted by setting TIMER_OF_CLOCK.

Arnd