diff options
-rw-r--r-- | drivers/base/core.c | 20 | ||||
-rw-r--r-- | drivers/base/power/Makefile | 1 | ||||
-rw-r--r-- | drivers/base/power/shutdown.c | 43 |
3 files changed, 19 insertions, 45 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index d2de2d59af42..b3a931fe6b16 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -1415,5 +1415,23 @@ out: | |||
1415 | put_device(dev); | 1415 | put_device(dev); |
1416 | return error; | 1416 | return error; |
1417 | } | 1417 | } |
1418 | |||
1419 | EXPORT_SYMBOL_GPL(device_move); | 1418 | EXPORT_SYMBOL_GPL(device_move); |
1419 | |||
1420 | /** | ||
1421 | * device_shutdown - call ->shutdown() on each device to shutdown. | ||
1422 | */ | ||
1423 | void device_shutdown(void) | ||
1424 | { | ||
1425 | struct device * dev, *devn; | ||
1426 | |||
1427 | list_for_each_entry_safe_reverse(dev, devn, &devices_kset->list, | ||
1428 | kobj.entry) { | ||
1429 | if (dev->bus && dev->bus->shutdown) { | ||
1430 | dev_dbg(dev, "shutdown\n"); | ||
1431 | dev->bus->shutdown(dev); | ||
1432 | } else if (dev->driver && dev->driver->shutdown) { | ||
1433 | dev_dbg(dev, "shutdown\n"); | ||
1434 | dev->driver->shutdown(dev); | ||
1435 | } | ||
1436 | } | ||
1437 | } | ||
diff --git a/drivers/base/power/Makefile b/drivers/base/power/Makefile index 44504e6618fb..06a86fe6a78d 100644 --- a/drivers/base/power/Makefile +++ b/drivers/base/power/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | obj-y := shutdown.o | ||
2 | obj-$(CONFIG_PM) += sysfs.o | 1 | obj-$(CONFIG_PM) += sysfs.o |
3 | obj-$(CONFIG_PM_SLEEP) += main.o | 2 | obj-$(CONFIG_PM_SLEEP) += main.o |
4 | obj-$(CONFIG_PM_TRACE) += trace.o | 3 | obj-$(CONFIG_PM_TRACE) += trace.o |
diff --git a/drivers/base/power/shutdown.c b/drivers/base/power/shutdown.c deleted file mode 100644 index 5b6bc168ffba..000000000000 --- a/drivers/base/power/shutdown.c +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | /* | ||
2 | * shutdown.c - power management functions for the device tree. | ||
3 | * | ||
4 | * Copyright (c) 2002-3 Patrick Mochel | ||
5 | * 2002-3 Open Source Development Lab | ||
6 | * | ||
7 | * This file is released under the GPLv2 | ||
8 | * | ||
9 | */ | ||
10 | |||
11 | #include <linux/device.h> | ||
12 | #include <asm/semaphore.h> | ||
13 | |||
14 | #include "../base.h" | ||
15 | |||
16 | /** | ||
17 | * We handle system devices differently - we suspend and shut them | ||
18 | * down last and resume them first. That way, we don't do anything stupid like | ||
19 | * shutting down the interrupt controller before any devices.. | ||
20 | * | ||
21 | * Note that there are not different stages for power management calls - | ||
22 | * they only get one called once when interrupts are disabled. | ||
23 | */ | ||
24 | |||
25 | |||
26 | /** | ||
27 | * device_shutdown - call ->shutdown() on each device to shutdown. | ||
28 | */ | ||
29 | void device_shutdown(void) | ||
30 | { | ||
31 | struct device * dev, *devn; | ||
32 | |||
33 | list_for_each_entry_safe_reverse(dev, devn, &devices_kset->list, | ||
34 | kobj.entry) { | ||
35 | if (dev->bus && dev->bus->shutdown) { | ||
36 | dev_dbg(dev, "shutdown\n"); | ||
37 | dev->bus->shutdown(dev); | ||
38 | } else if (dev->driver && dev->driver->shutdown) { | ||
39 | dev_dbg(dev, "shutdown\n"); | ||
40 | dev->driver->shutdown(dev); | ||
41 | } | ||
42 | } | ||
43 | } | ||