diff options
| author | afzal mohammed <afzal.mohd.ma@gmail.com> | 2020-03-01 06:56:55 +0530 | 
|---|---|---|
| committer | Greg Ungerer <gerg@linux-m68k.org> | 2020-03-23 12:01:19 +1000 | 
| commit | ba000760eb0f182e6ef04faca70bb9737a9674b4 (patch) | |
| tree | 0e0aa627224a6b37d4204ee2e8ad092d48ede5b1 /arch/m68k | |
| parent | 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e (diff) | |
| download | linux-ba000760eb0f182e6ef04faca70bb9737a9674b4.tar.bz2 | |
m68k: Replace setup_irq() by request_irq()
request_irq() is preferred over setup_irq(). Invocations of setup_irq()
occur after memory allocators are ready.
Per tglx[1], setup_irq() existed in olden days when allocators were not
ready by the time early interrupts were initialized.
Hence replace setup_irq() by request_irq().
[1] https://lkml.kernel.org/r/alpine.DEB.2.20.1710191609480.1971@nanos
Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Tested-by: Greg Ungerer <gerg@linux-m68k.org>
Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
Diffstat (limited to 'arch/m68k')
| -rw-r--r-- | arch/m68k/68000/timers.c | 16 | ||||
| -rw-r--r-- | arch/m68k/coldfire/pit.c | 16 | ||||
| -rw-r--r-- | arch/m68k/coldfire/sltimers.c | 29 | ||||
| -rw-r--r-- | arch/m68k/coldfire/timers.c | 31 | 
4 files changed, 44 insertions, 48 deletions
diff --git a/arch/m68k/68000/timers.c b/arch/m68k/68000/timers.c index 71ddb4c98726..1c8e8a83c325 100644 --- a/arch/m68k/68000/timers.c +++ b/arch/m68k/68000/timers.c @@ -68,14 +68,6 @@ static irqreturn_t hw_tick(int irq, void *dummy)  /***************************************************************************/ -static struct irqaction m68328_timer_irq = { -	.name	 = "timer", -	.flags	 = IRQF_TIMER, -	.handler = hw_tick, -}; - -/***************************************************************************/ -  static u64 m68328_read_clk(struct clocksource *cs)  {  	unsigned long flags; @@ -102,11 +94,17 @@ static struct clocksource m68328_clk = {  void hw_timer_init(irq_handler_t handler)  { +	int ret; +  	/* disable timer 1 */  	TCTL = 0;  	/* set ISR */ -	setup_irq(TMR_IRQ_NUM, &m68328_timer_irq); +	ret = request_irq(TMR_IRQ_NUM, hw_tick, IRQF_TIMER, "timer", NULL); +	if (ret) { +		pr_err("Failed to request irq %d (timer): %pe\n", TMR_IRQ_NUM, +		       ERR_PTR(ret)); +	}  	/* Restart mode, Enable int, Set clock source */  	TCTL = TCTL_OM | TCTL_IRQEN | CLOCK_SOURCE; diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c index eb6f16b0e2e6..fd1d9c915daa 100644 --- a/arch/m68k/coldfire/pit.c +++ b/arch/m68k/coldfire/pit.c @@ -111,14 +111,6 @@ static irqreturn_t pit_tick(int irq, void *dummy)  /***************************************************************************/ -static struct irqaction pit_irq = { -	.name	 = "timer", -	.flags	 = IRQF_TIMER, -	.handler = pit_tick, -}; - -/***************************************************************************/ -  static u64 pit_read_clk(struct clocksource *cs)  {  	unsigned long flags; @@ -146,6 +138,8 @@ static struct clocksource pit_clk = {  void hw_timer_init(irq_handler_t handler)  { +	int ret; +  	cf_pit_clockevent.cpumask = cpumask_of(smp_processor_id());  	cf_pit_clockevent.mult = div_sc(FREQ, NSEC_PER_SEC, 32);  	cf_pit_clockevent.max_delta_ns = @@ -156,7 +150,11 @@ void hw_timer_init(irq_handler_t handler)  	cf_pit_clockevent.min_delta_ticks = 0x3f;  	clockevents_register_device(&cf_pit_clockevent); -	setup_irq(MCF_IRQ_PIT1, &pit_irq); +	ret = request_irq(MCF_IRQ_PIT1, pit_tick, IRQF_TIMER, "timer", NULL); +	if (ret) { +		pr_err("Failed to request irq %d (timer): %pe\n", MCF_IRQ_PIT1, +		       ERR_PTR(ret)); +	}  	clocksource_register_hz(&pit_clk, FREQ);  } diff --git a/arch/m68k/coldfire/sltimers.c b/arch/m68k/coldfire/sltimers.c index 1b11e7bacab3..5ab81c9c552d 100644 --- a/arch/m68k/coldfire/sltimers.c +++ b/arch/m68k/coldfire/sltimers.c @@ -50,18 +50,19 @@ irqreturn_t mcfslt_profile_tick(int irq, void *dummy)  	return IRQ_HANDLED;  } -static struct irqaction mcfslt_profile_irq = { -	.name	 = "profile timer", -	.flags	 = IRQF_TIMER, -	.handler = mcfslt_profile_tick, -}; -  void mcfslt_profile_init(void)  { +	int ret; +  	printk(KERN_INFO "PROFILE: lodging TIMER 1 @ %dHz as profile timer\n",  	       PROFILEHZ); -	setup_irq(MCF_IRQ_PROFILER, &mcfslt_profile_irq); +	ret = request_irq(MCF_IRQ_PROFILER, mcfslt_profile_tick, IRQF_TIMER, +			  "profile timer", NULL); +	if (ret) { +		pr_err("Failed to request irq %d (profile timer): %pe\n", +		       MCF_IRQ_PROFILER, ERR_PTR(ret)); +	}  	/* Set up TIMER 2 as high speed profile clock */  	__raw_writel(MCF_BUSCLK / PROFILEHZ - 1, PA(MCFSLT_STCNT)); @@ -92,12 +93,6 @@ static irqreturn_t mcfslt_tick(int irq, void *dummy)  	return timer_interrupt(irq, dummy);  } -static struct irqaction mcfslt_timer_irq = { -	.name	 = "timer", -	.flags	 = IRQF_TIMER, -	.handler = mcfslt_tick, -}; -  static u64 mcfslt_read_clk(struct clocksource *cs)  {  	unsigned long flags; @@ -126,6 +121,8 @@ static struct clocksource mcfslt_clk = {  void hw_timer_init(irq_handler_t handler)  { +	int r; +  	mcfslt_cycles_per_jiffy = MCF_BUSCLK / HZ;  	/*  	 *	The coldfire slice timer (SLT) runs from STCNT to 0 included, @@ -140,7 +137,11 @@ void hw_timer_init(irq_handler_t handler)  	mcfslt_cnt = mcfslt_cycles_per_jiffy;  	timer_interrupt = handler; -	setup_irq(MCF_IRQ_TIMER, &mcfslt_timer_irq); +	r = request_irq(MCF_IRQ_TIMER, mcfslt_tick, IRQF_TIMER, "timer", NULL); +	if (r) { +		pr_err("Failed to request irq %d (timer): %pe\n", MCF_IRQ_TIMER, +		       ERR_PTR(r)); +	}  	clocksource_register_hz(&mcfslt_clk, MCF_BUSCLK); diff --git a/arch/m68k/coldfire/timers.c b/arch/m68k/coldfire/timers.c index 227aa5d13709..b8301fddf901 100644 --- a/arch/m68k/coldfire/timers.c +++ b/arch/m68k/coldfire/timers.c @@ -82,14 +82,6 @@ static irqreturn_t mcftmr_tick(int irq, void *dummy)  /***************************************************************************/ -static struct irqaction mcftmr_timer_irq = { -	.name	 = "timer", -	.flags	 = IRQF_TIMER, -	.handler = mcftmr_tick, -}; - -/***************************************************************************/ -  static u64 mcftmr_read_clk(struct clocksource *cs)  {  	unsigned long flags; @@ -118,6 +110,8 @@ static struct clocksource mcftmr_clk = {  void hw_timer_init(irq_handler_t handler)  { +	int r; +  	__raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR));  	mcftmr_cycles_per_jiffy = FREQ / HZ;  	/* @@ -134,7 +128,11 @@ void hw_timer_init(irq_handler_t handler)  	timer_interrupt = handler;  	init_timer_irq(); -	setup_irq(MCF_IRQ_TIMER, &mcftmr_timer_irq); +	r = request_irq(MCF_IRQ_TIMER, mcftmr_tick, IRQF_TIMER, "timer", NULL); +	if (r) { +		pr_err("Failed to request irq %d (timer): %pe\n", MCF_IRQ_TIMER, +		       ERR_PTR(r)); +	}  #ifdef CONFIG_HIGHPROFILE  	coldfire_profile_init(); @@ -170,14 +168,10 @@ irqreturn_t coldfire_profile_tick(int irq, void *dummy)  /***************************************************************************/ -static struct irqaction coldfire_profile_irq = { -	.name	 = "profile timer", -	.flags	 = IRQF_TIMER, -	.handler = coldfire_profile_tick, -}; -  void coldfire_profile_init(void)  { +	int ret; +  	printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n",  	       PROFILEHZ); @@ -188,7 +182,12 @@ void coldfire_profile_init(void)  	__raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 |  		MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR)); -	setup_irq(MCF_IRQ_PROFILER, &coldfire_profile_irq); +	ret = request_irq(MCF_IRQ_PROFILER, coldfire_profile_tick, IRQF_TIMER, +			  "profile timer", NULL); +	if (ret) { +		pr_err("Failed to request irq %d (profile timer): %pe\n", +		       MCF_IRQ_PROFILER, ERR_PTR(ret)); +	}  }  /***************************************************************************/  |