4 * MPC8xx/MPC8260/MPC5xx based status led support functions
7 #ifndef __ASM_STATUS_LED_H__
8 #define __ASM_STATUS_LED_H__
10 /* if not overridden */
11 #ifndef CONFIG_LED_STATUS_BOARD_SPECIFIC
12 # if defined(CONFIG_MPC8260)
14 # elif defined(CONFIG_5xx)
17 # error CPU specific Status LED header file missing.
20 /* led_id_t is unsigned long mask */
21 typedef unsigned long led_id_t;
23 static inline void __led_init (led_id_t mask, int state)
25 volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
28 immr->STATUS_LED_PAR &= ~mask;
31 immr->STATUS_LED_ODR &= ~mask;
34 #if (STATUS_LED_ACTIVE == 0)
35 if (state == CONFIG_LED_STATUS_ON)
36 immr->STATUS_LED_DAT &= ~mask;
38 immr->STATUS_LED_DAT |= mask;
40 if (state == CONFIG_LED_STATUS_ON)
41 immr->STATUS_LED_DAT |= mask;
43 immr->STATUS_LED_DAT &= ~mask;
46 immr->STATUS_LED_DIR |= mask;
50 static inline void __led_toggle (led_id_t mask)
52 ((immap_t *) CONFIG_SYS_IMMR)->STATUS_LED_DAT ^= mask;
55 static inline void __led_set (led_id_t mask, int state)
57 volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
59 #if (STATUS_LED_ACTIVE == 0)
60 if (state == CONFIG_LED_STATUS_ON)
61 immr->STATUS_LED_DAT &= ~mask;
63 immr->STATUS_LED_DAT |= mask;
65 if (state == CONFIG_LED_STATUS_ON)
66 immr->STATUS_LED_DAT |= mask;
68 immr->STATUS_LED_DAT &= ~mask;
75 #endif /* __ASM_STATUS_LED_H__ */