Re: [PATCH] drivers: clocksource: Use ttc driver as platform driver

From: Daniel Lezcano
Date: Thu Dec 05 2019 - 11:24:37 EST


On 26/11/2019 12:53, Rajan Vaja wrote:
> Request for review.

Waiting from Michal Simek review ...


>> -----Original Message-----
>> From: Rajan Vaja <rajan.vaja@xxxxxxxxxx>
>> Sent: 07 November 2019 04:06 PM
>> To: Michal Simek <michals@xxxxxxxxxx>; daniel.lezcano@xxxxxxxxxx;
>> tglx@xxxxxxxxxxxxx
>> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Jolly Shah <JOLLYS@xxxxxxxxxx>; linux-
>> kernel@xxxxxxxxxxxxxxx; Rajan Vaja <RAJANV@xxxxxxxxxx>
>> Subject: [PATCH] drivers: clocksource: Use ttc driver as platform driver
>>
>> Currently TTC driver is TIMER_OF_DECLARE type driver. Because of
>> that, TTC driver may be initialized before other clock drivers. If
>> TTC driver is dependent on that clock driver then initialization of
>> TTC driver will failed.
>>
>> So use TTC driver as platform driver instead of using
>> TIMER_OF_DECLARE.
>>
>> Signed-off-by: Rajan Vaja <rajan.vaja@xxxxxxxxxx>
>> ---
>> drivers/clocksource/timer-cadence-ttc.c | 26 ++++++++++++++++++--------
>> 1 file changed, 18 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/clocksource/timer-cadence-ttc.c b/drivers/clocksource/timer-
>> cadence-ttc.c
>> index 88fe2e9..38858e1 100644
>> --- a/drivers/clocksource/timer-cadence-ttc.c
>> +++ b/drivers/clocksource/timer-cadence-ttc.c
>> @@ -15,6 +15,8 @@
>> #include <linux/of_irq.h>
>> #include <linux/slab.h>
>> #include <linux/sched_clock.h>
>> +#include <linux/module.h>
>> +#include <linux/of_platform.h>
>>
>> /*
>> * This driver configures the 2 16/32-bit count-up timers as follows:
>> @@ -464,13 +466,7 @@ static int __init ttc_setup_clockevent(struct clk *clk,
>> return 0;
>> }
>>
>> -/**
>> - * ttc_timer_init - Initialize the timer
>> - *
>> - * Initializes the timer hardware and register the clock source and clock event
>> - * timers with Linux kernal timer framework
>> - */
>> -static int __init ttc_timer_init(struct device_node *timer)
>> +static int __init ttc_timer_probe(struct platform_device *pdev)
>> {
>> unsigned int irq;
>> void __iomem *timer_baseaddr;
>> @@ -478,6 +474,7 @@ static int __init ttc_timer_init(struct device_node *timer)
>> static int initialized;
>> int clksel, ret;
>> u32 timer_width = 16;
>> + struct device_node *timer = pdev->dev.of_node;
>>
>> if (initialized)
>> return 0;
>> @@ -532,4 +529,17 @@ static int __init ttc_timer_init(struct device_node *timer)
>> return 0;
>> }
>>
>> -TIMER_OF_DECLARE(ttc, "cdns,ttc", ttc_timer_init);
>> +static const struct of_device_id ttc_timer_of_match[] = {
>> + {.compatible = "cdns,ttc"},
>> + {},
>> +};
>> +
>> +MODULE_DEVICE_TABLE(of, ttc_timer_of_match);
>> +
>> +static struct platform_driver ttc_timer_driver = {
>> + .driver = {
>> + .name = "cdns_ttc_timer",
>> + .of_match_table = ttc_timer_of_match,
>> + },
>> +};
>> +builtin_platform_driver_probe(ttc_timer_driver, ttc_timer_probe);
>> --
>> 2.7.4
>


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