Commit cfee47f9 authored by Len Brown's avatar Len Brown

Pull bugfix into test branch

Conflicts:

	kernel/power/disk.c
parents 7e244322 9185cfa9
...@@ -48,7 +48,7 @@ struct dock_station { ...@@ -48,7 +48,7 @@ struct dock_station {
unsigned long last_dock_time; unsigned long last_dock_time;
u32 flags; u32 flags;
spinlock_t dd_lock; spinlock_t dd_lock;
spinlock_t hp_lock; struct mutex hp_lock;
struct list_head dependent_devices; struct list_head dependent_devices;
struct list_head hotplug_devices; struct list_head hotplug_devices;
}; };
...@@ -118,9 +118,9 @@ static void ...@@ -118,9 +118,9 @@ static void
dock_add_hotplug_device(struct dock_station *ds, dock_add_hotplug_device(struct dock_station *ds,
struct dock_dependent_device *dd) struct dock_dependent_device *dd)
{ {
spin_lock(&ds->hp_lock); mutex_lock(&ds->hp_lock);
list_add_tail(&dd->hotplug_list, &ds->hotplug_devices); list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
spin_unlock(&ds->hp_lock); mutex_unlock(&ds->hp_lock);
} }
/** /**
...@@ -134,9 +134,9 @@ static void ...@@ -134,9 +134,9 @@ static void
dock_del_hotplug_device(struct dock_station *ds, dock_del_hotplug_device(struct dock_station *ds,
struct dock_dependent_device *dd) struct dock_dependent_device *dd)
{ {
spin_lock(&ds->hp_lock); mutex_lock(&ds->hp_lock);
list_del(&dd->hotplug_list); list_del(&dd->hotplug_list);
spin_unlock(&ds->hp_lock); mutex_unlock(&ds->hp_lock);
} }
/** /**
...@@ -299,7 +299,7 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event) ...@@ -299,7 +299,7 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
{ {
struct dock_dependent_device *dd; struct dock_dependent_device *dd;
spin_lock(&ds->hp_lock); mutex_lock(&ds->hp_lock);
/* /*
* First call driver specific hotplug functions * First call driver specific hotplug functions
...@@ -321,7 +321,7 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event) ...@@ -321,7 +321,7 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
else else
dock_create_acpi_device(dd->handle); dock_create_acpi_device(dd->handle);
} }
spin_unlock(&ds->hp_lock); mutex_unlock(&ds->hp_lock);
} }
static void dock_event(struct dock_station *ds, u32 event, int num) static void dock_event(struct dock_station *ds, u32 event, int num)
...@@ -681,7 +681,7 @@ static int dock_add(acpi_handle handle) ...@@ -681,7 +681,7 @@ static int dock_add(acpi_handle handle)
INIT_LIST_HEAD(&dock_station->dependent_devices); INIT_LIST_HEAD(&dock_station->dependent_devices);
INIT_LIST_HEAD(&dock_station->hotplug_devices); INIT_LIST_HEAD(&dock_station->hotplug_devices);
spin_lock_init(&dock_station->dd_lock); spin_lock_init(&dock_station->dd_lock);
spin_lock_init(&dock_station->hp_lock); mutex_init(&dock_station->hp_lock);
ATOMIC_INIT_NOTIFIER_HEAD(&dock_notifier_list); ATOMIC_INIT_NOTIFIER_HEAD(&dock_notifier_list);
/* initialize platform device stuff */ /* initialize platform device stuff */
......
...@@ -60,9 +60,11 @@ static void power_down(suspend_disk_method_t mode) ...@@ -60,9 +60,11 @@ static void power_down(suspend_disk_method_t mode)
{ {
switch(mode) { switch(mode) {
case PM_DISK_PLATFORM: case PM_DISK_PLATFORM:
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK); if (pm_ops && pm_ops->enter) {
pm_ops->enter(PM_SUSPEND_DISK); kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
break; pm_ops->enter(PM_SUSPEND_DISK);
break;
}
case PM_DISK_SHUTDOWN: case PM_DISK_SHUTDOWN:
kernel_power_off(); kernel_power_off();
break; break;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
DEFINE_MUTEX(pm_mutex); DEFINE_MUTEX(pm_mutex);
struct pm_ops *pm_ops; struct pm_ops *pm_ops;
suspend_disk_method_t pm_disk_mode = PM_DISK_SHUTDOWN; suspend_disk_method_t pm_disk_mode = PM_DISK_PLATFORM;
/** /**
* pm_set_ops - Set the global power method table. * pm_set_ops - Set the global power method table.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment