diff options
| author | Andrew Clayton <andrew@digital-domain.net> | 2010-02-11 02:18:05 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-02-11 02:19:48 -0500 |
| commit | 5deeac99fe1146532eb7c64f9adb17d17628d751 (patch) | |
| tree | 06eb8fb3bc111caa5c0b6a3bfd47d5953d3094d1 | |
| parent | 8f8be2439cd368cc6ba94888919ee90b5a26f0cb (diff) | |
Input: rotary-encoder - set gpio direction 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>
Signed-off-by: Mark Somerville <mark@scottishclimbs.com>
Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
| -rw-r--r-- | drivers/input/misc/rotary_encoder.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c index 3b9f588fc747..4ae07935985e 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) | |||
| 152 | goto exit_unregister_input; | 152 | goto exit_unregister_input; |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | err = gpio_direction_input(pdata->gpio_a); | ||
| 156 | if (err) { | ||
| 157 | dev_err(&pdev->dev, "unable to set GPIO %d for input\n", | ||
| 158 | pdata->gpio_a); | ||
| 159 | goto exit_unregister_input; | ||
| 160 | } | ||
| 161 | |||
| 155 | err = gpio_request(pdata->gpio_b, DRV_NAME); | 162 | err = gpio_request(pdata->gpio_b, DRV_NAME); |
| 156 | if (err) { | 163 | if (err) { |
| 157 | dev_err(&pdev->dev, "unable to request GPIO %d\n", | 164 | dev_err(&pdev->dev, "unable to request GPIO %d\n", |
| @@ -159,6 +166,13 @@ static int __devinit rotary_encoder_probe(struct platform_device *pdev) | |||
| 159 | goto exit_free_gpio_a; | 166 | goto exit_free_gpio_a; |
| 160 | } | 167 | } |
| 161 | 168 | ||
| 169 | err = gpio_direction_input(pdata->gpio_b); | ||
| 170 | if (err) { | ||
| 171 | dev_err(&pdev->dev, "unable to set GPIO %d for input\n", | ||
| 172 | pdata->gpio_b); | ||
| 173 | goto exit_free_gpio_a; | ||
| 174 | } | ||
| 175 | |||
| 162 | /* request the IRQs */ | 176 | /* request the IRQs */ |
| 163 | err = request_irq(encoder->irq_a, &rotary_encoder_irq, | 177 | err = request_irq(encoder->irq_a, &rotary_encoder_irq, |
| 164 | IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE, | 178 | IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE, |
