Exemple #1
0
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;
}
Exemple #2
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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
}
Exemple #6
0
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);
}
Exemple #7
0
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);
}
Exemple #8
0
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;
}
Exemple #9
0
void blue_led_on(void)
{
	__led_set(STATUS_LED_BLUE, STATUS_LED_ON);
}
Exemple #10
0
void yellow_led_off(void)
{
	__led_set(STATUS_LED_YELLOW, STATUS_LED_OFF);
}
Exemple #11
0
void yellow_led_on(void)
{
	__led_set(STATUS_LED_YELLOW, STATUS_LED_ON);
}
Exemple #12
0
void green_led_off(void)
{
	__led_set(STATUS_LED_GREEN, STATUS_LED_OFF);
}
Exemple #13
0
void green_led_on(void)
{
	__led_set(STATUS_LED_GREEN, STATUS_LED_ON);
}
Exemple #14
0
void red_led_off(void)
{
	__led_set(STATUS_LED_RED, STATUS_LED_OFF);
}
Exemple #15
0
void red_led_on(void)
{
	__led_set(STATUS_LED_RED, STATUS_LED_ON);
}
Exemple #16
0
void blue_led_off(void)
{
	__led_set(STATUS_LED_BLUE, STATUS_LED_OFF);
}
Exemple #17
0
void green_LED_off (void)
{
	__led_set (STATUS_LED_GREEN, 0);
}
Exemple #18
0
void green_LED_on (void)
{
	__led_set (STATUS_LED_GREEN, 1);
}
Exemple #19
0
void __led_init(led_id_t mask, int state)
{
	__led_set(mask, state);
}