Messages in this thread | | | From | Rajan Vaja <> | Subject | RE: [PATCH] drivers: clocksource: Use ttc driver as platform driver | Date | Tue, 26 Nov 2019 11:35:42 +0000 |
| |
Request for review.
Thanks, Rajan
> -----Original Message----- > From: Rajan Vaja <rajan.vaja@xilinx.com> > Sent: 07 November 2019 04:01 PM > To: ichal.simek@xilinx.com; daniel.lezcano@linaro.org; tglx@linutronix.de > Cc: linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Rajan Vaja > <RAJANV@xilinx.com> > 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@xilinx.com> > --- > 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
| |