On Fri, Oct 23, 2009 at 09:25:29PM +0530, [email protected] wrote:
> From: Charulatha V <[email protected]>
>
> During initialization, GPIO module is reset using soft reset bit
> of SYSCONFIG register
>
> Signed-off-by: Charulatha V <[email protected]>
> ---
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html