mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-07 23:25:45 +00:00
sparc32: introduce sparc_irq_config
sparc_irq_config is used to hold the platform specific irq setup. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a2a211cb55
commit
bbdc2661ea
7 changed files with 25 additions and 18 deletions
|
@ -1,5 +1,16 @@
|
||||||
#include <asm/btfixup.h>
|
#include <asm/btfixup.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Platform specific irq configuration
|
||||||
|
* The individual platforms assign their platform
|
||||||
|
* specifics in their init functions.
|
||||||
|
*/
|
||||||
|
struct sparc_irq_config {
|
||||||
|
void (*init_timers)(irq_handler_t);
|
||||||
|
};
|
||||||
|
extern struct sparc_irq_config sparc_irq_config;
|
||||||
|
|
||||||
|
|
||||||
/* Dave Redman (djhr@tadpole.co.uk)
|
/* Dave Redman (djhr@tadpole.co.uk)
|
||||||
* changed these to function pointers.. it saves cycles and will allow
|
* changed these to function pointers.. it saves cycles and will allow
|
||||||
* the irq dependencies to be split into different files at a later date
|
* the irq dependencies to be split into different files at a later date
|
||||||
|
@ -45,12 +56,6 @@ static inline void load_profile_irq(int cpu, int limit)
|
||||||
BTFIXUP_CALL(load_profile_irq)(cpu, limit);
|
BTFIXUP_CALL(load_profile_irq)(cpu, limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void (*sparc_init_timers)(irq_handler_t lvl10_irq);
|
|
||||||
|
|
||||||
extern void claim_ticker14(irq_handler_t irq_handler,
|
|
||||||
int irq,
|
|
||||||
unsigned int timeout);
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
BTFIXUPDEF_CALL(void, set_cpu_int, int, int)
|
BTFIXUPDEF_CALL(void, set_cpu_int, int, int)
|
||||||
BTFIXUPDEF_CALL(void, clear_cpu_int, int, int)
|
BTFIXUPDEF_CALL(void, clear_cpu_int, int, int)
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#define SMP_NOP3
|
#define SMP_NOP3
|
||||||
#endif /* SMP */
|
#endif /* SMP */
|
||||||
|
|
||||||
|
/* platform specific irq setup */
|
||||||
|
struct sparc_irq_config sparc_irq_config;
|
||||||
|
|
||||||
unsigned long arch_local_irq_save(void)
|
unsigned long arch_local_irq_save(void)
|
||||||
{
|
{
|
||||||
unsigned long retval;
|
unsigned long retval;
|
||||||
|
@ -100,14 +103,7 @@ EXPORT_SYMBOL(arch_local_irq_restore);
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void irq_panic(void)
|
|
||||||
{
|
|
||||||
prom_printf("machine: %s doesn't have irq handlers defined!\n",
|
|
||||||
&cputypval[0]);
|
|
||||||
prom_halt();
|
|
||||||
}
|
|
||||||
|
|
||||||
void (*sparc_init_timers)(irq_handler_t) = (void (*)(irq_handler_t))irq_panic;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dave Redman (djhr@tadpole.co.uk)
|
* Dave Redman (djhr@tadpole.co.uk)
|
||||||
|
|
|
@ -347,7 +347,7 @@ void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu)
|
||||||
|
|
||||||
void __init leon_init_IRQ(void)
|
void __init leon_init_IRQ(void)
|
||||||
{
|
{
|
||||||
sparc_init_timers = leon_init_timers;
|
sparc_irq_config.init_timers = leon_init_timers;
|
||||||
|
|
||||||
BTFIXUPSET_CALL(enable_irq, leon_enable_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(enable_irq, leon_enable_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(disable_irq, leon_disable_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(disable_irq, leon_disable_irq, BTFIXUPCALL_NORM);
|
||||||
|
|
|
@ -221,7 +221,9 @@ void __init sun4c_init_IRQ(void)
|
||||||
BTFIXUPSET_CALL(disable_pil_irq, sun4c_disable_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(disable_pil_irq, sun4c_disable_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(clear_clock_irq, sun4c_clear_clock_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(clear_clock_irq, sun4c_clear_clock_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(load_profile_irq, sun4c_load_profile_irq, BTFIXUPCALL_NOP);
|
BTFIXUPSET_CALL(load_profile_irq, sun4c_load_profile_irq, BTFIXUPCALL_NOP);
|
||||||
sparc_init_timers = sun4c_init_timers;
|
|
||||||
|
sparc_irq_config.init_timers = sun4c_init_timers;
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
BTFIXUPSET_CALL(set_cpu_int, sun4c_nop, BTFIXUPCALL_NOP);
|
BTFIXUPSET_CALL(set_cpu_int, sun4c_nop, BTFIXUPCALL_NOP);
|
||||||
BTFIXUPSET_CALL(clear_cpu_int, sun4c_nop, BTFIXUPCALL_NOP);
|
BTFIXUPSET_CALL(clear_cpu_int, sun4c_nop, BTFIXUPCALL_NOP);
|
||||||
|
|
|
@ -557,7 +557,9 @@ void __init sun4d_init_IRQ(void)
|
||||||
BTFIXUPSET_CALL(disable_irq, sun4d_disable_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(disable_irq, sun4d_disable_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(clear_clock_irq, sun4d_clear_clock_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(clear_clock_irq, sun4d_clear_clock_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(load_profile_irq, sun4d_load_profile_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(load_profile_irq, sun4d_load_profile_irq, BTFIXUPCALL_NORM);
|
||||||
sparc_init_timers = sun4d_init_timers;
|
|
||||||
|
sparc_irq_config.init_timers = sun4d_init_timers;
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
BTFIXUPSET_CALL(set_cpu_int, sun4d_set_cpu_int, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(set_cpu_int, sun4d_set_cpu_int, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(clear_cpu_int, sun4d_clear_ipi, BTFIXUPCALL_NOP);
|
BTFIXUPSET_CALL(clear_cpu_int, sun4d_clear_ipi, BTFIXUPCALL_NOP);
|
||||||
|
|
|
@ -470,7 +470,9 @@ void __init sun4m_init_IRQ(void)
|
||||||
BTFIXUPSET_CALL(disable_pil_irq, sun4m_disable_pil_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(disable_pil_irq, sun4m_disable_pil_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(clear_clock_irq, sun4m_clear_clock_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(clear_clock_irq, sun4m_clear_clock_irq, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(load_profile_irq, sun4m_load_profile_irq, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(load_profile_irq, sun4m_load_profile_irq, BTFIXUPCALL_NORM);
|
||||||
sparc_init_timers = sun4m_init_timers;
|
|
||||||
|
sparc_irq_config.init_timers = sun4m_init_timers;
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
BTFIXUPSET_CALL(set_cpu_int, sun4m_send_ipi, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(set_cpu_int, sun4m_send_ipi, BTFIXUPCALL_NORM);
|
||||||
BTFIXUPSET_CALL(clear_cpu_int, sun4m_clear_ipi, BTFIXUPCALL_NORM);
|
BTFIXUPSET_CALL(clear_cpu_int, sun4m_clear_ipi, BTFIXUPCALL_NORM);
|
||||||
|
|
|
@ -219,7 +219,7 @@ static void __init sbus_time_init(void)
|
||||||
|
|
||||||
btfixup();
|
btfixup();
|
||||||
|
|
||||||
sparc_init_timers(timer_interrupt);
|
sparc_irq_config.init_timers(timer_interrupt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init time_init(void)
|
void __init time_init(void)
|
||||||
|
|
Loading…
Add table
Reference in a new issue