Skip to content

Commit

Permalink
sh: boot word / mode pin support V2
Browse files Browse the repository at this point in the history
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: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Jun 1, 2009
1 parent 5582b06 commit eb9b9b5
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/sh/include/asm/machvec.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ struct sh_machine_vector {
void (*mv_ioport_unmap)(void __iomem *);

int (*mv_clk_init)(void);
int (*mv_mode_pins)(void);
};

extern struct sh_machine_vector sh_mv;
Expand Down
4 changes: 4 additions & 0 deletions arch/sh/include/asm/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ extern struct pt_regs fake_swapper_regs;
const char *get_cpu_subtype(struct sh_cpuinfo *c);
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
int vsyscall_init(void);
#else
Expand Down
1 change: 1 addition & 0 deletions arch/sh/kernel/machvec.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ void __init sh_mv_setup(void)
mv_set(ioport_map);
mv_set(ioport_unmap);
mv_set(irq_demux);
mv_set(mode_pins);

if (!sh_mv.mv_nr_irqs)
sh_mv.mv_nr_irqs = NR_IRQS;
Expand Down
12 changes: 12 additions & 0 deletions arch/sh/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,18 @@ void __init setup_arch(char **cmdline_p)
#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[] = {
[CPU_SH7201] = "SH7201",
[CPU_SH7203] = "SH7203", [CPU_SH7263] = "SH7263",
Expand Down

0 comments on commit eb9b9b5

Please sign in to comment.