• Rafael J. Wysocki's avatar
    ACPI / scan: Add bind/unbind callbacks to struct acpi_scan_handler · 9cb32acf
    Rafael J. Wysocki authored
    In some cases it may be necessary to perform certain setup/cleanup
    operations on a device object representing a physical device after
    it has been associated with an ACPI companion by acpi_bind_one() or
    before disassociating it from that companion by acpi_unbind_one(),
    respectively.  If there is a struct acpi_bus_type object for the
    given device's bus type, the .setup()/.cleanup() callbacks from there
    are executed for these purposes.  However, an analogous mechanism will
    be necessary for devices whose bus types don't have corresponding
    struct acpi_bus_type objects and that have specific ACPI scan handlers.
    
    For those devices, add new .bind() and .unbind() callbacks to struct
    acpi_scan_handler that will be executed by acpi_platform_notify()
    right after the given device has been associated with an ACPI
    comapnion and by acpi_platform_notify_remove() right before calling
    acpi_unbind_one() for that device, respectively.
    
    To make that work for scan handlers registering new devices in their
    .attach() callbacks, modify acpi_scan_attach_handler() to set the
    ACPI device object's handler field before calling .attach() from the
    scan handler at hand.
    
    This changeset includes a fix from Mika Westerberg.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    9cb32acf
glue.c 8.42 KB