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>
This commit is contained in:
parent
8040dd09c2
commit
e9c9fc2315
|
@ -20,6 +20,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <mach/hardware.h>
|
||||
|
||||
MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
|
||||
|
@ -36,14 +37,11 @@ static void ixp4xx_spkr_control(unsigned int pin, unsigned int count)
|
|||
spin_lock_irqsave(&beep_lock, flags);
|
||||
|
||||
if (count) {
|
||||
gpio_line_config(pin, IXP4XX_GPIO_OUT);
|
||||
gpio_line_set(pin, IXP4XX_GPIO_LOW);
|
||||
|
||||
gpio_direction_output(pin, 0);
|
||||
*IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
|
||||
} else {
|
||||
gpio_line_config(pin, IXP4XX_GPIO_IN);
|
||||
gpio_line_set(pin, IXP4XX_GPIO_HIGH);
|
||||
|
||||
gpio_direction_output(pin, 1);
|
||||
gpio_direction_input(pin);
|
||||
*IXP4XX_OSRT2 = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue