From: Pavel Machek <pavel@ucw.cz>
To: Greg KH <greg@kroah.com>, kernel list <linux-kernel@vger.kernel.org>
Subject: fix u32 vs. pm_message_t in usb
Date: Sat, 2 Apr 2005 23:14:12 +0200 [thread overview]
Message-ID: <20050402211412.GA2069@elf.ucw.cz> (raw)
Hi!
I thought I'm done with fixing u32 vs. pm_message_t ... unfortunately
that turned out not to be the case as Russel King pointed out. Here
are remaining fixes for USB. [These patches are independend and change
no object code; therefore not numbered].
Please apply,
Signed-off-by: Pavel Machek <pavel@suse.cz>
Pavel
--- clean-cvs/drivers/usb/core/hcd-pci.c 2005-03-31 23:34:27.000000000 +0200
+++ linux-cvs/drivers/usb/core/hcd-pci.c 2005-03-31 23:54:47.000000000 +0200
@@ -186,7 +186,7 @@
#ifdef CONFIG_PM
-static char __attribute_used__ *pci_state(u32 state)
+static char __attribute_used__ *pci_state(pci_power_t state)
{
switch (state) {
case 0: return "D0";
@@ -205,11 +205,12 @@
*
* Store this function in the HCD's struct pci_driver as suspend().
*/
-int usb_hcd_pci_suspend (struct pci_dev *dev, u32 state)
+int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t pmsg)
{
struct usb_hcd *hcd;
int retval = 0;
int has_pci_pm;
+ pci_power_t state;
hcd = pci_get_drvdata(dev);
@@ -218,8 +219,10 @@
* PM-sensitive HCDs may already have done this.
*/
has_pci_pm = pci_find_capability(dev, PCI_CAP_ID_PM);
- if (state > 4)
- state = 4;
+
+ state = pci_choose_state(dev, pmsg);
+ if (state > PCI_D3cold)
+ state = PCI_D3cold;
switch (hcd->state) {
@@ -291,9 +294,6 @@
break;
}
- /* update power_state **ONLY** to make sysfs happier */
- if (retval == 0)
- dev->dev.power.power_state = state;
return retval;
}
EXPORT_SYMBOL (usb_hcd_pci_suspend);
@@ -327,7 +327,7 @@
if (has_pci_pm)
pci_set_power_state (dev, 0);
- dev->dev.power.power_state = 0;
+ dev->dev.power.power_state = PMSG_ON;
retval = request_irq (dev->irq, usb_hcd_irq, SA_SHIRQ,
hcd->driver->description, hcd);
if (retval < 0) {
--- clean-cvs/drivers/usb/core/hcd.h 2005-03-31 23:34:27.000000000 +0200
+++ linux-cvs/drivers/usb/core/hcd.h 2005-03-31 23:54:47.000000000 +0200
@@ -18,6 +18,7 @@
#ifdef __KERNEL__
+#include <linux/pci.h>
/* This file contains declarations of usbcore internals that are mostly
* used or exposed by Host Controller Drivers.
@@ -177,7 +178,7 @@
* a whole, not just the root hub; they're for bus glue.
*/
/* called after all devices were suspended */
- int (*suspend) (struct usb_hcd *hcd, u32 state);
+ int (*suspend) (struct usb_hcd *hcd, pm_message_t state);
/* called before any devices get resumed */
int (*resume) (struct usb_hcd *hcd);
@@ -226,7 +227,7 @@
extern void usb_hcd_pci_remove (struct pci_dev *dev);
#ifdef CONFIG_PM
-extern int usb_hcd_pci_suspend (struct pci_dev *dev, u32 state);
+extern int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t state);
extern int usb_hcd_pci_resume (struct pci_dev *dev);
#endif /* CONFIG_PM */
--- clean-cvs/drivers/usb/core/hub.c 2005-03-31 23:34:27.000000000 +0200
+++ linux-cvs/drivers/usb/core/hub.c 2005-03-31 23:54:47.000000000 +0200
@@ -1456,7 +1456,7 @@
/* FIXME let caller ask to power down the port:
* - some devices won't enumerate without a VBUS power cycle
* - SRP saves power that way
- * - usb_suspend_device(dev,PM_SUSPEND_DISK)
+ * - usb_suspend_device(dev, PMSG_SUSPEND)
* That's easy if this hub can switch power per-port, and
* khubd reactivates the port later (timer, SRP, etc).
* Powerdown must be optional, because of reset/DFU.
@@ -1531,7 +1531,7 @@
/*
* Devices on USB hub ports have only one "suspend" state, corresponding
- * to ACPI D2 (PM_SUSPEND_MEM), "may cause the device to lose some context".
+ * to ACPI D2, "may cause the device to lose some context".
* State transitions include:
*
* - suspend, resume ... when the VBUS power link stays live
--- clean-cvs/drivers/usb/core/usb.c 2005-03-31 23:34:27.000000000 +0200
+++ linux-cvs/drivers/usb/core/usb.c 2005-04-01 00:12:45.000000000 +0200
@@ -1382,7 +1382,7 @@
usb_pipein (pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
}
-static int usb_generic_suspend(struct device *dev, u32 state)
+static int usb_generic_suspend(struct device *dev, pm_message_t state)
{
struct usb_interface *intf;
struct usb_driver *driver;
--- clean-cvs/drivers/usb/gadget/omap_udc.c 2005-03-29 13:30:37.000000000 +0200
+++ linux-cvs/drivers/usb/gadget/omap_udc.c 2005-03-31 23:54:47.000000000 +0200
@@ -2809,17 +2809,15 @@
return 0;
}
-/* suspend/resume/wakeup from sysfs (echo > power/state) */
-
-static int omap_udc_suspend(struct device *dev, u32 state, u32 level)
+static int omap_udc_suspend(struct device *dev, pm_message_t state, u32 level)
{
if (level != 0)
return 0;
DBG("suspend, state %d\n", state);
omap_pullup(&udc->gadget, 0);
- udc->gadget.dev.power.power_state = 3;
- udc->gadget.dev.parent->power.power_state = 3;
+ udc->gadget.dev.power.power_state = PMSG_SUSPEND;
+ udc->gadget.dev.parent->power.power_state = PMSG_SUSPEND;
return 0;
}
@@ -2829,8 +2827,8 @@
return 0;
DBG("resume + wakeup/SRP\n");
- udc->gadget.dev.parent->power.power_state = 0;
- udc->gadget.dev.power.power_state = 0;
+ udc->gadget.dev.parent->power.power_state = PMSG_ON;
+ udc->gadget.dev.power.power_state = PMSG_ON;
omap_pullup(&udc->gadget, 1);
/* maybe the host would enumerate us if we nudged it */
--- clean-cvs/drivers/usb/host/ehci-hcd.c 2005-03-31 23:34:27.000000000 +0200
+++ linux-cvs/drivers/usb/host/ehci-hcd.c 2005-03-31 23:54:47.000000000 +0200
@@ -721,7 +721,7 @@
* the right sort of wakeup.
*/
-static int ehci_suspend (struct usb_hcd *hcd, u32 state)
+static int ehci_suspend (struct usb_hcd *hcd, pm_message_t state)
{
struct ehci_hcd *ehci = hcd_to_ehci (hcd);
--- clean-cvs/drivers/usb/host/ohci-omap.c 2005-03-31 23:34:28.000000000 +0200
+++ linux-cvs/drivers/usb/host/ohci-omap.c 2005-03-31 23:54:47.000000000 +0200
@@ -458,9 +458,11 @@
/* states match PCI usage, always suspending the root hub except that
* 4 ~= D3cold (ACPI D3) with clock off (resume sees reset).
+ *
+ * FIXME: above comment is not right, and code is wrong, too :-(.
*/
-static int ohci_omap_suspend(struct device *dev, u32 state, u32 level)
+static int ohci_omap_suspend(struct device *dev, pm_message_t state, u32 level)
{
struct ohci_hcd *ohci = hcd_to_ohci(dev_get_drvdata(dev));
int status = -EINVAL;
--- clean-cvs/drivers/usb/host/ohci-pci.c 2005-01-16 22:27:50.000000000 +0100
+++ linux-cvs/drivers/usb/host/ohci-pci.c 2005-03-31 23:54:47.000000000 +0200
@@ -102,7 +102,7 @@
#ifdef CONFIG_PM
-static int ohci_pci_suspend (struct usb_hcd *hcd, u32 state)
+static int ohci_pci_suspend (struct usb_hcd *hcd, pm_message_t state)
{
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
--- clean-cvs/drivers/usb/host/ohci-pxa27x.c 2005-03-29 13:30:38.000000000 +0200
+++ linux-cvs/drivers/usb/host/ohci-pxa27x.c 2005-03-31 23:54:47.000000000 +0200
@@ -337,7 +337,7 @@
return 0;
}
-static int ohci_hcd_pxa27x_drv_suspend(struct device *dev, u32 state, u32 level)
+static int ohci_hcd_pxa27x_drv_suspend(struct device *dev, pm_message_t state, u32 level)
{
// struct platform_device *pdev = to_platform_device(dev);
// struct usb_hcd *hcd = dev_get_drvdata(dev);
@@ -346,7 +346,7 @@
return 0;
}
-static int ohci_hcd_pxa27x_drv_resume(struct device *dev, u32 state)
+static int ohci_hcd_pxa27x_drv_resume(struct device *dev, u32 level)
{
// struct platform_device *pdev = to_platform_device(dev);
// struct usb_hcd *hcd = dev_get_drvdata(dev);
--- clean-cvs/drivers/usb/host/uhci-hcd.c 2005-03-31 23:34:28.000000000 +0200
+++ linux-cvs/drivers/usb/host/uhci-hcd.c 2005-03-31 23:54:47.000000000 +0200
@@ -716,7 +716,7 @@
}
#ifdef CONFIG_PM
-static int uhci_suspend(struct usb_hcd *hcd, u32 state)
+static int uhci_suspend(struct usb_hcd *hcd, pci_power_t state)
{
struct uhci_hcd *uhci = hcd_to_uhci(hcd);
--- clean-cvs/drivers/usb/input/hid-core.c 2005-03-29 13:30:38.000000000 +0200
+++ linux-cvs/drivers/usb/input/hid-core.c 2005-03-31 23:54:47.000000000 +0200
@@ -1790,7 +1790,7 @@
return 0;
}
-static int hid_suspend(struct usb_interface *intf, u32 state)
+static int hid_suspend(struct usb_interface *intf, pm_message_t state)
{
struct hid_device *hid = usb_get_intfdata (intf);
@@ -1805,7 +1805,7 @@
struct hid_device *hid = usb_get_intfdata (intf);
int status;
- intf->dev.power.power_state = PM_SUSPEND_ON;
+ intf->dev.power.power_state = PMSG_ON;
if (hid->open)
status = usb_submit_urb(hid->urbin, GFP_NOIO);
else
--- clean-cvs/drivers/usb/net/usbnet.c 2005-03-31 23:34:30.000000000 +0200
+++ linux-cvs/drivers/usb/net/usbnet.c 2005-03-31 23:54:47.000000000 +0200
@@ -3732,7 +3732,7 @@
#ifdef CONFIG_PM
-static int usbnet_suspend (struct usb_interface *intf, u32 state)
+static int usbnet_suspend (struct usb_interface *intf, pm_message_t state)
{
struct usbnet *dev = usb_get_intfdata(intf);
--- clean-cvs/include/linux/pcieport_if.h 2005-01-18 16:48:03.000000000 +0100
+++ linux-cvs/include/linux/pcieport_if.h 2005-03-31 23:54:51.000000000 +0200
@@ -59,7 +59,7 @@
int (*probe) (struct pcie_device *dev,
const struct pcie_port_service_id *id);
void (*remove) (struct pcie_device *dev);
- int (*suspend) (struct pcie_device *dev, u32 state);
+ int (*suspend) (struct pcie_device *dev, pm_message_t state);
int (*resume) (struct pcie_device *dev);
const struct pcie_port_service_id *id_table;
--- clean-cvs/include/linux/usb.h 2005-03-31 23:36:06.000000000 +0200
+++ linux-cvs/include/linux/usb.h 2005-03-31 23:54:51.000000000 +0200
@@ -558,7 +558,7 @@
int (*ioctl) (struct usb_interface *intf, unsigned int code, void *buf);
- int (*suspend) (struct usb_interface *intf, u32 state);
+ int (*suspend) (struct usb_interface *intf, pm_message_t state);
int (*resume) (struct usb_interface *intf);
const struct usb_device_id *id_table;
@@ -977,7 +977,7 @@
int timeout);
/* selective suspend/resume */
-extern int usb_suspend_device(struct usb_device *dev, u32 state);
+extern int usb_suspend_device(struct usb_device *dev, pm_message_t state);
extern int usb_resume_device(struct usb_device *dev);
--
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
next reply other threads:[~2005-04-02 21:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-02 21:14 Pavel Machek [this message]
2005-04-03 18:06 David Brownell
[not found] <20050405104202.GD1330@openzaurus.ucw.cz>
2005-04-05 21:38 ` Pavel Machek
2005-04-07 20:49 ` David Brownell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050402211412.GA2069@elf.ucw.cz \
--to=pavel@ucw.cz \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®