]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - arch/sh/boards/se/7343/led.c
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-serial
[mirror_ubuntu-hirsute-kernel.git] / arch / sh / boards / se / 7343 / led.c
1 /*
2 * arch/sh/boards/se/7343/led.c
3 *
4 */
5 #include <linux/sched.h>
6 #include <asm/mach/se7343.h>
7
8 /* Cycle the LED's in the clasic Knightrider/Sun pattern */
9 void heartbeat_7343se(void)
10 {
11 static unsigned int cnt = 0, period = 0;
12 volatile unsigned short *p = (volatile unsigned short *) PA_LED;
13 static unsigned bit = 0, up = 1;
14
15 cnt += 1;
16 if (cnt < period) {
17 return;
18 }
19
20 cnt = 0;
21
22 /* Go through the points (roughly!):
23 * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110
24 */
25 period = 110 - ((300 << FSHIFT) / ((avenrun[0] / 5) + (3 << FSHIFT)));
26
27 if (up) {
28 if (bit == 7) {
29 bit--;
30 up = 0;
31 } else {
32 bit++;
33 }
34 } else {
35 if (bit == 0) {
36 bit++;
37 up = 1;
38 } else {
39 bit--;
40 }
41 }
42 *p = 1 << (bit + LED_SHIFT);
43
44 }