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 /drivers/input | |
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>
Diffstat (limited to 'drivers/input')
-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, |