微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux 内核更新后设备的 IRQ 中断

如何解决Linux 内核更新后设备的 IRQ 中断

从 3.18.31 内核升级到 3.18.71 内核以启动适用于我的设备(msm8953,股票 - Nougat)的 Android Oreo 后,cs35l35 驱动程序中的 IRQ 已损坏。升级之前,IRQ 只处理了 3-4 次,但现在可以在 5 分钟内处理 >10k 次。我曾尝试使用 IRQ 查看 sound/soc/codecs 中的其他驱动程序,但它们具有几乎相同的代码注册 IRQ 处理程序。

此外,在日志中出现 E irq 97 : nobody cared (try booting with the "irqpoll" option) 消息后,IRQ 处理程序不再工作。我查看了 /proc/interrupts 并且 cs35l35 IRQ 是 97。

GPIO 中断引脚连接到 gpio90,下拉。

IRQ 处理程序注册代码

    cs35l35->irq_gpio = devm_gpiod_get_optional(&i2c_client->dev,"irq",GPIOD_IN);
    if (IS_ERR(cs35l35->irq_gpio))
        return PTR_ERR(cs35l35->irq_gpio);

    ret = devm_request_threaded_irq(&i2c_client->dev,gpiod_to_irq(cs35l35->irq_gpio),NULL,cs35l35_irq,IRQF_OnesHOT | IRQF_TRIGGER_LOW,"cs35l35",cs35l35);
    if (ret != 0) {
        dev_err(&i2c_client->dev,"Failed to request IRQ: %d\n",ret);
        goto err;
    }

任何其他代码都可以在 https://github.com/meizucustoms/android_kernel_meizu_m1721 (branch lineage-15.1-rebase) 找到。 cs35l35.c - https://github.com/meizucustoms/android_kernel_meizu_m1721/blob/lineage-15.1-rebase/sound/soc/codecs/cs35l35.c

那么,我该如何解决这个问题?感谢您的帮助:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。