linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Mack <daniel@caiaq.de>
To: Andrew Clayton <andrew@digital-domain.net>
Cc: linux-input@vger.kernel.org, Mark Somerville <mark@scottishclimbs.com>
Subject: Re: [PATCH] input/misc: rotary-encoder: Set gpio direction
Date: Mon, 8 Feb 2010 23:12:06 +0100	[thread overview]
Message-ID: <20100208221206.GP9007@buzzloop.caiaq.de> (raw)
In-Reply-To: <20100208210350.36f51cbf@digital-domain.net>

On Mon, Feb 08, 2010 at 09:03:50PM +0000, Andrew Clayton wrote:
> While trying to get a rotary encoder working under a beagle board using 
> the drivers/input/misc/rotary-encoder.c driver, we found that even with 
> the right pin mux settings configured through /sys/kernel/debug/omap_mux/*, 
> i.e INPUT_PULLUP and MODE4, the gpio_get_value() functions only ever 
> returned 1.
> 
> By explicitly calling gpio_direction_input() after each requested gpio, 
> the driver started working and started returning correct input events.
>  
> The following is the patch that works for us. What do you think?

Yep, that looks good to me, thanks!

Acked-by: Daniel Mack <daniel@caiaq.de>

> Set the gpio direction to input for each requested gpio.
> 
> Even with the correct pin mux settings, you still need to explicitly 
> set the gpio direction. Call gpio_direction_input() after each 
> requested gpio.
> 
> Signed-off-by: Andrew Clayton <andrew@digital-domain.net>
> ---
> diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
> index 3b9f588..4ae0793 100644
> --- a/drivers/input/misc/rotary_encoder.c
> +++ b/drivers/input/misc/rotary_encoder.c
> @@ -152,6 +152,13 @@ static int __devinit rotary_encoder_probe(struct platform_device *pdev)
>  		goto exit_unregister_input;
>  	}
>  
> +	err = gpio_direction_input(pdata->gpio_a);
> +	if (err) {
> +		dev_err(&pdev->dev, "unable to set GPIO %d for input\n",
> +			pdata->gpio_a);
> +		goto exit_unregister_input;
> +	}
> +
>  	err = gpio_request(pdata->gpio_b, DRV_NAME);
>  	if (err) {
>  		dev_err(&pdev->dev, "unable to request GPIO %d\n",
> @@ -159,6 +166,13 @@ static int __devinit rotary_encoder_probe(struct platform_device *pdev)
>  		goto exit_free_gpio_a;
>  	}
>  
> +	err = gpio_direction_input(pdata->gpio_b);
> +	if (err) {
> +		dev_err(&pdev->dev, "unable to set GPIO %d for input\n",
> +			pdata->gpio_b);
> +		goto exit_free_gpio_a;
> +	}
> +
>  	/* request the IRQs */
>  	err = request_irq(encoder->irq_a, &rotary_encoder_irq,
>  			  IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,

  parent reply	other threads:[~2010-02-08 22:12 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-08 21:03 [PATCH] input/misc: rotary-encoder: Set gpio direction Andrew Clayton
2010-02-08 21:40 ` H Hartley Sweeten
2010-02-08 22:12 ` Daniel Mack [this message]
2010-02-09  0:18   ` Dmitry Torokhov
2010-02-09  1:30     ` Daniel Mack
2010-02-11  7:19       ` Dmitry Torokhov
2010-02-09  0:39 ` Mark Somerville

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=20100208221206.GP9007@buzzloop.caiaq.de \
    --to=daniel@caiaq.de \
    --cc=andrew@digital-domain.net \
    --cc=linux-input@vger.kernel.org \
    --cc=mark@scottishclimbs.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).