Commit eb9b9b56 authored by Magnus Damm's avatar Magnus Damm Committed by Paul Mundt

sh: boot word / mode pin support V2

Add mode pin support for the SuperH architecture V2.

With this patch applied the board code can add their
own function to export the cpu mode pin configuration.
In most cases this will be a constant bitmap, but
boards that allow reading this from a register can
instead read out the pin state from hardware.

The code warns if a pin is tested but no board specific
mode pin function has been provided.
Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 5582b064
...@@ -48,6 +48,7 @@ struct sh_machine_vector { ...@@ -48,6 +48,7 @@ struct sh_machine_vector {
void (*mv_ioport_unmap)(void __iomem *); void (*mv_ioport_unmap)(void __iomem *);
int (*mv_clk_init)(void); int (*mv_clk_init)(void);
int (*mv_mode_pins)(void);
}; };
extern struct sh_machine_vector sh_mv; extern struct sh_machine_vector sh_mv;
......
...@@ -94,6 +94,10 @@ extern struct pt_regs fake_swapper_regs; ...@@ -94,6 +94,10 @@ extern struct pt_regs fake_swapper_regs;
const char *get_cpu_subtype(struct sh_cpuinfo *c); const char *get_cpu_subtype(struct sh_cpuinfo *c);
extern const struct seq_operations cpuinfo_op; extern const struct seq_operations cpuinfo_op;
/* processor boot mode configuration */
int generic_mode_pins(void);
int test_mode_pin(int pin);
#ifdef CONFIG_VSYSCALL #ifdef CONFIG_VSYSCALL
int vsyscall_init(void); int vsyscall_init(void);
#else #else
......
...@@ -129,6 +129,7 @@ void __init sh_mv_setup(void) ...@@ -129,6 +129,7 @@ void __init sh_mv_setup(void)
mv_set(ioport_map); mv_set(ioport_map);
mv_set(ioport_unmap); mv_set(ioport_unmap);
mv_set(irq_demux); mv_set(irq_demux);
mv_set(mode_pins);
if (!sh_mv.mv_nr_irqs) if (!sh_mv.mv_nr_irqs)
sh_mv.mv_nr_irqs = NR_IRQS; sh_mv.mv_nr_irqs = NR_IRQS;
......
...@@ -420,6 +420,18 @@ void __init setup_arch(char **cmdline_p) ...@@ -420,6 +420,18 @@ void __init setup_arch(char **cmdline_p)
#endif #endif
} }
/* processor boot mode configuration */
int generic_mode_pins(void)
{
pr_warning("generic_mode_pins(): missing mode pin configuration\n");
return 0;
}
int test_mode_pin(int pin)
{
return sh_mv.mv_mode_pins() & (1 << pin);
}
static const char *cpu_name[] = { static const char *cpu_name[] = {
[CPU_SH7201] = "SH7201", [CPU_SH7201] = "SH7201",
[CPU_SH7203] = "SH7203", [CPU_SH7263] = "SH7263", [CPU_SH7203] = "SH7203", [CPU_SH7263] = "SH7263",
......
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