All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
To: Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>,
	David Brownell <david-b@pacbell.net>,
	Sam Ravnborg <sam@ravnborg.org>,
	Jean Delvare <khali@linux-fr.org>,
	Eric Miao <eric.miao@marvell.com>,
	Haavard Skinnemoen <hskinnemoen@atmel.com>,
	Philipp Zabel <philipp.zabel@gmail.com>,
	Russell King <rmk@arm.linux.org.uk>,
	Ben Gardner <bgardner@wabtec.com>, Greg KH <greg@kroah.com>,
	linux-arm-kernel@lists.arm.linux.org.uk,
	linux-fbdev-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins
Date: Wed, 26 Nov 2008 11:09:49 +0200	[thread overview]
Message-ID: <492D125D.5010607@teltonika.lt> (raw)
In-Reply-To: <12276535632759-git-send-email-jayakumar.lkml@gmail.com>

Jaya Kumar wrote:
> Beloved friends,
> 
> I would like to request your feedback on the following idea. I hope I have
> made sure to CC all the right people and the right lists! If not, PLEASE
> let me know! I couldn't find a MAINTAINERS entry for gpiolib so I just
> used what I saw in the git log and have also added people and lists that
> I think may be interested.
> 
> This is just an RFC. If you all feel it is looking like the right approach
> then I'll clean it up and make it a patch.
> 
> Thanks,
> jaya
> 
> am300epd was doing 800*600*16*gpio_set_value for each framebuffer transfer
> (it uses 16-pins of gpio as its data bus). I found this caused a wee
> performance limitation. This patch adds an API for gpio_set_value_bus
> which allows users to set batches of consecutive gpio together in a single
> call. I have done a test implementation on gumstix (pxa255) with am300epd
> and it provides a nice improvement in performance.
> 
> Signed-off-by: Jaya Kumar <jayakumar.lkml@gmail.com>
> Cc: David Brownell <dbrownell@users.sourceforge.net>
> Cc: David Brownell <david-b@pacbell.net>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> Cc: Jean Delvare <khali@linux-fr.org>
> Cc: Eric Miao <eric.miao@marvell.com>
> Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
> Cc: Philipp Zabel <philipp.zabel@gmail.com>
> Cc: Russell King <rmk@arm.linux.org.uk>
> Cc: Ben Gardner <bgardner@wabtec.com>
> CC: Greg KH <greg@kroah.com>
> Cc: linux-arm-kernel@lists.arm.linux.org.uk
> Cc: linux-fbdev-devel@lists.sourceforge.net
> Cc: linux-kernel@vger.kernel.org
> 
> ---
>  arch/arm/mach-pxa/am300epd.c          |    9 ++++++
>  arch/arm/mach-pxa/gpio.c              |   28 +++++++++++++++++++++
>  arch/arm/mach-pxa/include/mach/gpio.h |   24 ++++++++++++++++++
>  drivers/gpio/gpiolib.c                |   44 +++++++++++++++++++++++++++++++++
>  include/asm-generic/gpio.h            |    6 ++++
>  5 files changed, 111 insertions(+), 0 deletions(-)
> 

[...]

> diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
> index 81797ec..9747517 100644
> --- a/include/asm-generic/gpio.h
> +++ b/include/asm-generic/gpio.h
> @@ -44,6 +44,8 @@ struct module;
>   *	returns either the value actually sensed, or zero
>   * @direction_output: configures signal "offset" as output, or returns error
>   * @set: assigns output value for signal "offset"
> + * @set_bus: batch assigns output values for consecutive signals starting at
> + *	"offset" with width in bits "bitwidth"
>   * @to_irq: optional hook supporting non-static gpio_to_irq() mappings;
>   *	implementation may not sleep
>   * @dbg_show: optional routine to show contents in debugfs; default code
> @@ -84,6 +86,9 @@ struct gpio_chip {
>  						unsigned offset, int value);
>  	void			(*set)(struct gpio_chip *chip,
>  						unsigned offset, int value);
> +	void			(*set_bus)(struct gpio_chip *chip,
> +						unsigned offset, int values,

I think values should be unsigned

> +						int bitwidth);
>  
>  	int			(*to_irq)(struct gpio_chip *chip,
>  						unsigned offset);
> @@ -124,6 +129,7 @@ extern void gpio_set_value_cansleep(unsigned gpio, int value);
>   */
>  extern int __gpio_get_value(unsigned gpio);
>  extern void __gpio_set_value(unsigned gpio, int value);
> +extern void __gpio_set_value_bus(unsigned gpio, int values, int bitwidth);
>  
>  extern int __gpio_cansleep(unsigned gpio);
>  

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php

WARNING: multiple messages have this Message-ID (diff)
From: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
To: Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>,
	David Brownell <david-b@pacbell.net>,
	Sam Ravnborg <sam@ravnborg.org>,
	Jean Delvare <khali@linux-fr.org>,
	Eric Miao <eric.miao@marvell.com>,
	Haavard Skinnemoen <hskinnemoen@atmel.com>,
	Philipp Zabel <philipp.zabel@gmail.com>,
	Russell King <rmk@arm.linux.org.uk>,
	Ben Gardner <bgardner@wabtec.com>, Greg KH <greg@kroah.com>,
	linux-arm-kernel@lists.arm.linux.org.uk,
	linux-fbdev-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins
Date: Wed, 26 Nov 2008 11:09:49 +0200	[thread overview]
Message-ID: <492D125D.5010607@teltonika.lt> (raw)
In-Reply-To: <12276535632759-git-send-email-jayakumar.lkml@gmail.com>

Jaya Kumar wrote:
> Beloved friends,
> 
> I would like to request your feedback on the following idea. I hope I have
> made sure to CC all the right people and the right lists! If not, PLEASE
> let me know! I couldn't find a MAINTAINERS entry for gpiolib so I just
> used what I saw in the git log and have also added people and lists that
> I think may be interested.
> 
> This is just an RFC. If you all feel it is looking like the right approach
> then I'll clean it up and make it a patch.
> 
> Thanks,
> jaya
> 
> am300epd was doing 800*600*16*gpio_set_value for each framebuffer transfer
> (it uses 16-pins of gpio as its data bus). I found this caused a wee
> performance limitation. This patch adds an API for gpio_set_value_bus
> which allows users to set batches of consecutive gpio together in a single
> call. I have done a test implementation on gumstix (pxa255) with am300epd
> and it provides a nice improvement in performance.
> 
> Signed-off-by: Jaya Kumar <jayakumar.lkml@gmail.com>
> Cc: David Brownell <dbrownell@users.sourceforge.net>
> Cc: David Brownell <david-b@pacbell.net>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> Cc: Jean Delvare <khali@linux-fr.org>
> Cc: Eric Miao <eric.miao@marvell.com>
> Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
> Cc: Philipp Zabel <philipp.zabel@gmail.com>
> Cc: Russell King <rmk@arm.linux.org.uk>
> Cc: Ben Gardner <bgardner@wabtec.com>
> CC: Greg KH <greg@kroah.com>
> Cc: linux-arm-kernel@lists.arm.linux.org.uk
> Cc: linux-fbdev-devel@lists.sourceforge.net
> Cc: linux-kernel@vger.kernel.org
> 
> ---
>  arch/arm/mach-pxa/am300epd.c          |    9 ++++++
>  arch/arm/mach-pxa/gpio.c              |   28 +++++++++++++++++++++
>  arch/arm/mach-pxa/include/mach/gpio.h |   24 ++++++++++++++++++
>  drivers/gpio/gpiolib.c                |   44 +++++++++++++++++++++++++++++++++
>  include/asm-generic/gpio.h            |    6 ++++
>  5 files changed, 111 insertions(+), 0 deletions(-)
> 

[...]

> diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
> index 81797ec..9747517 100644
> --- a/include/asm-generic/gpio.h
> +++ b/include/asm-generic/gpio.h
> @@ -44,6 +44,8 @@ struct module;
>   *	returns either the value actually sensed, or zero
>   * @direction_output: configures signal "offset" as output, or returns error
>   * @set: assigns output value for signal "offset"
> + * @set_bus: batch assigns output values for consecutive signals starting at
> + *	"offset" with width in bits "bitwidth"
>   * @to_irq: optional hook supporting non-static gpio_to_irq() mappings;
>   *	implementation may not sleep
>   * @dbg_show: optional routine to show contents in debugfs; default code
> @@ -84,6 +86,9 @@ struct gpio_chip {
>  						unsigned offset, int value);
>  	void			(*set)(struct gpio_chip *chip,
>  						unsigned offset, int value);
> +	void			(*set_bus)(struct gpio_chip *chip,
> +						unsigned offset, int values,

I think values should be unsigned

> +						int bitwidth);
>  
>  	int			(*to_irq)(struct gpio_chip *chip,
>  						unsigned offset);
> @@ -124,6 +129,7 @@ extern void gpio_set_value_cansleep(unsigned gpio, int value);
>   */
>  extern int __gpio_get_value(unsigned gpio);
>  extern void __gpio_set_value(unsigned gpio, int value);
> +extern void __gpio_set_value_bus(unsigned gpio, int values, int bitwidth);
>  
>  extern int __gpio_cansleep(unsigned gpio);
>  

  parent reply	other threads:[~2008-11-26  9:09 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-25 22:52 [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins Jaya Kumar
2008-11-25 22:52 ` Jaya Kumar
2008-11-26  1:20 ` Eric Miao
2008-11-26  3:27   ` Jaya Kumar
2008-11-26  4:15   ` David Brownell
2008-11-26  5:51     ` Jaya Kumar
2008-11-27 20:01       ` Sam Ravnborg
2008-11-27 23:43         ` Jaya Kumar
2008-11-28  5:47           ` Sam Ravnborg
2008-11-29 22:48         ` David Brownell
2008-11-29 23:33           ` Jaya Kumar
2008-11-29 22:54       ` David Brownell
2008-11-29 22:54         ` David Brownell
2008-11-29 23:52         ` Jaya Kumar
2008-11-30 17:55           ` David Brownell
2008-12-01  1:10             ` Jaya Kumar
2008-12-27 14:55               ` Jaya Kumar
2008-12-28 18:46                 ` Robin Getz
2008-12-28 22:00                   ` Ben Nizette
2008-12-29  0:28                     ` Jaya Kumar
2008-12-29 20:32                       ` David Brownell
2008-12-29 19:59                     ` David Brownell
2009-01-06 23:02                     ` Robin Getz
2009-01-07  1:52                       ` Ben Nizette
2008-12-29 19:56                   ` David Brownell
2008-12-30  0:20                     ` Jamie Lokier
2008-12-30  0:43                       ` David Brownell
2008-12-31  4:55                     ` Robin Getz
2008-12-31  4:58                       ` Jaya Kumar
2008-12-31  5:02                         ` Jaya Kumar
2008-12-31 17:38                         ` Robin Getz
2008-12-31 18:05                           ` Jaya Kumar
2009-01-06 22:41                             ` Robin Getz
2009-01-10  7:37                               ` Jaya Kumar
2008-12-29 19:32                 ` David Brownell
2008-12-30 15:45                   ` Jaya Kumar
2008-12-29 19:06               ` David Brownell
2008-11-26  9:09 ` Paulius Zaleckas [this message]
2008-11-26  9:09   ` Paulius Zaleckas
2008-11-26  9:18   ` Jaya Kumar
2008-11-26 10:08     ` [Linux-fbdev-devel] " Geert Uytterhoeven
2008-11-26 10:25       ` Jaya Kumar
2008-11-26 12:08         ` Geert Uytterhoeven
2008-11-29 22:47     ` David Brownell
2008-11-29 23:04       ` Jaya Kumar
2008-11-30  3:27         ` David Brownell

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=492D125D.5010607@teltonika.lt \
    --to=paulius.zaleckas@teltonika.lt \
    --cc=bgardner@wabtec.com \
    --cc=david-b@pacbell.net \
    --cc=dbrownell@users.sourceforge.net \
    --cc=eric.miao@marvell.com \
    --cc=greg@kroah.com \
    --cc=hskinnemoen@atmel.com \
    --cc=jayakumar.lkml@gmail.com \
    --cc=khali@linux-fr.org \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-fbdev-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=philipp.zabel@gmail.com \
    --cc=rmk@arm.linux.org.uk \
    --cc=sam@ravnborg.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.