gpio registers are for 32 gpios. Given that orion_gpio_set_blink is called directly and not through gpiolib, it needs to make sure that the pin value given to the internal functions are between 0 and 31. Signed-off-by: Arnaud Patard Index: arm-soc/arch/arm/plat-orion/gpio.c =================================================================== --- arm-soc.orig/arch/arm/plat-orion/gpio.c 2012-04-18 22:23:10.319651494 +0200 +++ arm-soc/arch/arm/plat-orion/gpio.c 2012-04-18 22:34:32.115621496 +0200 @@ -289,8 +289,8 @@ void orion_gpio_set_blink(unsigned pin, return; spin_lock_irqsave(&ochip->lock, flags); - __set_level(ochip, pin, 0); - __set_blinking(ochip, pin, blink); + __set_level(ochip, pin & 31, 0); + __set_blinking(ochip, pin & 31, blink); spin_unlock_irqrestore(&ochip->lock, flags); } EXPORT_SYMBOL(orion_gpio_set_blink);