mfd: make mfd_remove_devices() iterate in reverse order
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 27 Jul 2015 15:04:01 +0000 (18:04 +0300)
committerLee Jones <lee.jones@linaro.org>
Tue, 28 Jul 2015 07:50:43 +0000 (08:50 +0100)
The newly introduced device_for_each_child_reverse() would be used when MFD
core removes the device.

After this patch applied the devices will be removed in a reversed order. This
behaviour is useful when devices have implicit dependency on order, i.e.
consider MFD device with serial bus controller, such as SPI, and DMA IP that is
attached to serial bus controller: before remove the DMA driver we have to be
ensured that no DMA transfers is ongoing and the requested channel are unused.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/mfd-core.c

index 14fd5cbcf0f2db27dbbea8378889addf4b2bb757..c17635d3e5048418f9758eb37290b4cda282e1e4 100644 (file)
@@ -302,7 +302,7 @@ void mfd_remove_devices(struct device *parent)
 {
        atomic_t *cnts = NULL;
 
-       device_for_each_child(parent, &cnts, mfd_remove_devices_fn);
+       device_for_each_child_reverse(parent, &cnts, mfd_remove_devices_fn);
        kfree(cnts);
 }
 EXPORT_SYMBOL(mfd_remove_devices);