#include <linux/wakelock.h>
#include <linux/workqueue.h>
#include <linux/interrupt.h>
+#include <linux/irq.h>
#include <linux/gpio.h>
#include <mach/board.h>
{
int ret;
int irq = gpio_to_irq(detect_gpio);
- unsigned long flags;
+ unsigned int type;
rk28_send_wakeup_key();
- free_irq(irq, NULL);
- flags = gpio_get_value(detect_gpio) ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING;
- ret = request_irq(irq, usb_detect_irq_handler, flags, "usb_detect", NULL);
+ type = gpio_get_value(detect_gpio) ? IRQ_TYPE_EDGE_FALLING : IRQ_TYPE_EDGE_RISING;
+ ret = irq_set_irq_type(irq, type);
if (ret < 0) {
- pr_err("%s: request_irq(%d) failed\n", __func__, irq);
+ pr_err("%s: irq_set_irq_type(%d, %d) failed\n", __func__, irq, type);
}
}
return IRQ_HANDLED;
}
-int board_usb_detect_init(unsigned gpio)
+int __init board_usb_detect_init(unsigned gpio)
{
int ret;
int irq = gpio_to_irq(gpio);