From: Kukjin Kim <kgene.kim@samsung.com>
To: 'Kukjin Kim' <kgene.kim@samsung.com>, linux-samsung-soc@vger.kernel.org
Cc: ben-linux@fluff.org, jc.lee@samsung.com
Subject: RE: [PATCH] ARM: SAMSUNG: Fix on s5p_gpio_[get,set]_drvstr
Date: Mon, 30 Aug 2010 18:52:24 +0900 [thread overview]
Message-ID: <005201cb4829$0fbaf200$2f30d600$%kim@samsung.com> (raw)
In-Reply-To: <1283139071-25374-1-git-send-email-kgene.kim@samsung.com>
Kukjin Kim wrote:
>
> This patch fixes bug on gpio drive strength helper function.
>
> The offset should be like follwoing.
> - off = chip->chip.base - pin;
> + off = pin - chip->chip.base;
>
> In the s5p_gpio_get_drvstr(),
> the second line is unnecessary, because overwrite drvstr.
> drvstr = __raw_readl(reg);
> - drvstr = 0xffff & (0x3 << shift);
>
> And need 2bit masking before return the drvstr value.
> drvstr = drvstr >> shift;
> + drvstr &= 0x3;
>
> In the s5p_gpio_set_drvstr(), need relevant bit clear.
> tmp = __raw_readl(reg);
> + tmp &= ~(0x3 << shift);
> tmp |= drvstr << shift;
>
> Reported-by: Janghyuck Kim <janghyuck.kim@samsung.com>
Sorry I confused, should be 'Reported-by: Jaecheol Lee <jc.lee@samsung.com>'
> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
> ---
> arch/arm/plat-samsung/gpio-config.c | 7 ++++---
> 1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/gpio-config.c
b/arch/arm/plat-samsung/gpio-
> config.c
> index 57b68a5..e3d41ea 100644
> --- a/arch/arm/plat-samsung/gpio-config.c
> +++ b/arch/arm/plat-samsung/gpio-config.c
> @@ -273,13 +273,13 @@ s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int
pin)
> if (!chip)
> return -EINVAL;
>
> - off = chip->chip.base - pin;
> + off = pin - chip->chip.base;
> shift = off * 2;
> reg = chip->base + 0x0C;
>
> drvstr = __raw_readl(reg);
> - drvstr = 0xffff & (0x3 << shift);
> drvstr = drvstr >> shift;
> + drvstr &= 0x3;
>
> return (__force s5p_gpio_drvstr_t)drvstr;
> }
> @@ -296,11 +296,12 @@ int s5p_gpio_set_drvstr(unsigned int pin,
> s5p_gpio_drvstr_t drvstr)
> if (!chip)
> return -EINVAL;
>
> - off = chip->chip.base - pin;
> + off = pin - chip->chip.base;
> shift = off * 2;
> reg = chip->base + 0x0C;
>
> tmp = __raw_readl(reg);
> + tmp &= ~(0x3 << shift);
> tmp |= drvstr << shift;
>
> __raw_writel(tmp, reg);
> --
> 1.6.2.5
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
prev parent reply other threads:[~2010-08-30 9:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-30 3:31 [PATCH] ARM: SAMSUNG: Fix on s5p_gpio_[get,set]_drvstr Kukjin Kim
2010-08-30 9:52 ` Kukjin Kim [this message]
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='005201cb4829$0fbaf200$2f30d600$%kim@samsung.com' \
--to=kgene.kim@samsung.com \
--cc=ben-linux@fluff.org \
--cc=jc.lee@samsung.com \
--cc=linux-samsung-soc@vger.kernel.org \
/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