X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=arch%2Farm%2Fplat-orion%2Fgpio.c;h=af95af2573010caccaa393dff87ebdc5a4529b33;hb=ff3e660b5a881b401b2b6735aa5334f433237dcb;hp=d3401e77ff3db976bde5ca90b9a4d8a098830b85;hpb=92a486eabefadca1169fbf15d737feeaf2bda844;p=~andy%2Flinux diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c index d3401e77ff3..af95af25730 100644 --- a/arch/arm/plat-orion/gpio.c +++ b/arch/arm/plat-orion/gpio.c @@ -16,6 +16,7 @@ #include #include #include +#include /* * GPIO unit register offsets. @@ -295,6 +296,28 @@ void orion_gpio_set_blink(unsigned pin, int blink) } EXPORT_SYMBOL(orion_gpio_set_blink); +#define ORION_BLINK_HALF_PERIOD 100 /* ms */ + +int orion_gpio_led_blink_set(unsigned gpio, int state, + unsigned long *delay_on, unsigned long *delay_off) +{ + + if (delay_on && delay_off && !*delay_on && !*delay_off) + *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; + + switch (state) { + case GPIO_LED_NO_BLINK_LOW: + case GPIO_LED_NO_BLINK_HIGH: + orion_gpio_set_blink(gpio, 0); + gpio_set_value(gpio, state); + break; + case GPIO_LED_BLINK: + orion_gpio_set_blink(gpio, 1); + } + return 0; +} +EXPORT_SYMBOL_GPL(orion_gpio_led_blink_set); + /***************************************************************************** * Orion GPIO IRQ