• Jarkko Nikula's avatar
    ACPI / scan: Fix enumeration for special SPI and I2C devices · e4330d8b
    Jarkko Nikula authored
    Commit f406270b ("ACPI / scan: Set the visited flag for all
    enumerated devices") caused that two group of special SPI or I2C
    devices do not enumerate. SPI and I2C devices are expected to be
    enumerated by the SPI and I2C subsystems but change caused that
    acpi_bus_attach() marks those devices with acpi_device_set_enumerated().
    
    First group of devices are matched using Device Tree compatible property
    with special _HID "PRP0001". Those devices have matched scan handler,
    acpi_scan_attach_handler() retuns 1 and acpi_bus_attach() marks them
    with acpi_device_set_enumerated().
    
    Second group of devices without valid _HID such as "LNXVIDEO" have
    device->pnp.type.platform_id set to zero and change again marks them
    with acpi_device_set_enumerated().
    
    Fix this by flagging the SPI and I2C devices during struct acpi_device
    object initialization time and let the code in acpi_bus_attach() to go
    through the device_attach() and acpi_default_enumeration() path for all
    SPI and I2C devices.
    
    Fixes: f406270b (ACPI / scan: Set the visited flag for all enumerated devices)
    Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
    Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Cc: 4.11+ <stable@vger.kernel.org> # 4.11+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e4330d8b
scan.c 54 KB