1/* 2 * linux/arch/sh/kernel/led_se.c 3 * 4 * Copyright (C) 2000 Stuart Menefy <stuart.menefy@st.com> 5 * 6 * May be copied or modified under the terms of the GNU General Public 7 * License. See linux/COPYING for more information. 8 * 9 * This file contains Solution Engine specific LED code. 10 */ 11 12#include <linux/config.h> 13#include <asm/hitachi_se.h> 14 15static void mach_led(int position, int value) 16{ 17 volatile unsigned short* p = (volatile unsigned short*)PA_LED; 18 19 if (value) { 20 *p |= (1<<8); 21 } else { 22 *p &= ~(1<<8); 23 } 24} 25 26#ifdef CONFIG_HEARTBEAT 27 28#include <linux/sched.h> 29 30/* Cycle the LED's in the clasic Knightrider/Sun pattern */ 31void heartbeat_se(void) 32{ 33 static unsigned int cnt = 0, period = 0; 34 volatile unsigned short* p = (volatile unsigned short*)PA_LED; 35 static unsigned bit = 0, up = 1; 36 37 cnt += 1; 38 if (cnt < period) { 39 return; 40 } 41 42 cnt = 0; 43 44 /* Go through the points (roughly!): 45 * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110 46 */ 47 period = 110 - ( (300<<FSHIFT)/ 48 ((avenrun[0]/5) + (3<<FSHIFT)) ); 49 50 if (up) { 51 if (bit == 7) { 52 bit--; 53 up=0; 54 } else { 55 bit ++; 56 } 57 } else { 58 if (bit == 0) { 59 bit++; 60 up=1; 61 } else { 62 bit--; 63 } 64 } 65 *p = 1<<(bit+8); 66 67} 68#endif /* CONFIG_HEARTBEAT */ 69