Skip to content
  • Octavian Purdila's avatar
    ACPI / scan: fix enumeration (visited) flags for bus rescans · 10c7e20b
    Octavian Purdila authored
    
    
    If the ACPI tables change as a result of a dinamically loaded table
    and a bus rescan is required the enumeration/visited flag are not
    consistent.
    
    I2C/SPI are not directly enumerated in acpi_bus_attach(), however
    the visited flag is set. This makes it impossible to check if an
    ACPI device has already been enumerated by the I2C and SPI
    subsystems. To fix this issue we only set the visited flags if
    the device is not I2C or SPI.
    
    With this change we also need to remove setting visited to false
    from acpi_bus_attach(), otherwise if we rescan already enumerated
    I2C/SPI devices we try to re-enumerate them.
    
    Note that I2C/SPI devices can be enumerated either via a scan handler
    (when using PRP0001) or via regular device_attach(). In either case
    the flow goes through acpi_default_enumeration() which makes it the
    ideal place to mark the ACPI device as enumerated.
    
    Signed-off-by: default avatarOctavian Purdila <octavian.purdila@intel.com>
    Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    10c7e20b