diff options
Diffstat (limited to 'arch/sh/boards/se/7343/setup.c')
-rw-r--r-- | arch/sh/boards/se/7343/setup.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/arch/sh/boards/se/7343/setup.c b/arch/sh/boards/se/7343/setup.c new file mode 100644 index 000000000000..787322291fb3 --- /dev/null +++ b/arch/sh/boards/se/7343/setup.c | |||
@@ -0,0 +1,84 @@ | |||
1 | #include <linux/config.h> | ||
2 | #include <linux/init.h> | ||
3 | #include <linux/platform_device.h> | ||
4 | #include <asm/machvec.h> | ||
5 | #include <asm/mach/se7343.h> | ||
6 | #include <asm/irq.h> | ||
7 | |||
8 | void heartbeat_7343se(void); | ||
9 | void init_7343se_IRQ(void); | ||
10 | |||
11 | static struct resource smc91x_resources[] = { | ||
12 | [0] = { | ||
13 | .start = 0x10000000, | ||
14 | .end = 0x1000000F, | ||
15 | .flags = IORESOURCE_MEM, | ||
16 | }, | ||
17 | [1] = { | ||
18 | /* | ||
19 | * shared with other devices via externel | ||
20 | * interrupt controller in FPGA... | ||
21 | */ | ||
22 | .start = EXT_IRQ2, | ||
23 | .end = EXT_IRQ2, | ||
24 | .flags = IORESOURCE_IRQ, | ||
25 | }, | ||
26 | }; | ||
27 | |||
28 | static struct platform_device smc91x_device = { | ||
29 | .name = "smc91x", | ||
30 | .id = 0, | ||
31 | .num_resources = ARRAY_SIZE(smc91x_resources), | ||
32 | .resource = smc91x_resources, | ||
33 | }; | ||
34 | |||
35 | static struct platform_device *smc91x_platform_devices[] __initdata = { | ||
36 | &smc91x_device, | ||
37 | }; | ||
38 | |||
39 | static int __init sh7343se_devices_setup(void) | ||
40 | { | ||
41 | return platform_add_devices(smc91x_platform_devices, | ||
42 | ARRAY_SIZE(smc91x_platform_devices)); | ||
43 | } | ||
44 | |||
45 | static void __init sh7343se_setup(char **cmdline_p) | ||
46 | { | ||
47 | device_initcall(sh7343se_devices_setup); | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * The Machine Vector | ||
52 | */ | ||
53 | struct sh_machine_vector mv_7343se __initmv = { | ||
54 | .mv_name = "SolutionEngine 7343", | ||
55 | .mv_setup = sh7343se_setup, | ||
56 | .mv_nr_irqs = 108, | ||
57 | .mv_inb = sh7343se_inb, | ||
58 | .mv_inw = sh7343se_inw, | ||
59 | .mv_inl = sh7343se_inl, | ||
60 | .mv_outb = sh7343se_outb, | ||
61 | .mv_outw = sh7343se_outw, | ||
62 | .mv_outl = sh7343se_outl, | ||
63 | |||
64 | .mv_inb_p = sh7343se_inb_p, | ||
65 | .mv_inw_p = sh7343se_inw, | ||
66 | .mv_inl_p = sh7343se_inl, | ||
67 | .mv_outb_p = sh7343se_outb_p, | ||
68 | .mv_outw_p = sh7343se_outw, | ||
69 | .mv_outl_p = sh7343se_outl, | ||
70 | |||
71 | .mv_insb = sh7343se_insb, | ||
72 | .mv_insw = sh7343se_insw, | ||
73 | .mv_insl = sh7343se_insl, | ||
74 | .mv_outsb = sh7343se_outsb, | ||
75 | .mv_outsw = sh7343se_outsw, | ||
76 | .mv_outsl = sh7343se_outsl, | ||
77 | |||
78 | .mv_init_irq = init_7343se_IRQ, | ||
79 | .mv_irq_demux = shmse_irq_demux, | ||
80 | #ifdef CONFIG_HEARTBEAT | ||
81 | .mv_heartbeat = heartbeat_7343se, | ||
82 | #endif | ||
83 | }; | ||
84 | ALIAS_MV(7343se) | ||