spi / ACPI: add support for ACPI reconfigure notifications
authorOctavian Purdila <octavian.purdila@intel.com>
Fri, 8 Jul 2016 16:13:11 +0000 (19:13 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 8 Jul 2016 19:52:35 +0000 (21:52 +0200)
commit7f24467f3b357ab6abc146c47fcedd7d57a189b6
treef10e4517ba422e4ed292c13609fc599fb03bb722
parent525e6fabeae286848592363bda13bc34b59bb5ac
spi / ACPI: add support for ACPI reconfigure notifications

This patch adds supports for SPI device enumeration and removal via
ACPI reconfiguration notifications that are send as a result of an
ACPI table load or unload operation.

The code is very similar with the device tree reconfiguration code
with only small differences in the way we test and set the enumerated
state of the device:

 * the equivalent of device tree's OF_POPULATED flag is the
   flags.visited field in the ACPI device and the following wrappers
   are used to manipulate it: acpi_device_enumerated(),
   acpi_device_set_enumerated() and acpi_device_clear_enumerated()

 * the device tree code checks of status of the OF_POPULATED flag to
   avoid trying to create duplicate Linux devices in two places: once
   when the controller is probed, and once when the reconfigure event
   is received; in the ACPI code the check is performed only once when
   the ACPI namespace is searched because this code path is invoked in
   both of the two mentioned cases

The rest of the enumeration handling is similar with device tree: when
the Linux device is unregistered the ACPI device is marked as not
enumerated; also, when a device remove notification is received we
check that the device is in the enumerated state before continuing
with the removal of the Linux device.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/spi/spi.c