From a11c0b85dc3664bb3c1e781137118730c8f619ab Mon Sep 17 00:00:00 2001 From: Bartlomiej Sieka Date: Sun, 27 May 2007 16:51:48 +0200 Subject: [PATCH] Motion-PRO: Add LED support. Signed-off-by: Jan Wrobel Signed-off-by: Marian Balakowicz Acked-by: Bartlomiej Sieka --- board/motionpro/motionpro.c | 30 ++++++++++++++++++++++++++++++ include/configs/motionpro.h | 22 ++++++++++++++++++++++ include/status_led.h | 12 ++++++++++++ 3 files changed, 64 insertions(+) diff --git a/board/motionpro/motionpro.c b/board/motionpro/motionpro.c index 887aadeeed..98357c7f42 100644 --- a/board/motionpro/motionpro.c +++ b/board/motionpro/motionpro.c @@ -33,6 +33,10 @@ #include #endif +#if defined(CONFIG_STATUS_LED) +#include +#endif /* CONFIG_STATUS_LED */ + /* Kollmorgen DPR initialization data */ struct init_elem { unsigned long addr; @@ -180,3 +184,29 @@ void ft_board_setup(void *blob, bd_t *bd) ft_cpu_setup(blob, bd); } #endif /* defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) */ + + +#if defined(CONFIG_STATUS_LED) +void __led_init (led_id_t regaddr, int state) +{ + *((vu_long *) regaddr) |= ENABLE_GPIO_OUT; + + if (state == STATUS_LED_ON) + *((vu_long *) regaddr) |= LED_ON; + else + *((vu_long *) regaddr) &= ~LED_ON; +} + +void __led_set (led_id_t regaddr, int state) +{ + if (state == STATUS_LED_ON) + *((vu_long *) regaddr) |= LED_ON; + else + *((vu_long *) regaddr) &= ~LED_ON; +} + +void __led_toggle (led_id_t regaddr) +{ + *((vu_long *) regaddr) ^= LED_ON; +} +#endif /* CONFIG_STATUS_LED */ diff --git a/include/configs/motionpro.h b/include/configs/motionpro.h index e6e0eb1ff5..5c2b1cdc82 100644 --- a/include/configs/motionpro.h +++ b/include/configs/motionpro.h @@ -309,6 +309,28 @@ #define CFG_I2C_RTC_ADDR 0x68 +/* + * Status LED configuration + */ +#define CONFIG_STATUS_LED /* Status LED enabled */ +#define CONFIG_BOARD_SPECIFIC_LED + +#define ENABLE_GPIO_OUT 0x00000024 +#define LED_ON 0x00000010 + +#ifndef __ASSEMBLY__ +/* + * In case of Motion-PRO, a LED is identified by its corresponding + * GPT Enable and Mode Select Register. + */ +typedef volatile unsigned long * led_id_t; + +extern void __led_init(led_id_t id, int state); +extern void __led_toggle(led_id_t id); +extern void __led_set(led_id_t id, int state); +#endif /* __ASSEMBLY__ */ + + /* * Environment settings */ diff --git a/include/status_led.h b/include/status_led.h index db4c60fe3f..71a202fe36 100644 --- a/include/status_led.h +++ b/include/status_led.h @@ -355,6 +355,18 @@ void status_led_set (int led, int state); # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ +#elif defined(CONFIG_MOTIONPRO) + +#define STATUS_LED_BIT ((vu_long *) MPC5XXX_GPT6_ENABLE) +#define STATUS_LED_PERIOD (CFG_HZ / 10) +#define STATUS_LED_STATE STATUS_LED_BLINKING + +#define STATUS_LED_BIT1 ((vu_long *) MPC5XXX_GPT7_ENABLE) +#define STATUS_LED_PERIOD1 (CFG_HZ / 10) +#define STATUS_LED_STATE1 STATUS_LED_OFF + +#define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ + #else # error Status LED configuration missing #endif -- 2.39.2