From: Nishanth Menon <nm@ti.com>
To: "me@felipebalbi.com" <me@felipebalbi.com>
Cc: "Varadarajan, Charu Latha" <charu@ti.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: Re: [PATCH] [OMAP] GPIO Module is reset during initialization
Date: Fri, 23 Oct 2009 19:37:52 -0500 [thread overview]
Message-ID: <4AE24C60.6040302@ti.com> (raw)
In-Reply-To: <20091023225639.GA13020@gandalf>
Felipe Balbi had written, on 10/23/2009 05:56 PM, the following:
> On Fri, Oct 23, 2009 at 09:25:29PM +0530, charu@ti.com wrote:
>> From: Charulatha V <charu@ti.com>
>>
>> During initialization, GPIO module is reset using soft reset bit
>> of SYSCONFIG register
>>
>> Signed-off-by: Charulatha V <charu@ti.com>
>> ---
>> 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
please move attempt out of here to the {} for 3430.. Warning for OMAP1.
>
>>
>> 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--;
>
cant we improve this code as following:
{
u8 attempts = 25;
/* Software Reset of GPIO module */
__raw_writel(0x0002, bank->base
+ OMAP24XX_GPIO_SYSCONFIG);
/* wait for reset to be done */
while (((__raw_readl(bank->base +
OMAP24XX_GPIO_SYSSTATUS) & 0x1) == 0)
&& attempts) {
cpu_relax();
if (attempts % 5)
udelay(1);
attempts--;
}
allows the kernel to do somethin else while we also ensure we have a 5
usec guarenteed delay before giving up..
--
Regards,
Nishanth Menon
next prev parent reply other threads:[~2009-10-24 0:37 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-23 15:55 [PATCH] [OMAP] GPIO Module is reset during initialization charu
2009-10-23 22:56 ` Felipe Balbi
2009-10-24 0:37 ` Nishanth Menon [this message]
2009-10-26 9:26 ` Varadarajan, Charu Latha
2009-10-26 10:22 ` Menon, Nishanth
2009-10-26 10:52 ` Varadarajan, Charu Latha
2009-10-26 11:04 ` Menon, Nishanth
2009-10-26 11:07 ` Varadarajan, Charu Latha
2009-10-26 20:29 ` Kevin Hilman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AE24C60.6040302@ti.com \
--to=nm@ti.com \
--cc=charu@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=me@felipebalbi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox