[RFC 3/5] ARM: OMAP2+: timer: Add clocksource initialization and powerup support

Kevin Hilman khilman at linaro.org
Fri Mar 14 17:09:50 EDT 2014


Joel Fernandes <joelf at ti.com> writes:

> On 03/13/2014 04:52 PM, Rob Herring wrote:
>> On Thu, Mar 13, 2014 at 3:35 PM, Joel Fernandes <joelf at ti.com> wrote:
>>> Introduce a generic omap timer initialization function that can
>>> be used by all SoCs for which support is available in the clocksource
>>> driver introduced in the series.
>>>
>>> The function will also be responsible for calling clock initialization
>>> required for everything else to work.
>>>
>>> Signed-off-by: Joel Fernandes <joelf at ti.com>
>>> ---
>>>  arch/arm/mach-omap2/common.h |    1 +
>>>  arch/arm/mach-omap2/timer.c  |   28 ++++++++++++++++++++++++++++
>>>  2 files changed, 29 insertions(+)
>>>
>>> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
>>> index a6aae30..e58d9a4 100644
>>> --- a/arch/arm/mach-omap2/common.h
>>> +++ b/arch/arm/mach-omap2/common.h
>>> @@ -92,6 +92,7 @@ extern void omap3_secure_sync32k_timer_init(void);
>>>  extern void omap3_gptimer_timer_init(void);
>>>  extern void omap4_local_timer_init(void);
>>>  extern void omap5_realtime_timer_init(void);
>>> +void omap_generic_timer_init(void);
>>>
>>>  void omap2420_init_early(void);
>>>  void omap2430_init_early(void);
>>> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
>>> index 74044aa..08c73a0 100644
>>> --- a/arch/arm/mach-omap2/timer.c
>>> +++ b/arch/arm/mach-omap2/timer.c
>>> @@ -324,6 +324,25 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
>>>         return r;
>>>  }
>>>
>>> +int __init omap_dmtimer_powerup(struct omap_dm_timer *timer,
>>> +                                       struct device_node *np) {
>> 
>> This function seems unrelated to the commit message.
>
> Ok, I'll add it in the message.
>
>> 
>>> +       struct omap_hwmod *oh;
>>> +       const char *oh_name = NULL;
>>> +
>>> +       of_property_read_string_index(np, "ti,hwmods", 0, &oh_name);
>>> +       if (!oh_name)
>>> +               return -ENODEV;
>>> +
>>> +       oh = omap_hwmod_lookup(oh_name);
>>> +       if (!oh)
>>> +               return -ENODEV;
>>> +
>>> +       omap_hwmod_setup_one(oh_name);
>>> +
>>> +       omap_hwmod_enable(oh);
>>> +       return 0;
>>> +}
>>> +
>>>  static void __init omap2_gp_clockevent_init(int gptimer_id,
>>>                                                 const char *fck_source,
>>>                                                 const char *property)
>>> @@ -615,6 +634,15 @@ static OMAP_SYS_32K_TIMER_INIT(4, 1, "timer_32k_ck", "ti,timer-alwon",
>>>                                2, "sys_clkin_ck", NULL);
>>>  #endif
>>>
>>> +void omap_generic_timer_init(void)
>>> +{
>>> +       if (!of_have_populated_dt())
>>> +               BUG_ON("Generic timer init should only be used for DT boot\n");
>> 
>> I thought omap2 is always DT boot now.
>
> That's right, sorry- I'll get rid of the check.

Actually, mainline still supports legacy boot and has board files for
OMAP3 platforms, and we shouldn't break legacy boot on purpose IMO.

Kevin



More information about the linux-arm-kernel mailing list