aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/misc/ixp4xx-beeper.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2013-09-10 06:53:03 -0400
committerLinus Walleij <linus.walleij@linaro.org>2013-09-27 08:15:14 -0400
commite9c9fc2315ad7a57af1a5124ad911870b60d9bd0 (patch)
treedb8d7fa11a76186b4a978cefe437d7b4bc6d447f /drivers/input/misc/ixp4xx-beeper.c
parent8040dd09c2ca7e70daf84f040beb3ced9602fce5 (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.c12
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
25MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); 26MODULE_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