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,
next prev 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).