From: baruch@tkos.co.il (Baruch Siach)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] PL061 GPIO: Changing *_irq_chip_data with *_irq_data for real irqs.
Date: Wed, 21 Apr 2010 10:37:30 +0300 [thread overview]
Message-ID: <20100421073728.GA6345@jasper.tkos.co.il> (raw)
In-Reply-To: <1271833201-4482-1-git-send-email-viresh.kumar@st.com>
Hi Viresh,
On Wed, Apr 21, 2010 at 12:30:01PM +0530, Viresh KUMAR wrote:
> PL061 driver is using set_irq_chip_data and get_irq_chip_data for real irq
> lines. It must be using *_irq_data functions instead. As chip_data is used by
> interrupt controllers also, which makes vic write at incorrect addresses.
>
> Also, pl061_direction_output doesn't set value of gpio to value passed to
> it. Adding code to set value of GPIO pin to requrested value.
Please split this patch into two separate patches. The two fixes are unrelated
to each other.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
> ---
> drivers/gpio/pl061.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpio/pl061.c b/drivers/gpio/pl061.c
> index 3ad1eeb..0a30124 100644
> --- a/drivers/gpio/pl061.c
> +++ b/drivers/gpio/pl061.c
> @@ -86,10 +86,10 @@ static int pl061_direction_output(struct gpio_chip *gc, unsigned offset,
> return -EINVAL;
>
> spin_lock_irqsave(&chip->lock, flags);
> - writeb(!!value << offset, chip->base + (1 << (offset + 2)));
I'm still for keeping this line.
> gpiodir = readb(chip->base + GPIODIR);
> gpiodir |= 1 << offset;
> writeb(gpiodir, chip->base + GPIODIR);
> + writeb(!!value << offset, chip->base + (1 << (offset + 2)));
> spin_unlock_irqrestore(&chip->lock, flags);
>
> return 0;
> @@ -203,7 +203,7 @@ static struct irq_chip pl061_irqchip = {
>
> static void pl061_irq_handler(unsigned irq, struct irq_desc *desc)
> {
> - struct list_head *chip_list = get_irq_chip_data(irq);
> + struct list_head *chip_list = get_irq_data(irq);
> struct list_head *ptr;
> struct pl061_gpio *chip;
>
> @@ -296,9 +296,9 @@ static int __init pl061_probe(struct amba_device *dev, struct amba_id *id)
> goto iounmap;
> }
> INIT_LIST_HEAD(chip_list);
> - set_irq_chip_data(irq, chip_list);
> + set_irq_data(irq, chip_list);
> } else
> - chip_list = get_irq_chip_data(irq);
> + chip_list = get_irq_data(irq);
> list_add(&chip->list, chip_list);
>
> for (i = 0; i < PL061_GPIO_NR; i++) {
baruch
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
next prev parent reply other threads:[~2010-04-21 7:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-21 7:00 [PATCH] PL061 GPIO: Changing *_irq_chip_data with *_irq_data for real irqs Viresh KUMAR
2010-04-21 7:37 ` Baruch Siach [this message]
2010-04-21 7:44 ` Viresh KUMAR
2010-04-21 8:02 ` Baruch Siach
2010-04-21 8:12 ` Viresh KUMAR
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=20100421073728.GA6345@jasper.tkos.co.il \
--to=baruch@tkos.co.il \
--cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.