On Fri, Oct 26, 2012 at 12:42:35PM +0200, Tim Niemeyer wrote: > Am Freitag, den 26.10.2012, 11:03 +0300 schrieb Felipe Balbi: > > Hi, > > > > On Fri, Oct 26, 2012 at 09:55:30AM +0200, Tim Niemeyer wrote: > > > Adds support for configuring the omap-gpio driver use autosuspend for > > > runtime power management. This can reduce the latency in using it by > > > not suspending the device immediately on idle. If another access takes > > > place before the autosuspend timeout (2 secs), the call to resume the > > > device can return immediately saving some save/ restore cycles. > > > > > > I use a gpio to monitor a spi transfer which occurs every 250µs. The > > > suspend overhead is to high, so almost every second transfer is lost. > > > This patch fixes that. > > > > > > Signed-off-by: Tim Niemeyer <tim.niemeyer@xxxxxxxxxxxxx> > > > --- > > > drivers/gpio/gpio-omap.c | 23 ++++++++++++++++++----- > > > 1 files changed, 18 insertions(+), 5 deletions(-) > > > > > > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c > > > index 94cbc84..92f48cb 100644 > > > --- a/drivers/gpio/gpio-omap.c > > > +++ b/drivers/gpio/gpio-omap.c > > > @@ -31,6 +31,7 @@ > > > #include <asm/mach/irq.h> > > > > > > #define OFF_MODE 1 > > > +#define GPIO_AUTOSUSPEND_TIMEOUT 2000 > > > > > > static LIST_HEAD(omap_gpio_list); > > > > > > @@ -628,8 +629,10 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset) > > > * If this is the last gpio to be freed in the bank, > > > * disable the bank module. > > > */ > > > - if (!bank->mod_usage) > > > - pm_runtime_put(bank->dev); > > > + if (!bank->mod_usage) { > > > > while at that I would drop this bank->mod_usage nonsense and let > > power core handle reference counting. > I looked at it, but i'm unsure about the GPIO_MOD_CTRL_BIT. The > bank->mod_usage counter prevents omap_gpio_free() to disable the hole > bank while another gpio is still in use. pm core's usage count will do the same thing. If you request 6 gpios, you will have 6 pm_runtime_get(). If you free 5 of those, you will have 5 pm_runtime_put_autosuspend() which will only decrement the counter and do nothing else. -- balbi
Attachment:
signature.asc
Description: Digital signature