]>
Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
f30c2269 | 2 | * linux/arch/sh/boards/mpc1211/led.c |
1da177e4 LT |
3 | * |
4 | * Copyright (C) 2001 Saito.K & Jeanne | |
5 | * | |
6 | * This file contains Interface MPC-1211 specific LED code. | |
7 | */ | |
8 | ||
1da177e4 LT |
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 */ |