diff options
Diffstat (limited to 'arch/sh/boards/mpc1211')
-rw-r--r-- | arch/sh/boards/mpc1211/Makefile | 2 | ||||
-rw-r--r-- | arch/sh/boards/mpc1211/led.c | 63 | ||||
-rw-r--r-- | arch/sh/boards/mpc1211/setup.c | 31 |
3 files changed, 28 insertions, 68 deletions
diff --git a/arch/sh/boards/mpc1211/Makefile b/arch/sh/boards/mpc1211/Makefile index 1644ebed78cb..8cd31b5d200b 100644 --- a/arch/sh/boards/mpc1211/Makefile +++ b/arch/sh/boards/mpc1211/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for the Interface (CTP/PCI/MPC-SH02) specific parts of the kernel | 2 | # Makefile for the Interface (CTP/PCI/MPC-SH02) specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := setup.o rtc.o led.o | 5 | obj-y := setup.o rtc.o |
6 | 6 | ||
7 | obj-$(CONFIG_PCI) += pci.o | 7 | obj-$(CONFIG_PCI) += pci.o |
8 | 8 | ||
diff --git a/arch/sh/boards/mpc1211/led.c b/arch/sh/boards/mpc1211/led.c deleted file mode 100644 index 8df1591823d6..000000000000 --- a/arch/sh/boards/mpc1211/led.c +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/boards/mpc1211/led.c | ||
3 | * | ||
4 | * Copyright (C) 2001 Saito.K & Jeanne | ||
5 | * | ||
6 | * This file contains Interface MPC-1211 specific LED code. | ||
7 | */ | ||
8 | |||
9 | |||
10 | static void mach_led(int position, int value) | ||
11 | { | ||
12 | volatile unsigned char* p = (volatile unsigned char*)0xa2000000; | ||
13 | |||
14 | if (value) { | ||
15 | *p |= 1; | ||
16 | } else { | ||
17 | *p &= ~1; | ||
18 | } | ||
19 | } | ||
20 | |||
21 | #ifdef CONFIG_HEARTBEAT | ||
22 | |||
23 | #include <linux/sched.h> | ||
24 | |||
25 | /* Cycle the LED's in the clasic Knightrider/Sun pattern */ | ||
26 | void heartbeat_mpc1211(void) | ||
27 | { | ||
28 | static unsigned int cnt = 0, period = 0; | ||
29 | volatile unsigned char* p = (volatile unsigned char*)0xa2000000; | ||
30 | static unsigned bit = 0, up = 1; | ||
31 | |||
32 | cnt += 1; | ||
33 | if (cnt < period) { | ||
34 | return; | ||
35 | } | ||
36 | |||
37 | cnt = 0; | ||
38 | |||
39 | /* Go through the points (roughly!): | ||
40 | * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110 | ||
41 | */ | ||
42 | period = 110 - ( (300<<FSHIFT)/ | ||
43 | ((avenrun[0]/5) + (3<<FSHIFT)) ); | ||
44 | |||
45 | if (up) { | ||
46 | if (bit == 7) { | ||
47 | bit--; | ||
48 | up=0; | ||
49 | } else { | ||
50 | bit ++; | ||
51 | } | ||
52 | } else { | ||
53 | if (bit == 0) { | ||
54 | bit++; | ||
55 | up=1; | ||
56 | } else { | ||
57 | bit--; | ||
58 | } | ||
59 | } | ||
60 | *p = 1<<bit; | ||
61 | |||
62 | } | ||
63 | #endif /* CONFIG_HEARTBEAT */ | ||
diff --git a/arch/sh/boards/mpc1211/setup.c b/arch/sh/boards/mpc1211/setup.c index 7c3d1d304157..1a0604b23ce0 100644 --- a/arch/sh/boards/mpc1211/setup.c +++ b/arch/sh/boards/mpc1211/setup.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/hdreg.h> | 10 | #include <linux/hdreg.h> |
11 | #include <linux/ide.h> | 11 | #include <linux/ide.h> |
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | #include <linux/platform_device.h> | ||
13 | #include <asm/io.h> | 14 | #include <asm/io.h> |
14 | #include <asm/machvec.h> | 15 | #include <asm/machvec.h> |
15 | #include <asm/mpc1211/mpc1211.h> | 16 | #include <asm/mpc1211/mpc1211.h> |
@@ -281,6 +282,32 @@ static int put_smb_blk(unsigned char *p, int address, int command, int no) | |||
281 | return 0; | 282 | return 0; |
282 | } | 283 | } |
283 | 284 | ||
285 | static struct resource heartbeat_resources[] = { | ||
286 | [0] = { | ||
287 | .start = 0xa2000000, | ||
288 | .end = 0xa2000000 + 8 - 1, | ||
289 | .flags = IORESOURCE_MEM, | ||
290 | }, | ||
291 | }; | ||
292 | |||
293 | static struct platform_device heartbeat_device = { | ||
294 | .name = "heartbeat", | ||
295 | .id = -1, | ||
296 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
297 | .resource = heartbeat_resources, | ||
298 | }; | ||
299 | |||
300 | static struct platform_device *mpc1211_devices[] __initdata = { | ||
301 | &heartbeat_device, | ||
302 | }; | ||
303 | |||
304 | static int __init mpc1211_devices_setup(void) | ||
305 | { | ||
306 | return platform_add_devices(mpc1211_devices, | ||
307 | ARRAY_SIZE(mpc1211_devices)); | ||
308 | } | ||
309 | __initcall(mpc1211_devices_setup); | ||
310 | |||
284 | /* arch/sh/boards/mpc1211/rtc.c */ | 311 | /* arch/sh/boards/mpc1211/rtc.c */ |
285 | void mpc1211_time_init(void); | 312 | void mpc1211_time_init(void); |
286 | 313 | ||
@@ -317,9 +344,5 @@ struct sh_machine_vector mv_mpc1211 __initmv = { | |||
317 | .mv_nr_irqs = 48, | 344 | .mv_nr_irqs = 48, |
318 | .mv_irq_demux = mpc1211_irq_demux, | 345 | .mv_irq_demux = mpc1211_irq_demux, |
319 | .mv_init_irq = init_mpc1211_IRQ, | 346 | .mv_init_irq = init_mpc1211_IRQ, |
320 | |||
321 | #ifdef CONFIG_HEARTBEAT | ||
322 | .mv_heartbeat = heartbeat_mpc1211, | ||
323 | #endif | ||
324 | }; | 347 | }; |
325 | ALIAS_MV(mpc1211) | 348 | ALIAS_MV(mpc1211) |