Message ID | 20191106091705.7416-4-joel@jms.id.au |
---|---|
State | Accepted, archived |
Headers | show |
Series | ast2600 timer support | expand |
On 06/11/2019 10:17, Joel Stanley wrote: > In preparation for supporting the ast2600, pass the shutdown and > interrupt functions to the common init callback. > > Signed-off-by: Joel Stanley <joel@jms.id.au> Reviewed-by: Cédric Le Goater <clg@kaod.org> > --- > drivers/clocksource/timer-fttmr010.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/clocksource/timer-fttmr010.c b/drivers/clocksource/timer-fttmr010.c > index c2d30eb9dc72..8a79025339d0 100644 > --- a/drivers/clocksource/timer-fttmr010.c > +++ b/drivers/clocksource/timer-fttmr010.c > @@ -244,7 +244,10 @@ static irqreturn_t fttmr010_timer_interrupt(int irq, void *dev_id) > return IRQ_HANDLED; > } > > -static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) > +static int __init fttmr010_common_init(struct device_node *np, > + bool is_aspeed, > + int (*timer_shutdown)(struct clock_event_device *), > + irq_handler_t handler) may be rename handler -> irq_handler. This is minor, just better for readability. C. > { > struct fttmr010 *fttmr010; > int irq; > @@ -345,7 +348,7 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) > fttmr010->tick_rate); > } > > - fttmr010->timer_shutdown = fttmr010_timer_shutdown; > + fttmr010->timer_shutdown = timer_shutdown; > > /* > * Setup clockevent timer (interrupt-driven) on timer 1. > @@ -354,7 +357,7 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) > writel(0, fttmr010->base + TIMER1_LOAD); > writel(0, fttmr010->base + TIMER1_MATCH1); > writel(0, fttmr010->base + TIMER1_MATCH2); > - ret = request_irq(irq, fttmr010_timer_interrupt, IRQF_TIMER, > + ret = request_irq(irq, handler, IRQF_TIMER, > "FTTMR010-TIMER1", &fttmr010->clkevt); > if (ret) { > pr_err("FTTMR010-TIMER1 no IRQ\n"); > @@ -403,12 +406,16 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) > > static __init int aspeed_timer_init(struct device_node *np) > { > - return fttmr010_common_init(np, true); > + return fttmr010_common_init(np, true, > + fttmr010_timer_shutdown, > + fttmr010_timer_interrupt); > } > > static __init int fttmr010_timer_init(struct device_node *np) > { > - return fttmr010_common_init(np, false); > + return fttmr010_common_init(np, false, > + fttmr010_timer_shutdown, > + fttmr010_timer_interrupt); > } > > TIMER_OF_DECLARE(fttmr010, "faraday,fttmr010", fttmr010_timer_init); >
diff --git a/drivers/clocksource/timer-fttmr010.c b/drivers/clocksource/timer-fttmr010.c index c2d30eb9dc72..8a79025339d0 100644 --- a/drivers/clocksource/timer-fttmr010.c +++ b/drivers/clocksource/timer-fttmr010.c @@ -244,7 +244,10 @@ static irqreturn_t fttmr010_timer_interrupt(int irq, void *dev_id) return IRQ_HANDLED; } -static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) +static int __init fttmr010_common_init(struct device_node *np, + bool is_aspeed, + int (*timer_shutdown)(struct clock_event_device *), + irq_handler_t handler) { struct fttmr010 *fttmr010; int irq; @@ -345,7 +348,7 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) fttmr010->tick_rate); } - fttmr010->timer_shutdown = fttmr010_timer_shutdown; + fttmr010->timer_shutdown = timer_shutdown; /* * Setup clockevent timer (interrupt-driven) on timer 1. @@ -354,7 +357,7 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) writel(0, fttmr010->base + TIMER1_LOAD); writel(0, fttmr010->base + TIMER1_MATCH1); writel(0, fttmr010->base + TIMER1_MATCH2); - ret = request_irq(irq, fttmr010_timer_interrupt, IRQF_TIMER, + ret = request_irq(irq, handler, IRQF_TIMER, "FTTMR010-TIMER1", &fttmr010->clkevt); if (ret) { pr_err("FTTMR010-TIMER1 no IRQ\n"); @@ -403,12 +406,16 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) static __init int aspeed_timer_init(struct device_node *np) { - return fttmr010_common_init(np, true); + return fttmr010_common_init(np, true, + fttmr010_timer_shutdown, + fttmr010_timer_interrupt); } static __init int fttmr010_timer_init(struct device_node *np) { - return fttmr010_common_init(np, false); + return fttmr010_common_init(np, false, + fttmr010_timer_shutdown, + fttmr010_timer_interrupt); } TIMER_OF_DECLARE(fttmr010, "faraday,fttmr010", fttmr010_timer_init);
In preparation for supporting the ast2600, pass the shutdown and interrupt functions to the common init callback. Signed-off-by: Joel Stanley <joel@jms.id.au> --- drivers/clocksource/timer-fttmr010.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)