From: Pavel Machek <pavel@ucw.cz>

While fixing usb, I stomped on a few more fixes. Print error when some
device fails to power down, and 2 is no longer valid state to pass in
pm_message_t.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/base/power/suspend.c |    2 ++
 25-akpm/drivers/ide/ide-disk.c       |    2 +-
 25-akpm/drivers/pci/pci.c            |   14 ++++++++------
 3 files changed, 11 insertions(+), 7 deletions(-)

diff -puN drivers/base/power/suspend.c~more-pm_message_t-fixes drivers/base/power/suspend.c
--- 25/drivers/base/power/suspend.c~more-pm_message_t-fixes	2005-03-20 16:51:45.000000000 -0800
+++ 25-akpm/drivers/base/power/suspend.c	2005-03-20 16:51:45.000000000 -0800
@@ -134,6 +134,8 @@ int device_power_down(pm_message_t state
  Done:
 	return error;
  Error:
+	printk(KERN_ERR "Could not power down device %s: "
+		"error %d\n", kobject_name(&dev->kobj), error);
 	dpm_power_up();
 	goto Done;
 }
diff -puN drivers/ide/ide-disk.c~more-pm_message_t-fixes drivers/ide/ide-disk.c
--- 25/drivers/ide/ide-disk.c~more-pm_message_t-fixes	2005-03-20 16:51:45.000000000 -0800
+++ 25-akpm/drivers/ide/ide-disk.c	2005-03-20 16:51:45.000000000 -0800
@@ -1082,7 +1082,7 @@ static void ide_device_shutdown(struct d
 	}
 
 	printk("Shutdown: %s\n", drive->name);
-	dev->bus->suspend(dev, PM_SUSPEND_STANDBY);
+	dev->bus->suspend(dev, PMSG_SUSPEND);
 }
 
 /*
diff -puN drivers/pci/pci.c~more-pm_message_t-fixes drivers/pci/pci.c
--- 25/drivers/pci/pci.c~more-pm_message_t-fixes	2005-03-20 16:51:45.000000000 -0800
+++ 25-akpm/drivers/pci/pci.c	2005-03-20 16:53:34.000000000 -0800
@@ -362,14 +362,15 @@ pci_set_power_state(struct pci_dev *dev,
 /**
  * pci_choose_state - Choose the power state of a PCI device
  * @dev: PCI device to be suspended
- * @state: target sleep state for the whole system
+ * @state: target sleep state for the whole system. This is the value
+ *	that is passed to suspend() function.
  *
  * Returns PCI power state suitable for given device and given system
  * message.
  */
-int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state) = NULL;
+int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state);
 
-pci_power_t pci_choose_state(struct pci_dev *dev, u32 state)
+pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state)
 {
 	int	ret;
 	if (!pci_find_capability(dev, PCI_CAP_ID_PM))
@@ -381,10 +382,11 @@ pci_power_t pci_choose_state(struct pci_
 			state = ret;
 	}
 	switch (state) {
-	case 0:	return PCI_D0;
-	case 2: return PCI_D2;
+	case 0: return PCI_D0;
 	case 3: return PCI_D3hot;
-	default: BUG();
+	default:
+		printk("They asked me for state %d\n", state);
+		BUG();
 	}
 	return PCI_D0;
 }
_