diff options
Diffstat (limited to 'arch/sh/boards/se/770x/setup.c')
-rw-r--r-- | arch/sh/boards/se/770x/setup.c | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c index a1d51d5fa925..45cbc36b9fb7 100644 --- a/arch/sh/boards/se/770x/setup.c +++ b/arch/sh/boards/se/770x/setup.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: setup.c,v 1.1.2.4 2002/03/02 21:57:07 lethal Exp $ | 1 | /* |
2 | * | ||
3 | * linux/arch/sh/boards/se/770x/setup.c | 2 | * linux/arch/sh/boards/se/770x/setup.c |
4 | * | 3 | * |
5 | * Copyright (C) 2000 Kazumoto Kojima | 4 | * Copyright (C) 2000 Kazumoto Kojima |
@@ -8,12 +7,12 @@ | |||
8 | * | 7 | * |
9 | */ | 8 | */ |
10 | #include <linux/init.h> | 9 | #include <linux/init.h> |
10 | #include <linux/platform_device.h> | ||
11 | #include <asm/machvec.h> | 11 | #include <asm/machvec.h> |
12 | #include <asm/se.h> | 12 | #include <asm/se.h> |
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/smc37c93x.h> | 14 | #include <asm/smc37c93x.h> |
15 | 15 | ||
16 | void heartbeat_se(void); | ||
17 | void init_se_IRQ(void); | 16 | void init_se_IRQ(void); |
18 | 17 | ||
19 | /* | 18 | /* |
@@ -36,11 +35,6 @@ static void __init smsc_setup(char **cmdline_p) | |||
36 | smsc_config(ACTIVATE_INDEX, 0x01); | 35 | smsc_config(ACTIVATE_INDEX, 0x01); |
37 | smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */ | 36 | smsc_config(IRQ_SELECT_INDEX, 6); /* IRQ6 */ |
38 | 37 | ||
39 | /* IDE1 */ | ||
40 | smsc_config(CURRENT_LDN_INDEX, LDN_IDE1); | ||
41 | smsc_config(ACTIVATE_INDEX, 0x01); | ||
42 | smsc_config(IRQ_SELECT_INDEX, 14); /* IRQ14 */ | ||
43 | |||
44 | /* AUXIO (GPIO): to use IDE1 */ | 38 | /* AUXIO (GPIO): to use IDE1 */ |
45 | smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO); | 39 | smsc_config(CURRENT_LDN_INDEX, LDN_AUXIO); |
46 | smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */ | 40 | smsc_config(GPIO46_INDEX, 0x00); /* nIOROP */ |
@@ -69,6 +63,36 @@ static void __init smsc_setup(char **cmdline_p) | |||
69 | outb_p(CONFIG_EXIT, CONFIG_PORT); | 63 | outb_p(CONFIG_EXIT, CONFIG_PORT); |
70 | } | 64 | } |
71 | 65 | ||
66 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; | ||
67 | |||
68 | static struct resource heartbeat_resources[] = { | ||
69 | [0] = { | ||
70 | .start = PA_LED, | ||
71 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | ||
72 | .flags = IORESOURCE_MEM, | ||
73 | }, | ||
74 | }; | ||
75 | |||
76 | static struct platform_device heartbeat_device = { | ||
77 | .name = "heartbeat", | ||
78 | .id = -1, | ||
79 | .dev = { | ||
80 | .platform_data = heartbeat_bit_pos, | ||
81 | }, | ||
82 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
83 | .resource = heartbeat_resources, | ||
84 | }; | ||
85 | |||
86 | static struct platform_device *se_devices[] __initdata = { | ||
87 | &heartbeat_device, | ||
88 | }; | ||
89 | |||
90 | static int __init se_devices_setup(void) | ||
91 | { | ||
92 | return platform_add_devices(se_devices, ARRAY_SIZE(se_devices)); | ||
93 | } | ||
94 | __initcall(se_devices_setup); | ||
95 | |||
72 | /* | 96 | /* |
73 | * The Machine Vector | 97 | * The Machine Vector |
74 | */ | 98 | */ |
@@ -107,8 +131,5 @@ struct sh_machine_vector mv_se __initmv = { | |||
107 | .mv_outsl = se_outsl, | 131 | .mv_outsl = se_outsl, |
108 | 132 | ||
109 | .mv_init_irq = init_se_IRQ, | 133 | .mv_init_irq = init_se_IRQ, |
110 | #ifdef CONFIG_HEARTBEAT | ||
111 | .mv_heartbeat = heartbeat_se, | ||
112 | #endif | ||
113 | }; | 134 | }; |
114 | ALIAS_MV(se) | 135 | ALIAS_MV(se) |