Messages in this thread | | | Subject | Re: [PATCH] drivers: clocksource: Use ttc driver as platform driver | From | Michal Simek <> | Date | Tue, 17 Dec 2019 16:00:13 +0100 |
| |
On 05. 12. 19 17:24, Daniel Lezcano wrote: > On 26/11/2019 12:53, Rajan Vaja wrote: >> Request for review. > > Waiting from Michal Simek review ... > > >>> -----Original Message----- >>> From: Rajan Vaja <rajan.vaja@xilinx.com> >>> Sent: 07 November 2019 04:06 PM >>> To: Michal Simek <michals@xilinx.com>; daniel.lezcano@linaro.org; >>> tglx@linutronix.de >>> Cc: linux-arm-kernel@lists.infradead.org; Jolly Shah <JOLLYS@xilinx.com>; 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 >>
Looks good. I have also tested it on zc706.
Tested-by: Michal Simek <michal.simek@xilinx.com> Acked-by: Michal Simek <michal.simek@xilinx.com>
Note: headers are not sorted but they weren't even before this patch.
Thanks, Michal
| |