lkml.org 
[lkml]   [2008]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] PM: use pm_op methods for device types
    Date
    On Thursday, 25 of September 2008, Alan Stern wrote:
    > This patch (as1141) adds code to use the device type's pm_op methods,
    > if they are defined. It fixes a regression in the USB PM code; the
    > various suspend and resume methods are defined in the device type
    > rather than in the bus, because USB devices have to be handled
    > differently from USB interfaces. Without the patch, those methods
    > never get called.
    >
    > The patch also fixes a couple of spelling errors.

    Hm, these changes are not needed in the current mainline, so there's a patch
    in -next that removes the code added by this patch.

    It might be better to find that patch and drop it instead, IMO.

    > Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    > Tested-by: Jiri Slaby <jirislaby@gmail.com>
    >
    > ---
    >
    > This should be merged before 2.6.27 is released, if possible.
    > Otherwise people will find their systems refuse to suspend when any USB
    > devices are attached.
    >
    >
    >
    > Index: usb-2.6/drivers/base/power/main.c
    > ===================================================================
    > --- usb-2.6.orig/drivers/base/power/main.c
    > +++ usb-2.6/drivers/base/power/main.c
    > @@ -107,7 +107,7 @@ void device_pm_remove(struct device *dev
    > }
    >
    > /**
    > - * pm_op - execute the PM operation appropiate for given PM event
    > + * pm_op - execute the PM operation appropriate for given PM event
    > * @dev: Device.
    > * @ops: PM operations to choose from.
    > * @state: PM transition of the system being carried out.
    > @@ -166,7 +166,7 @@ static int pm_op(struct device *dev, str
    > }
    >
    > /**
    > - * pm_noirq_op - execute the PM operation appropiate for given PM event
    > + * pm_noirq_op - execute the PM operation appropriate for given PM event
    > * @dev: Device.
    > * @ops: PM operations to choose from.
    > * @state: PM transition of the system being carried out.
    > @@ -363,6 +363,13 @@ static int resume_device(struct device *
    > goto End;
    > }
    >
    > + if (dev->type && dev->type->pm) {
    > + pm_dev_dbg(dev, state, "type ");
    > + error = pm_op(dev, dev->type->pm, state);
    > + if (error)
    > + goto End;
    > + }
    > +
    > if (dev->class) {
    > if (dev->class->pm) {
    > pm_dev_dbg(dev, state, "class ");
    > @@ -596,6 +603,13 @@ static int suspend_device(struct device
    > goto End;
    > }
    >
    > + if (dev->type && dev->type->pm) {
    > + pm_dev_dbg(dev, state, "type ");
    > + error = pm_op(dev, dev->type->pm, state);
    > + if (error)
    > + goto End;
    > + }
    > +
    > if (dev->bus) {
    > if (dev->bus->pm) {
    > pm_dev_dbg(dev, state, "");
    >
    >
    >




    \
     
     \ /
      Last update: 2008-09-25 23:23    [W:3.957 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site