驱动中断

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;
}

 

posted @ 2021-04-29 17:52  我爱一次性  阅读(127)  评论(0)    收藏  举报