aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/boards/mach-edosk7705/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/boards/mach-edosk7705/setup.c')
-rw-r--r--arch/sh/boards/mach-edosk7705/setup.c63
1 files changed, 53 insertions, 10 deletions
diff --git a/arch/sh/boards/mach-edosk7705/setup.c b/arch/sh/boards/mach-edosk7705/setup.c
index d59225e26fb9..8f93b6636900 100644
--- a/arch/sh/boards/mach-edosk7705/setup.c
+++ b/arch/sh/boards/mach-edosk7705/setup.c
@@ -10,27 +10,70 @@
10 */ 10 */
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/irq.h> 12#include <linux/irq.h>
13#include <asm/machvec.h> 13#include <linux/platform_device.h>
14#include <linux/interrupt.h>
15#include <linux/smc91x.h>
14#include <mach/edosk7705.h> 16#include <mach/edosk7705.h>
17#include <asm/machvec.h>
18#include <asm/sizes.h>
19
20#define SMC_IOBASE 0xA2000000
21#define SMC_IO_OFFSET 0x300
22#define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET)
23
24#define ETHERNET_IRQ 0x09
15 25
16static void __init sh_edosk7705_init_irq(void) 26static void __init sh_edosk7705_init_irq(void)
17{ 27{
18 /* This is the Ethernet interrupt */ 28 make_imask_irq(ETHERNET_IRQ);
19 make_imask_irq(0x09);
20} 29}
21 30
31/* eth initialization functions */
32static struct smc91x_platdata smc91x_info = {
33 .flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_1 | IORESOURCE_IRQ_LOWLEVEL,
34};
35
36static struct resource smc91x_res[] = {
37 [0] = {
38 .start = SMC_IOADDR,
39 .end = SMC_IOADDR + SZ_32 - 1,
40 .flags = IORESOURCE_MEM,
41 },
42 [1] = {
43 .start = ETHERNET_IRQ,
44 .end = ETHERNET_IRQ,
45 .flags = IORESOURCE_IRQ ,
46 }
47};
48
49static struct platform_device smc91x_dev = {
50 .name = "smc91x",
51 .id = -1,
52 .num_resources = ARRAY_SIZE(smc91x_res),
53 .resource = smc91x_res,
54
55 .dev = {
56 .platform_data = &smc91x_info,
57 },
58};
59
60/* platform init code */
61static struct platform_device *edosk7705_devices[] __initdata = {
62 &smc91x_dev,
63};
64
65static int __init init_edosk7705_devices(void)
66{
67 return platform_add_devices(edosk7705_devices,
68 ARRAY_SIZE(edosk7705_devices));
69}
70__initcall(init_edosk7705_devices);
71
22/* 72/*
23 * The Machine Vector 73 * The Machine Vector
24 */ 74 */
25static struct sh_machine_vector mv_edosk7705 __initmv = { 75static struct sh_machine_vector mv_edosk7705 __initmv = {
26 .mv_name = "EDOSK7705", 76 .mv_name = "EDOSK7705",
27 .mv_nr_irqs = 80, 77 .mv_nr_irqs = 80,
28
29 .mv_inb = sh_edosk7705_inb,
30 .mv_outb = sh_edosk7705_outb,
31
32 .mv_insb = sh_edosk7705_insb,
33 .mv_outsb = sh_edosk7705_outsb,
34
35 .mv_init_irq = sh_edosk7705_init_irq, 78 .mv_init_irq = sh_edosk7705_init_irq,
36}; 79};