int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int i, match = 0; enum led_cmd cmd; int freq; /* Validate arguments */ if ((argc < 3) || (argc > 4)) return CMD_RET_USAGE; cmd = get_led_cmd(argv[2]); if (cmd < 0) { return CMD_RET_USAGE; } for (i = 0; led_commands[i].string; i++) { if ((strcmp("all", argv[1]) == 0) || (strcmp(led_commands[i].string, argv[1]) == 0)) { match = 1; switch (cmd) { case LED_ON: if (led_commands[i].on) led_commands[i].on(); else __led_set(led_commands[i].mask, STATUS_LED_ON); break; case LED_OFF: if (led_commands[i].off) led_commands[i].off(); else __led_set(led_commands[i].mask, STATUS_LED_OFF); break; case LED_TOGGLE: if (led_commands[i].toggle) led_commands[i].toggle(); else __led_toggle(led_commands[i].mask); break; case LED_BLINK: if (argc != 4) return CMD_RET_USAGE; freq = simple_strtoul(argv[3], NULL, 10); __led_blink(led_commands[i].mask, freq); } /* Need to set only 1 led if led_name wasn't 'all' */ if (strcmp("all", argv[1]) != 0) break; } } /* If we ran out of matches, print Usage */ if (!match) { return CMD_RET_USAGE; } return 0; }
int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int i, match = 0; enum led_cmd cmd; /* Validate arguments */ if ((argc != 3)) { return cmd_usage(cmdtp); } cmd = get_led_cmd(argv[2]); if (cmd < 0) { return cmd_usage(cmdtp); } for (i = 0; led_commands[i].string; i++) { if ((strcmp("all", argv[1]) == 0) || (strcmp(led_commands[i].string, argv[1]) == 0)) { match = 1; switch (cmd) { case LED_ON: if (led_commands[i].on) led_commands[i].on(); else __led_set(led_commands[i].mask, 1); break; case LED_OFF: if (led_commands[i].off) led_commands[i].off(); else __led_set(led_commands[i].mask, 0); break; case LED_TOGGLE: if (led_commands[i].toggle) led_commands[i].toggle(); else __led_toggle(led_commands[i].mask); } /* Need to set only 1 led if led_name wasn't 'all' */ if (strcmp("all", argv[1]) != 0) break; } } /* If we ran out of matches, print Usage */ if (!match) { return cmd_usage(cmdtp); } return 0; }
static void pm860x_led_work(struct work_struct *work) { struct pm860x_led *led; led = container_of(work, struct pm860x_led, work); __led_set(led, led->command); }
void __led_init (led_id_t mask, int state) { int toggle_gpio; toggle_gpio = get_led_gpio(mask); if (toggle_gpio && !gpio_request(toggle_gpio, "led")) __led_set(mask, state); }
void __led_toggle (led_id_t mask) { #ifdef STATUS_LED_BIT if (STATUS_LED_BIT & mask) { if (STATUS_LED_ON == saved_state[0]) __led_set(STATUS_LED_BIT, 0); else __led_set(STATUS_LED_BIT, 1); } #endif #ifdef STATUS_LED_BIT1 if (STATUS_LED_BIT1 & mask) { if (STATUS_LED_ON == saved_state[1]) __led_set(STATUS_LED_BIT1, 0); else __led_set(STATUS_LED_BIT1, 1); } #endif }
void __led_init(led_id_t mask, int state) { at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC; at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO; writel(1 << ATMEL_ID_PIOD, &pmc->pcer); /* Enable PIOB clock */ /* Disable peripherals on LEDs */ writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.per); /* Enable pins as outputs */ writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.oer); /* Turn all LEDs OFF */ writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.sodr); __led_set(mask, state); }
void status_led_set (int led, int state) { led_dev_t *ld; if (led < 0 || led >= MAX_LED_DEV) return; if (!status_led_init_done) status_led_init (); ld = &led_dev[led]; ld->state = state; if (state == STATUS_LED_BLINKING) { ld->cnt = 0; /* always start with full period */ state = STATUS_LED_ON; /* always start with LED _ON_ */ } __led_set (ld->mask, state); }
int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int state, i; /* Validate arguments */ if ((argc != 3)) { return cmd_usage(cmdtp); } state = str_onoff(argv[2]); if (state < 0) { return cmd_usage(cmdtp); } for (i = 0; led_commands[i].string; i++) { if ((strcmp("all", argv[1]) == 0) || (strcmp(led_commands[i].string, argv[1]) == 0)) { if (led_commands[i].on) { if (state) { led_commands[i].on(); } else { led_commands[i].off(); } } else { __led_set(led_commands[i].mask, state); } break; } } /* If we ran out of matches, print Usage */ if (!led_commands[i].string && !(strcmp("all", argv[1]) == 0)) { return cmd_usage(cmdtp); } return 0; }
void blue_led_on(void) { __led_set(STATUS_LED_BLUE, STATUS_LED_ON); }
void yellow_led_off(void) { __led_set(STATUS_LED_YELLOW, STATUS_LED_OFF); }
void yellow_led_on(void) { __led_set(STATUS_LED_YELLOW, STATUS_LED_ON); }
void green_led_off(void) { __led_set(STATUS_LED_GREEN, STATUS_LED_OFF); }
void green_led_on(void) { __led_set(STATUS_LED_GREEN, STATUS_LED_ON); }
void red_led_off(void) { __led_set(STATUS_LED_RED, STATUS_LED_OFF); }
void red_led_on(void) { __led_set(STATUS_LED_RED, STATUS_LED_ON); }
void blue_led_off(void) { __led_set(STATUS_LED_BLUE, STATUS_LED_OFF); }
void green_LED_off (void) { __led_set (STATUS_LED_GREEN, 0); }
void green_LED_on (void) { __led_set (STATUS_LED_GREEN, 1); }
void __led_init(led_id_t mask, int state) { __led_set(mask, state); }