On Fri, Oct 23, 2009 at 09:25:29PM +0530, charu@xxxxxx wrote: > From: Charulatha V <charu@xxxxxx> > > During initialization, GPIO module is reset using soft reset bit > of SYSCONFIG register > > Signed-off-by: Charulatha V <charu@xxxxxx> > --- > arch/arm/plat-omap/gpio.c | 12 +++++++++++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c > index 2304a5d..4579650 100644 > --- a/arch/arm/plat-omap/gpio.c > +++ b/arch/arm/plat-omap/gpio.c > @@ -21,6 +21,7 @@ > #include <linux/err.h> > #include <linux/clk.h> > #include <linux/io.h> > +#include <linux/delay.h> > > #include <mach/hardware.h> > #include <asm/irq.h> > @@ -1670,7 +1671,7 @@ static int __init _omap_gpio_init(void) > } > #endif > for (i = 0; i < gpio_bank_count; i++) { > - int j, gpio_count = 16; > + int j, gpio_count = 16, attempt = 0; decrementing is better, so: attempt = 1000 > > bank = &gpio_bank[i]; > spin_lock_init(&bank->lock); > @@ -1698,6 +1699,15 @@ static int __init _omap_gpio_init(void) > static const u32 non_wakeup_gpios[] = { > 0xe203ffc0, 0x08700040 > }; > + > + /* Software Reset of GPIO module */ > + __raw_writel(0x0002, bank->base + OMAP24XX_GPIO_SYSCONFIG); > + while (((__raw_readl(bank->base + OMAP24XX_GPIO_SYSSTATUS) > + & 0x1) == 0) && attempt < 5) { && attemp) > + udelay(1); i guess cpu_relax() is better here. > + attempt++; attempt--; -- balbi -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html