mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
Pull bugfix into test branch
Conflicts: kernel/power/disk.c
This commit is contained in:
commit
cfee47f99b
3 changed files with 14 additions and 12 deletions
|
@ -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
|
||||||
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
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
switch(mode) {
|
switch(mode) {
|
||||||
case PM_DISK_PLATFORM:
|
case PM_DISK_PLATFORM:
|
||||||
|
if (pm_ops && pm_ops->enter) {
|
||||||
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
|
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
|
||||||
pm_ops->enter(PM_SUSPEND_DISK);
|
pm_ops->enter(PM_SUSPEND_DISK);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case PM_DISK_SHUTDOWN:
|
case PM_DISK_SHUTDOWN:
|
||||||
kernel_power_off();
|
kernel_power_off();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue