Page MenuHomeFreeBSD

acpi_cousin_intr: Add cousin interrupt mechanism for x86
Needs ReviewPublic

Authored by obiwac on Tue, Sep 15, 12:46 AM.
Tags
None
Referenced Files
F172323260: D59683.id186739.diff
Thu, Sep 17, 5:48 PM
F172213543: D59683.diff
Wed, Sep 16, 10:04 PM
Unknown Object (File)
Tue, Sep 15, 5:38 AM
Unknown Object (File)
Tue, Sep 15, 5:36 AM
Unknown Object (File)
Tue, Sep 15, 1:08 AM
Unknown Object (File)
Tue, Sep 15, 12:59 AM

Details

Reviewers
aokblast
Summary

On x86, INTRNG is not available so devices cannot consume interrupts
from sources that are not their parent in the device tree (e.g. I2C
touchpads on some laptops, which consume interrupts from a GPIO
controller which is not a direct ascendant in the device tree).

Add a simple request/provide mechanism as a stopgap (a.k.a. permanent)
solution:

  • Consumers call acpi_cousin_intr_req() during attach to advertise they need an interrupt source.
  • Providers call acpi_cousin_intr_provide() with the ACPI handle of the consumer to match requests and invoke setup callbacks.
  • acpi_cousin_intr_trigger() dispatches interrupts to all registered consumers.

All guarded by x86_64 since ARM platforms should use INTRNG instead.

Sponsored by: The FreeBSD Foundation

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 76909
Build 73792: arc lint + arc unit