Motion-PRO: Add LED support.
authorBartlomiej Sieka <tur@semihalf.com>
Sun, 27 May 2007 14:51:48 +0000 (16:51 +0200)
committerBartlomiej Sieka <tur@semihalf.com>
Sun, 27 May 2007 14:51:48 +0000 (16:51 +0200)
Signed-off-by: Jan Wrobel <wrr@semihalf.com>
Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Acked-by: Bartlomiej Sieka <tur@semihalf.com>
board/motionpro/motionpro.c
include/configs/motionpro.h
include/status_led.h

index 887aadeeed219870bb0cbfa2504bee5dc1e0d41e..98357c7f4228dad3785b762e9aec97acf0b69c51 100644 (file)
 #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 */
index e6e0eb1ff51438949880432c2477a3f19d59647a..5c2b1cdc823be4aa1b9c6c563be06232f887ceac 100644 (file)
 #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
  */
index db4c60fe3f3fe6087d16297622b00fcd70edc85d..71a202fe36ec4412a812ebba4589bcd9582bfcca 100644 (file)
@@ -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