From: Lothar Waßmann Date: Thu, 18 Feb 2016 16:58:57 +0000 (+0100) Subject: karo: tx6ul: make show_activity() bail out on GPIO error X-Git-Tag: KARO-TX6-2016-03-10~2^2~7 X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=commitdiff_plain;h=c12575229a06050f42c7d4355204dc961df18628 karo: tx6ul: make show_activity() bail out on GPIO error --- diff --git a/board/karo/tx6/tx6ul.c b/board/karo/tx6/tx6ul.c index da40e530b8..ce9450f3ad 100644 --- a/board/karo/tx6/tx6ul.c +++ b/board/karo/tx6/tx6ul.c @@ -675,6 +675,7 @@ enum { LED_STATE_INIT = -1, LED_STATE_OFF, LED_STATE_ON, + LED_STATE_ERR, }; static inline int calc_blink_rate(void) @@ -692,13 +693,24 @@ void show_activity(int arg) static int led_state = LED_STATE_INIT; static int blink_rate; static ulong last; + int ret; + + switch (led_state) { + case LED_STATE_ERR: + return; - if (led_state == LED_STATE_INIT) { + case LED_STATE_INIT: last = get_timer(0); - gpio_set_value(TX6UL_LED_GPIO, 1); - led_state = LED_STATE_ON; + ret = gpio_set_value(TX6UL_LED_GPIO, 1); + if (ret) + led_state = LED_STATE_ERR; + else + led_state = LED_STATE_ON; blink_rate = calc_blink_rate(); - } else { + break; + + case LED_STATE_ON: + case LED_STATE_OFF: if (get_timer(last) > blink_rate) { blink_rate = calc_blink_rate(); last = get_timer_masked(); @@ -709,6 +721,7 @@ void show_activity(int arg) } led_state = 1 - led_state; } + break; } }