/*
 * linux/arch/sh/kernel/led_mpc1211.c
 *
 * Copyright (C) 2001  Saito.K & Jeanne
 *
 * This file contains Interface MPC-1211 specific LED code.
 */

#include <linux/config.h>

static void mach_led(int position, int value)
{
	volatile unsigned char* p = (volatile unsigned char*)0xa2000000;

	if (value) {
		*p |= 1;
	} else {
		*p &= ~1;
	}
}

#ifdef CONFIG_HEARTBEAT

#include <linux/sched.h>

/* Cycle the LED's in the clasic Knightrider/Sun pattern */
void heartbeat_mpc1211(void)
{
	static unsigned int cnt = 0, period = 0;
	volatile unsigned char* p = (volatile unsigned char*)0xa2000000;
	static unsigned bit = 0, up = 1;

	cnt += 1;
	if (cnt < period) {
		return;
	}

	cnt = 0;

	/* Go through the points (roughly!):
	 * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110
	 */
	period = 110 - ( (300<<FSHIFT)/
			 ((avenrun[0]/5) + (3<<FSHIFT)) );

	if (up) {
		if (bit == 7) {
			bit--;
			up=0;
		} else {
			bit ++;
		}
	} else {
		if (bit == 0) {
			bit++;
			up=1;
		} else {
			bit--;
		}
	}
	*p = 1<<bit;

}
#endif /* CONFIG_HEARTBEAT */
