On Mon, 15 Sep 2008 22:02:41 +0200 Uwe Kleine-K__nig <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote: > According to the documentation gpio_free should only be called from task > context only. To make this more explicit add a might sleep to all > implementations. > > This patch changes the gpio_free implementations for the mips > architecture. > > Signed-off-by: Uwe Kleine-K__nig <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx> > Cc: David Brownell <david-b@xxxxxxxxxxx> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Cc: linux-mips@xxxxxxxxxxxxxx > Cc: Guennadi Liakhovetski <g.liakhovetski@xxxxxxxxxxxxxx> > Cc: Greg KH <greg@xxxxxxxxx> > Cc: Kay Sievers <kay.sievers@xxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> > --- > include/asm-mips/mach-au1x00/gpio.h | 2 ++ > include/asm-mips/mach-bcm47xx/gpio.h | 3 +++ > include/asm-mips/mach-rc32434/gpio.h | 2 ++ > 3 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/include/asm-mips/mach-au1x00/gpio.h b/include/asm-mips/mach-au1x00/gpio.h > index 2dc61e0..31eddba 100644 > --- a/include/asm-mips/mach-au1x00/gpio.h > +++ b/include/asm-mips/mach-au1x00/gpio.h > @@ -1,6 +1,7 @@ > #ifndef _AU1XXX_GPIO_H_ > #define _AU1XXX_GPIO_H_ > > +#include <linux/kernel.h> > #include <linux/types.h> > > #define AU1XXX_GPIO_BASE 200 > @@ -31,6 +32,7 @@ static inline int gpio_request(unsigned gpio, const char *label) > static inline void gpio_free(unsigned gpio) > { > /* Not yet implemented */ > + might_sleep(); > } > > static inline int gpio_direction_input(unsigned gpio) > diff --git a/include/asm-mips/mach-bcm47xx/gpio.h b/include/asm-mips/mach-bcm47xx/gpio.h > index cfc8f4d..af17ccd 100644 > --- a/include/asm-mips/mach-bcm47xx/gpio.h > +++ b/include/asm-mips/mach-bcm47xx/gpio.h > @@ -9,6 +9,8 @@ > #ifndef __BCM47XX_GPIO_H > #define __BCM47XX_GPIO_H > > +#include <linux/kernel.h> > + > #define BCM47XX_EXTIF_GPIO_LINES 5 > #define BCM47XX_CHIPCO_GPIO_LINES 16 > > @@ -25,6 +27,7 @@ static inline int gpio_request(unsigned gpio, const char *label) > > static inline void gpio_free(unsigned gpio) > { > + might_sleep(); > } > > static inline int gpio_to_irq(unsigned gpio) > diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h > index f946f5f..9b4722e 100644 > --- a/include/asm-mips/mach-rc32434/gpio.h > +++ b/include/asm-mips/mach-rc32434/gpio.h > @@ -13,6 +13,7 @@ > #ifndef _RC32434_GPIO_H_ > #define _RC32434_GPIO_H_ > > +#include <linux/kernel.h> > #include <linux/types.h> > > struct rb532_gpio_reg { > @@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label) > static inline void gpio_free(unsigned gpio) > { > /* Not yet implemented */ > + might_sleep(); > } > There is no gpio_free() in linux-next's include/asm-mips/mach-rc32434/gpio.h