Commit 63dc02bd authored by Paul Mundt's avatar Paul Mundt

sh: Kill off machvec IRQ hinting.

Everything is using sparseirq these days, so we have no need to
arbitrarily size nr_irqs ahead of time. The legacy IRQ pre-allocation
likewise has no meaning for us, so that's killed off too. We now depend
on nr_irqs expansion by the generic hardirq layer instead.

It's also worth noting that the majority of boards had completely bogus
values for their nr_irqs relative to their CPU and configurations, so
this ends up correcting behaviour for quite a few platforms.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 7f47c718
...@@ -74,6 +74,5 @@ device_initcall(init_edosk7705_devices); ...@@ -74,6 +74,5 @@ device_initcall(init_edosk7705_devices);
*/ */
static struct sh_machine_vector mv_edosk7705 __initmv = { static struct sh_machine_vector mv_edosk7705 __initmv = {
.mv_name = "EDOSK7705", .mv_name = "EDOSK7705",
.mv_nr_irqs = 80,
.mv_init_irq = sh_edosk7705_init_irq, .mv_init_irq = sh_edosk7705_init_irq,
}; };
...@@ -188,5 +188,4 @@ device_initcall(init_edosk7760_devices); ...@@ -188,5 +188,4 @@ device_initcall(init_edosk7760_devices);
*/ */
struct sh_machine_vector mv_edosk7760 __initmv = { struct sh_machine_vector mv_edosk7760 __initmv = {
.mv_name = "EDOSK7760", .mv_name = "EDOSK7760",
.mv_nr_irqs = 128,
}; };
...@@ -141,6 +141,5 @@ static void __init init_polaris_irq(void) ...@@ -141,6 +141,5 @@ static void __init init_polaris_irq(void)
static struct sh_machine_vector mv_polaris __initmv = { static struct sh_machine_vector mv_polaris __initmv = {
.mv_name = "Polaris", .mv_name = "Polaris",
.mv_nr_irqs = 61,
.mv_init_irq = init_polaris_irq, .mv_init_irq = init_polaris_irq,
}; };
...@@ -71,6 +71,5 @@ static void __init init_snapgear_IRQ(void) ...@@ -71,6 +71,5 @@ static void __init init_snapgear_IRQ(void)
*/ */
static struct sh_machine_vector mv_snapgear __initmv = { static struct sh_machine_vector mv_snapgear __initmv = {
.mv_name = "SnapGear SecureEdge5410", .mv_name = "SnapGear SecureEdge5410",
.mv_nr_irqs = 72,
.mv_init_irq = init_snapgear_IRQ, .mv_init_irq = init_snapgear_IRQ,
}; };
...@@ -181,7 +181,6 @@ extern void init_cayman_irq(void); ...@@ -181,7 +181,6 @@ extern void init_cayman_irq(void);
static struct sh_machine_vector mv_cayman __initmv = { static struct sh_machine_vector mv_cayman __initmv = {
.mv_name = "Hitachi Cayman", .mv_name = "Hitachi Cayman",
.mv_nr_irqs = 64,
.mv_ioport_map = cayman_ioport_map, .mv_ioport_map = cayman_ioport_map,
.mv_init_irq = init_cayman_irq, .mv_init_irq = init_cayman_irq,
}; };
...@@ -169,8 +169,6 @@ device_initcall(hp6xx_devices_setup); ...@@ -169,8 +169,6 @@ device_initcall(hp6xx_devices_setup);
static struct sh_machine_vector mv_hp6xx __initmv = { static struct sh_machine_vector mv_hp6xx __initmv = {
.mv_name = "hp6xx", .mv_name = "hp6xx",
.mv_setup = hp6xx_setup, .mv_setup = hp6xx_setup,
/* IRQ's : CPU(64) + CCHIP(16) + FREE_TO_USE(6) */
.mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM + 6,
/* Enable IRQ0 -> IRQ3 in IRQ_MODE */ /* Enable IRQ0 -> IRQ3 in IRQ_MODE */
.mv_init_irq = hp6xx_init_irq, .mv_init_irq = hp6xx_init_irq,
}; };
...@@ -79,6 +79,5 @@ device_initcall(lboxre2_devices_setup); ...@@ -79,6 +79,5 @@ device_initcall(lboxre2_devices_setup);
*/ */
static struct sh_machine_vector mv_lboxre2 __initmv = { static struct sh_machine_vector mv_lboxre2 __initmv = {
.mv_name = "L-BOX RE2", .mv_name = "L-BOX RE2",
.mv_nr_irqs = 72,
.mv_init_irq = init_lboxre2_IRQ, .mv_init_irq = init_lboxre2_IRQ,
}; };
...@@ -194,7 +194,6 @@ device_initcall(microdev_devices_setup); ...@@ -194,7 +194,6 @@ device_initcall(microdev_devices_setup);
*/ */
static struct sh_machine_vector mv_sh4202_microdev __initmv = { static struct sh_machine_vector mv_sh4202_microdev __initmv = {
.mv_name = "SH4-202 MicroDev", .mv_name = "SH4-202 MicroDev",
.mv_nr_irqs = 72,
.mv_ioport_map = microdev_ioport_map, .mv_ioport_map = microdev_ioport_map,
.mv_init_irq = init_microdev_irq, .mv_init_irq = init_microdev_irq,
}; };
...@@ -94,7 +94,6 @@ static void __init sdk7780_setup(char **cmdline_p) ...@@ -94,7 +94,6 @@ static void __init sdk7780_setup(char **cmdline_p)
static struct sh_machine_vector mv_se7780 __initmv = { static struct sh_machine_vector mv_se7780 __initmv = {
.mv_name = "Renesas SDK7780-R3" , .mv_name = "Renesas SDK7780-R3" ,
.mv_setup = sdk7780_setup, .mv_setup = sdk7780_setup,
.mv_nr_irqs = 111,
.mv_init_irq = init_sdk7780_IRQ, .mv_init_irq = init_sdk7780_IRQ,
}; };
...@@ -90,7 +90,6 @@ static int se7206_mode_pins(void) ...@@ -90,7 +90,6 @@ static int se7206_mode_pins(void)
static struct sh_machine_vector mv_se __initmv = { static struct sh_machine_vector mv_se __initmv = {
.mv_name = "SolutionEngine", .mv_name = "SolutionEngine",
.mv_nr_irqs = 256,
.mv_init_irq = init_se7206_IRQ, .mv_init_irq = init_se7206_IRQ,
.mv_mode_pins = se7206_mode_pins, .mv_mode_pins = se7206_mode_pins,
}; };
...@@ -184,16 +184,5 @@ device_initcall(se_devices_setup); ...@@ -184,16 +184,5 @@ device_initcall(se_devices_setup);
static struct sh_machine_vector mv_se __initmv = { static struct sh_machine_vector mv_se __initmv = {
.mv_name = "SolutionEngine", .mv_name = "SolutionEngine",
.mv_setup = smsc_setup, .mv_setup = smsc_setup,
#if defined(CONFIG_CPU_SH4)
.mv_nr_irqs = 48,
#elif defined(CONFIG_CPU_SUBTYPE_SH7708)
.mv_nr_irqs = 32,
#elif defined(CONFIG_CPU_SUBTYPE_SH7709)
.mv_nr_irqs = 61,
#elif defined(CONFIG_CPU_SUBTYPE_SH7705)
.mv_nr_irqs = 86,
#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
.mv_nr_irqs = 104,
#endif
.mv_init_irq = init_se_IRQ, .mv_init_irq = init_se_IRQ,
}; };
...@@ -92,6 +92,5 @@ static void __init se7721_setup(char **cmdline_p) ...@@ -92,6 +92,5 @@ static void __init se7721_setup(char **cmdline_p)
struct sh_machine_vector mv_se7721 __initmv = { struct sh_machine_vector mv_se7721 __initmv = {
.mv_name = "Solution Engine 7721", .mv_name = "Solution Engine 7721",
.mv_setup = se7721_setup, .mv_setup = se7721_setup,
.mv_nr_irqs = 109,
.mv_init_irq = init_se7721_IRQ, .mv_init_irq = init_se7721_IRQ,
}; };
...@@ -929,5 +929,4 @@ device_initcall(devices_setup); ...@@ -929,5 +929,4 @@ device_initcall(devices_setup);
static struct sh_machine_vector mv_ms7724se __initmv = { static struct sh_machine_vector mv_ms7724se __initmv = {
.mv_name = "ms7724se", .mv_name = "ms7724se",
.mv_init_irq = init_se7724_IRQ, .mv_init_irq = init_se7724_IRQ,
.mv_nr_irqs = SE7724_FPGA_IRQ_BASE + SE7724_FPGA_IRQ_NR,
}; };
...@@ -55,6 +55,5 @@ device_initcall(se7751_devices_setup); ...@@ -55,6 +55,5 @@ device_initcall(se7751_devices_setup);
*/ */
static struct sh_machine_vector mv_7751se __initmv = { static struct sh_machine_vector mv_7751se __initmv = {
.mv_name = "7751 SolutionEngine", .mv_name = "7751 SolutionEngine",
.mv_nr_irqs = 72,
.mv_init_irq = init_7751se_IRQ, .mv_init_irq = init_7751se_IRQ,
}; };
...@@ -110,6 +110,5 @@ static void __init se7780_setup(char **cmdline_p) ...@@ -110,6 +110,5 @@ static void __init se7780_setup(char **cmdline_p)
static struct sh_machine_vector mv_se7780 __initmv = { static struct sh_machine_vector mv_se7780 __initmv = {
.mv_name = "Solution Engine 7780" , .mv_name = "Solution Engine 7780" ,
.mv_setup = se7780_setup , .mv_setup = se7780_setup ,
.mv_nr_irqs = 111 ,
.mv_init_irq = init_se7780_IRQ, .mv_init_irq = init_se7780_IRQ,
}; };
...@@ -22,6 +22,5 @@ static int se7619_mode_pins(void) ...@@ -22,6 +22,5 @@ static int se7619_mode_pins(void)
static struct sh_machine_vector mv_se __initmv = { static struct sh_machine_vector mv_se __initmv = {
.mv_name = "SolutionEngine", .mv_name = "SolutionEngine",
.mv_nr_irqs = 108,
.mv_mode_pins = se7619_mode_pins, .mv_mode_pins = se7619_mode_pins,
}; };
...@@ -101,6 +101,5 @@ device_initcall(sh03_devices_setup); ...@@ -101,6 +101,5 @@ device_initcall(sh03_devices_setup);
static struct sh_machine_vector mv_sh03 __initmv = { static struct sh_machine_vector mv_sh03 __initmv = {
.mv_name = "Interface (CTP/PCI-SH03)", .mv_name = "Interface (CTP/PCI-SH03)",
.mv_setup = sh03_setup, .mv_setup = sh03_setup,
.mv_nr_irqs = 48,
.mv_init_irq = init_sh03_IRQ, .mv_init_irq = init_sh03_IRQ,
}; };
...@@ -214,6 +214,5 @@ static void __init sh7763rdp_setup(char **cmdline_p) ...@@ -214,6 +214,5 @@ static void __init sh7763rdp_setup(char **cmdline_p)
static struct sh_machine_vector mv_sh7763rdp __initmv = { static struct sh_machine_vector mv_sh7763rdp __initmv = {
.mv_name = "sh7763drp", .mv_name = "sh7763drp",
.mv_setup = sh7763rdp_setup, .mv_setup = sh7763rdp_setup,
.mv_nr_irqs = 112,
.mv_init_irq = init_sh7763rdp_IRQ, .mv_init_irq = init_sh7763rdp_IRQ,
}; };
...@@ -5,12 +5,15 @@ ...@@ -5,12 +5,15 @@
#include <asm/machvec.h> #include <asm/machvec.h>
/* /*
* A sane default based on a reasonable vector table size, platforms are * Only legacy non-sparseirq platforms have to set a reasonably sane
* advised to cap this at the hard limit that they're interested in * value here. sparseirq platforms allocate their irq_descs on the fly,
* through the machvec. * so will expand automatically based on the number of registered IRQs.
*/ */
#define NR_IRQS 512 #ifdef CONFIG_SPARSE_IRQ
#define NR_IRQS_LEGACY 8 /* Legacy external IRQ0-7 */ # define NR_IRQS 8
#else
# define NR_IRQS 512
#endif
/* /*
* This is a special IRQ number for indicating that no IRQ has been * This is a special IRQ number for indicating that no IRQ has been
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
struct sh_machine_vector { struct sh_machine_vector {
void (*mv_setup)(char **cmdline_p); void (*mv_setup)(char **cmdline_p);
const char *mv_name; const char *mv_name;
int mv_nr_irqs;
int (*mv_irq_demux)(int irq); int (*mv_irq_demux)(int irq);
void (*mv_init_irq)(void); void (*mv_init_irq)(void);
......
...@@ -234,8 +234,10 @@ void __init init_IRQ(void) ...@@ -234,8 +234,10 @@ void __init init_IRQ(void)
#ifdef CONFIG_SPARSE_IRQ #ifdef CONFIG_SPARSE_IRQ
int __init arch_probe_nr_irqs(void) int __init arch_probe_nr_irqs(void)
{ {
nr_irqs = sh_mv.mv_nr_irqs; /*
return NR_IRQS_LEGACY; * No pre-allocated IRQs.
*/
return 0;
} }
#endif #endif
......
...@@ -121,7 +121,4 @@ void __init sh_mv_setup(void) ...@@ -121,7 +121,4 @@ void __init sh_mv_setup(void)
mv_set(irq_demux); mv_set(irq_demux);
mv_set(mode_pins); mv_set(mode_pins);
mv_set(mem_init); mv_set(mem_init);
if (!sh_mv.mv_nr_irqs)
sh_mv.mv_nr_irqs = NR_IRQS;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment