From: wg@grandegger.com (Wolfgang Grandegger)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RESEND 0/6 v10] gpio: Add block GPIO
Date: Mon, 17 Dec 2012 17:28:40 +0100 [thread overview]
Message-ID: <50CF4838.9000401@grandegger.com> (raw)
In-Reply-To: <50CF237E.5020409@antcom.de>
On 12/17/2012 02:51 PM, Roland Stigge wrote:
> Hi Wolfgang,
>
> On 12/17/2012 02:32 PM, Roland Stigge wrote:
>> And I guess Russell is right: If possible, we should write outputs
>> simultaneously via ODSR (plus OWER/OWDR/OWSR) instead of separate set/clear.
>>
>> I wonder if we need to save/restore the state of OWSR at every write
>> operation or if we need/can cache it. Assuming that block GPIO are the
>> only code in the kernel that manipulates ODSR.
>
> Can you please test the following:
>
> +static void at91_gpiolib_set_block(struct gpio_chip *chip, unsigned long mask, unsigned long val)
> +{
> + struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip);
> + void __iomem *pio = at91_gpio->regbase;
> +
> + __raw_writel(~mask, pio + PIO_OWDR);
This would also disable normal GPIOs configured for output! From the
manual I understand that if the pin is configured for output, we could
either use PIO_SODR/PIO_CODR to set/clear the bits individually or
PIO_ODSR for synchronous data output. But than we need to care about the
non-block GPIO outputs as well... requiring a read-modify-write cycle :(.
Wolfgang.
WARNING: multiple messages have this Message-ID (diff)
From: Wolfgang Grandegger <wg@grandegger.com>
To: Roland Stigge <stigge@antcom.de>
Cc: rmallon@gmail.com, gregkh@linuxfoundation.org,
linus.walleij@linaro.org, broonie@opensource.wolfsonmicro.com,
linux-kernel@vger.kernel.org, w.sang@pengutronix.de,
grant.likely@secretlab.ca, daniel-gl@gmx.net, sr@denx.de,
plagnioj@jcrosoft.com, linux-arm-kernel@lists.infradead.org,
highguy@gmail.com
Subject: Re: [PATCH RESEND 0/6 v10] gpio: Add block GPIO
Date: Mon, 17 Dec 2012 17:28:40 +0100 [thread overview]
Message-ID: <50CF4838.9000401@grandegger.com> (raw)
In-Reply-To: <50CF237E.5020409@antcom.de>
On 12/17/2012 02:51 PM, Roland Stigge wrote:
> Hi Wolfgang,
>
> On 12/17/2012 02:32 PM, Roland Stigge wrote:
>> And I guess Russell is right: If possible, we should write outputs
>> simultaneously via ODSR (plus OWER/OWDR/OWSR) instead of separate set/clear.
>>
>> I wonder if we need to save/restore the state of OWSR at every write
>> operation or if we need/can cache it. Assuming that block GPIO are the
>> only code in the kernel that manipulates ODSR.
>
> Can you please test the following:
>
> +static void at91_gpiolib_set_block(struct gpio_chip *chip, unsigned long mask, unsigned long val)
> +{
> + struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip);
> + void __iomem *pio = at91_gpio->regbase;
> +
> + __raw_writel(~mask, pio + PIO_OWDR);
This would also disable normal GPIOs configured for output! From the
manual I understand that if the pin is configured for output, we could
either use PIO_SODR/PIO_CODR to set/clear the bits individually or
PIO_ODSR for synchronous data output. But than we need to care about the
non-block GPIO outputs as well... requiring a read-modify-write cycle :(.
Wolfgang.
next prev parent reply other threads:[~2012-12-17 16:28 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-14 14:26 [PATCH RESEND 0/6 v10] gpio: Add block GPIO Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 14:26 ` [PATCH RESEND 1/6 v10] gpio: Add a block GPIO API to gpiolib Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 14:26 ` [PATCH RESEND 2/6 v10] gpio: Add sysfs support to block GPIO API Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 14:26 ` [PATCH RESEND 3/6 v10] gpio: Add userland device interface to block GPIO Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 14:26 ` [PATCH RESEND 4/6 v10] gpiolib: Fix default attributes for class Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 14:26 ` [PATCH RESEND 5/6 v10] gpio: Add device tree support to block GPIO API Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-17 15:51 ` Mark Rutland
2012-12-17 15:51 ` Mark Rutland
2012-12-18 14:30 ` Roland Stigge
2012-12-18 14:30 ` Roland Stigge
2012-12-18 16:35 ` Mark Rutland
2012-12-18 16:35 ` Mark Rutland
2012-12-14 14:26 ` [PATCH RESEND 6/6 v10] gpio: Add block gpio to several gpio drivers Roland Stigge
2012-12-14 14:26 ` Roland Stigge
2012-12-14 17:58 ` [PATCH RESEND 0/6 v10] gpio: Add block GPIO Wolfgang Grandegger
2012-12-14 17:58 ` Wolfgang Grandegger
2012-12-14 23:49 ` Roland Stigge
2012-12-14 23:49 ` Roland Stigge
2012-12-15 10:51 ` Russell King - ARM Linux
2012-12-15 10:51 ` Russell King - ARM Linux
2012-12-17 11:37 ` Wolfgang Grandegger
2012-12-17 11:37 ` Wolfgang Grandegger
2012-12-17 11:51 ` Wolfgang Grandegger
2012-12-17 11:51 ` Wolfgang Grandegger
2012-12-17 12:10 ` Russell King - ARM Linux
2012-12-17 12:10 ` Russell King - ARM Linux
2012-12-17 14:57 ` Wolfgang Grandegger
2012-12-17 14:57 ` Wolfgang Grandegger
2012-12-17 13:32 ` Roland Stigge
2012-12-17 13:32 ` Roland Stigge
2012-12-17 13:51 ` Roland Stigge
2012-12-17 13:51 ` Roland Stigge
2012-12-17 16:28 ` Wolfgang Grandegger [this message]
2012-12-17 16:28 ` Wolfgang Grandegger
2012-12-17 17:15 ` Roland Stigge
2012-12-17 17:15 ` Roland Stigge
2012-12-17 17:37 ` Wolfgang Grandegger
2012-12-17 17:37 ` Wolfgang Grandegger
2012-12-17 18:02 ` Roland Stigge
2012-12-17 18:02 ` Roland Stigge
2012-12-17 19:47 ` Wolfgang Grandegger
2012-12-17 19:47 ` Wolfgang Grandegger
2012-12-17 21:33 ` Roland Stigge
2012-12-17 21:33 ` Roland Stigge
2012-12-18 6:51 ` Wolfgang Grandegger
2012-12-18 6:51 ` Wolfgang Grandegger
2012-12-18 5:55 ` Jean-Christophe PLAGNIOL-VILLARD
2012-12-18 5:55 ` Jean-Christophe PLAGNIOL-VILLARD
2012-12-18 6:58 ` Wolfgang Grandegger
2012-12-18 6:58 ` Wolfgang Grandegger
2012-12-18 7:54 ` Jean-Christophe PLAGNIOL-VILLARD
2012-12-18 7:54 ` Jean-Christophe PLAGNIOL-VILLARD
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=50CF4838.9000401@grandegger.com \
--to=wg@grandegger.com \
--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.