diff options
author | Igor Grinberg <grinberg@compulab.co.il> | 2011-05-04 11:04:55 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2011-06-01 05:25:04 -0400 |
commit | e68273baf30390e9c907831b47384085c7f664d5 (patch) | |
tree | 1ca8c222c6438c474f294190f3992e2985d894fe | |
parent | 03b562d7859c6d7c640f071b422d521146471d6d (diff) |
arm: omap2plus: fix ads7846 pendown gpio request
introduced by: 96974a24
(omap: consolidate touch screen initialization among different boards)
ads7846 driver can use either gpio_pendown or get_pendown_state()
callback. In case of gpio_pendown, it requests the provided gpio_pendown
thus resulting in double requesting that gpio:
ads7846 spi1.0: failed to request pendown GPIO57
ads7846: probe of spi1.0 failed with error -16
Fix this by restricting the gpio request to the case of
get_pendown_state() callback is used.
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Tested-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r-- | arch/arm/mach-omap2/common-board-devices.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/mach-omap2/common-board-devices.c b/arch/arm/mach-omap2/common-board-devices.c index e94903b2c65b..94ccf464677b 100644 --- a/arch/arm/mach-omap2/common-board-devices.c +++ b/arch/arm/mach-omap2/common-board-devices.c | |||
@@ -85,17 +85,17 @@ void __init omap_ads7846_init(int bus_num, int gpio_pendown, int gpio_debounce, | |||
85 | struct spi_board_info *spi_bi = &ads7846_spi_board_info; | 85 | struct spi_board_info *spi_bi = &ads7846_spi_board_info; |
86 | int err; | 86 | int err; |
87 | 87 | ||
88 | err = gpio_request(gpio_pendown, "TS PenDown"); | 88 | if (board_pdata && board_pdata->get_pendown_state) { |
89 | if (err) { | 89 | err = gpio_request_one(gpio_pendown, GPIOF_IN, "TSPenDown"); |
90 | pr_err("Could not obtain gpio for TS PenDown: %d\n", err); | 90 | if (err) { |
91 | return; | 91 | pr_err("Couldn't obtain gpio for TSPenDown: %d\n", err); |
92 | } | 92 | return; |
93 | 93 | } | |
94 | gpio_direction_input(gpio_pendown); | 94 | gpio_export(gpio_pendown, 0); |
95 | gpio_export(gpio_pendown, 0); | ||
96 | 95 | ||
97 | if (gpio_debounce) | 96 | if (gpio_debounce) |
98 | gpio_set_debounce(gpio_pendown, gpio_debounce); | 97 | gpio_set_debounce(gpio_pendown, gpio_debounce); |
98 | } | ||
99 | 99 | ||
100 | ads7846_config.gpio_pendown = gpio_pendown; | 100 | ads7846_config.gpio_pendown = gpio_pendown; |
101 | 101 | ||