diff options
| -rw-r--r-- | board/motionpro/motionpro.c | 30 | ||||
| -rw-r--r-- | include/configs/motionpro.h | 22 | ||||
| -rw-r--r-- | include/status_led.h | 12 | 
3 files changed, 64 insertions, 0 deletions
| diff --git a/board/motionpro/motionpro.c b/board/motionpro/motionpro.c index 887aadeee..98357c7f4 100644 --- a/board/motionpro/motionpro.c +++ b/board/motionpro/motionpro.c @@ -33,6 +33,10 @@  #include <ft_build.h>  #endif +#if defined(CONFIG_STATUS_LED) +#include <status_led.h> +#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 e6e0eb1ff..5c2b1cdc8 100644 --- a/include/configs/motionpro.h +++ b/include/configs/motionpro.h @@ -310,6 +310,28 @@  /* + * 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   */  #define CFG_ENV_IS_IN_FLASH	1 diff --git a/include/status_led.h b/include/status_led.h index db4c60fe3..71a202fe3 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 |