1.gpio引脚申请
1 ret = gpio_request(linux_gpio, "xxxx_gpio"); //第一个参数是linux内部的gpio编号
2.gpio引脚转成中断io,并返回中断号
1 irq = gpio_to_irq(linux_gpio);
3.注册中断函数
request_irq(data->hpd_irq, NULL,irq_handle_fun,
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING
| IRQF_ONESHOT, "lt8912-hpd-isr", data);
4.中断函数
static irqreturn_t irq_handle_fun(int irq, void *data)
{
struct lt8912_private *pdata = data;
if (gpio_is_valid(pdata->hpd_gpio)) {
int hpd = gpio_get_value(pdata->hpd_gpio);
/* Fixme: do something while hdmi plugin */
}
return IRQ_HANDLED;
}