From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Phil Sutter <n0-1@freewrt.org>
Cc: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] provide functions for gpio configuration
Date: Mon, 03 Nov 2008 00:56:16 +0300 [thread overview]
Message-ID: <490E2200.1070201@ru.mvista.com> (raw)
In-Reply-To: <1225465088-29365-1-git-send-email-n0-1@freewrt.org>
Hello.
Phil Sutter wrote:
> As gpiolib doesn't support pin multiplexing, it provides no way to
> access the GPIOFUNC register. Also there is no support for setting
> interrupt status and level. These functions provide access to them and
> are needed by the CompactFlash driver.
>
> This is a combined version of the first two patches send in this thread
> on the linux-mips mailinglist. It's also addressing the conflict
> generated due to the change in arch/mips/include/asm/mach-rc32434/rb.h.
> Though this patch depends on it, it has been moved to another
> (yet uncommitted) patch changing the same part of rb.h.
>
> Signed-off-by: Phil Sutter <n0-1@freewrt.org>
>
NAK, some of the code is wrong.
> diff --git a/arch/mips/rb532/gpio.c b/arch/mips/rb532/gpio.c
> index 76a7fd9..de29aba 100644
> --- a/arch/mips/rb532/gpio.c
> +++ b/arch/mips/rb532/gpio.c
>
[...]
> @@ -111,15 +107,47 @@ unsigned char get_latch_u5(void)
> }
> EXPORT_SYMBOL(get_latch_u5);
>
> +/* rb532_set_bit - sanely set a bit
> + *
> + * bitval: new value for the bit
> + * offset: bit index in the 4 byte address range
> + * ioaddr: 4 byte aligned address being altered
> + */
> +static inline void rb532_set_bit(unsigned bitval,
> + unsigned offset, void __iomem *ioaddr)
> +{
> + unsigned long flags;
> + u32 val;
> +
> + bitval = !!bitval; /* map parameter to {0,1} */
> +
> + local_irq_save(flags);
> +
> + val = readl(ioaddr);
> + val &= ~( ~bitval << offset ); /* unset bit if bitval == 0 */
>
If bitval == 0, ~bitval evaluates to all ones, and the final AND mask
~(0xffffffff << offset) clears 32-offset MSBs. What you want is simply
~(1 << offset).
> + val |= ( bitval << offset ); /* set bit if bitval == 1 */
>
And don't put spaces before ) and after (, checkpatch.pl wouldn't
approve that. ;-)
> @@ -176,117 +184,60 @@ static int rb532_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
> static int rb532_gpio_direction_output(struct gpio_chip *chip,
> unsigned offset, int value)
> {
> - unsigned long flags;
> - u32 mask = 1 << offset;
> - u32 tmp;
> struct rb532_gpio_chip *gpch;
> - void __iomem *gpdr;
>
> gpch = container_of(chip, struct rb532_gpio_chip, chip);
> - writel(mask, gpch->regbase + GPIOD);
>
Hm, the old code seems really borked here...
MBR, Sergei
next prev parent reply other threads:[~2008-11-03 12:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-29 20:00 [PATCH] provide functions for gpio configuration Phil Sutter
2008-10-29 20:07 ` Florian Fainelli
2008-10-29 21:10 ` Phil Sutter
2008-10-30 17:13 ` Florian Fainelli
2008-10-30 17:47 ` Phil Sutter
2008-10-30 18:16 ` Florian Fainelli
2008-10-30 20:20 ` Phil Sutter
2008-10-30 20:26 ` Florian Fainelli
2008-10-31 0:25 ` [PATCH] add prototypes for the exported symbols Phil Sutter
2008-10-31 14:58 ` [PATCH] provide functions for gpio configuration Phil Sutter
2008-11-02 21:56 ` Sergei Shtylyov [this message]
2008-11-03 14:29 ` Phil Sutter
2008-11-03 14:30 ` [PATCH] MIPS: rb532: fix bit swapping in rb532_set_bit() Phil Sutter
2008-11-03 14:48 ` Atsushi Nemoto
2008-11-03 15:05 ` Phil Sutter
2008-11-11 23:09 ` Phil Sutter
2009-01-29 16:27 ` Ralf Baechle
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=490E2200.1070201@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--cc=linux-mips@linux-mips.org \
--cc=n0-1@freewrt.org \
--cc=ralf@linux-mips.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.