diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2013-09-10 06:53:03 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-09-27 08:15:14 -0400 |
commit | e9c9fc2315ad7a57af1a5124ad911870b60d9bd0 (patch) | |
tree | db8d7fa11a76186b4a978cefe437d7b4bc6d447f /drivers/input/misc/ixp4xx-beeper.c | |
parent | 8040dd09c2ca7e70daf84f040beb3ced9602fce5 (diff) |
input: misc: ixp4-beeper: switch to use gpiolib
The platform using this beeper has support for gpiolib, so there
is no point to use the custom gpio_line* API. A strange ambiguity
where a line was first set as input and then driven high was
solved by first driving the line high as output and then switch
it to input.
Cc: Imre Kaloz <kaloz@openwrt.org>
Cc: Alexandre Courbot <acourbot@nvidia.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Krzysztof Halasa <khc@pm.waw.pl>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/input/misc/ixp4xx-beeper.c')
-rw-r--r-- | drivers/input/misc/ixp4xx-beeper.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/input/misc/ixp4xx-beeper.c b/drivers/input/misc/ixp4xx-beeper.c index f34beb228d36..f14afd09e34d 100644 --- a/drivers/input/misc/ixp4xx-beeper.c +++ b/drivers/input/misc/ixp4xx-beeper.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
24 | 25 | ||
25 | MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); | 26 | MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); |
@@ -35,15 +36,12 @@ static void ixp4xx_spkr_control(unsigned int pin, unsigned int count) | |||
35 | 36 | ||
36 | spin_lock_irqsave(&beep_lock, flags); | 37 | spin_lock_irqsave(&beep_lock, flags); |
37 | 38 | ||
38 | if (count) { | 39 | if (count) { |
39 | gpio_line_config(pin, IXP4XX_GPIO_OUT); | 40 | gpio_direction_output(pin, 0); |
40 | gpio_line_set(pin, IXP4XX_GPIO_LOW); | ||
41 | |||
42 | *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; | 41 | *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE; |
43 | } else { | 42 | } else { |
44 | gpio_line_config(pin, IXP4XX_GPIO_IN); | 43 | gpio_direction_output(pin, 1); |
45 | gpio_line_set(pin, IXP4XX_GPIO_HIGH); | 44 | gpio_direction_input(pin); |
46 | |||
47 | *IXP4XX_OSRT2 = 0; | 45 | *IXP4XX_OSRT2 = 0; |
48 | } | 46 | } |
49 | 47 | ||