arm: bootm: Add dm_remove_devices_flags() call to announce_and_cleanup()
authorStefan Roese <sr@denx.de>
Mon, 20 Mar 2017 11:51:50 +0000 (12:51 +0100)
committerSimon Glass <sjg@chromium.org>
Wed, 5 Apr 2017 02:15:10 +0000 (20:15 -0600)
This patch adds a call to dm_remove_devices_flags() to
announce_and_cleanup() so that drivers that have one of the removal flags
set (e.g. DM_FLAG_ACTIVE_DMA_REMOVE) in their driver struct, may do some
last-stage cleanup before the OS is started.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/lib/bootm.c

index 8125cf023f5ee96ded00a2e6c65a2e988348d0be..426bee6da577bc3f55b2df583607bc60da9d758e 100644 (file)
@@ -14,6 +14,8 @@
 
 #include <common.h>
 #include <command.h>
+#include <dm/device.h>
+#include <dm/root.h>
 #include <image.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
@@ -91,6 +93,13 @@ static void announce_and_cleanup(int fake)
 
        board_quiesce_devices();
 
+       /*
+        * Call remove function of all devices with a removal flag set.
+        * This may be useful for last-stage operations, like cancelling
+        * of DMA operation or releasing device internal buffers.
+        */
+       dm_remove_devices_flags(DM_REMOVE_ACTIVE_ALL);
+
        cleanup_before_linux();
 }