Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f8df781 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman
Browse files

PM: remove deprecated dpm_runtime_* routines



This patch (as933) removes the deprecated dpm_runtime_suspend() and
dpm_runtime_resume() routines from the PM core.  The only user of
those routines is the PCMCIA ds driver; local replacements are added.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
CC: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 471d0558
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ Who: Hans Verkuil <hverkuil@xs4all.nl> and
---------------------------

What:	dev->power.power_state
	dpm_runtime_{suspend,resume)()
When:	July 2007
Why:	Broken design for runtime control over driver power states, confusing
	driver-internal runtime power management with:  mechanisms to support
+1 −1
Original line number Diff line number Diff line
obj-y			:= shutdown.o
obj-$(CONFIG_PM)	+= main.o suspend.o resume.o runtime.o sysfs.o
obj-$(CONFIG_PM)	+= main.o suspend.o resume.o sysfs.o
obj-$(CONFIG_PM_TRACE)	+= trace.o

ifeq ($(CONFIG_DEBUG_DRIVER),y)
+0 −5
Original line number Diff line number Diff line
@@ -62,11 +62,6 @@ extern int resume_device(struct device *);
 */
extern int suspend_device(struct device *, pm_message_t);


/*
 * runtime.c
 */

#else /* CONFIG_PM */


drivers/base/power/runtime.c

deleted100644 → 0
+0 −85
Original line number Diff line number Diff line
/*
 * drivers/base/power/runtime.c - Handling dynamic device power management.
 *
 * Copyright (c) 2003 Patrick Mochel
 * Copyright (c) 2003 Open Source Development Lab
 *
 */

#include <linux/device.h>
#include "power.h"


static void runtime_resume(struct device * dev)
{
	dev_dbg(dev, "resuming\n");
	if (!dev->power.power_state.event)
		return;
	if (!resume_device(dev))
		dev->power.power_state = PMSG_ON;
}


/**
 *	dpm_runtime_resume - Power one device back on.
 *	@dev:	Device.
 *
 *	Bring one device back to the on state by first powering it
 *	on, then restoring state. We only operate on devices that aren't
 *	already on.
 *	FIXME: We need to handle devices that are in an unknown state.
 */

void dpm_runtime_resume(struct device * dev)
{
	mutex_lock(&dpm_mtx);
	runtime_resume(dev);
	mutex_unlock(&dpm_mtx);
}
EXPORT_SYMBOL(dpm_runtime_resume);


/**
 *	dpm_runtime_suspend - Put one device in low-power state.
 *	@dev:	Device.
 *	@state:	State to enter.
 */

int dpm_runtime_suspend(struct device * dev, pm_message_t state)
{
	int error = 0;

	mutex_lock(&dpm_mtx);
	if (dev->power.power_state.event == state.event)
		goto Done;

	if (dev->power.power_state.event)
		runtime_resume(dev);

	if (!(error = suspend_device(dev, state)))
		dev->power.power_state = state;
 Done:
	mutex_unlock(&dpm_mtx);
	return error;
}
EXPORT_SYMBOL(dpm_runtime_suspend);


#if 0
/**
 *	dpm_set_power_state - Update power_state field.
 *	@dev:	Device.
 *	@state:	Power state device is in.
 *
 *	This is an update mechanism for drivers to notify the core
 *	what power state a device is in. Device probing code may not
 *	always be able to tell, but we need accurate information to
 *	work reliably.
 */
void dpm_set_power_state(struct device * dev, pm_message_t state)
{
	mutex_lock(&dpm_mtx);
	dev->power.power_state = state;
	mutex_unlock(&dpm_mtx);
}
#endif  /*  0  */
+34 −6
Original line number Diff line number Diff line
@@ -1127,6 +1127,34 @@ static int pcmcia_bus_uevent(struct device *dev, char **envp, int num_envp,

#endif

/************************ runtime PM support ***************************/

static int pcmcia_dev_suspend(struct device *dev, pm_message_t state);
static int pcmcia_dev_resume(struct device *dev);

static int runtime_suspend(struct device *dev)
{
	int rc;

	down(&dev->sem);
	rc = pcmcia_dev_suspend(dev, PMSG_SUSPEND);
	up(&dev->sem);
	if (!rc)
		dev->power.power_state.event = PM_EVENT_SUSPEND;
	return rc;
}

static void runtime_resume(struct device *dev)
{
	int rc;

	down(&dev->sem);
	rc = pcmcia_dev_resume(dev);
	up(&dev->sem);
	if (!rc)
		dev->power.power_state.event = PM_EVENT_ON;
}

/************************ per-device sysfs output ***************************/

#define pcmcia_device_attr(field, test, format)				\
@@ -1173,9 +1201,9 @@ static ssize_t pcmcia_store_pm_state(struct device *dev, struct device_attribute
                return -EINVAL;

	if ((!p_dev->suspended) && !strncmp(buf, "off", 3))
		ret = dpm_runtime_suspend(dev, PMSG_SUSPEND);
		ret = runtime_suspend(dev);
	else if (p_dev->suspended && !strncmp(buf, "on", 2))
		dpm_runtime_resume(dev);
		runtime_resume(dev);

	return ret ? ret : count;
}
@@ -1312,10 +1340,10 @@ static int pcmcia_bus_suspend_callback(struct device *dev, void * _data)
	struct pcmcia_socket *skt = _data;
	struct pcmcia_device *p_dev = to_pcmcia_dev(dev);

	if (p_dev->socket != skt)
	if (p_dev->socket != skt || p_dev->suspended)
		return 0;

	return dpm_runtime_suspend(dev, PMSG_SUSPEND);
	return runtime_suspend(dev);
}

static int pcmcia_bus_resume_callback(struct device *dev, void * _data)
@@ -1323,10 +1351,10 @@ static int pcmcia_bus_resume_callback(struct device *dev, void * _data)
	struct pcmcia_socket *skt = _data;
	struct pcmcia_device *p_dev = to_pcmcia_dev(dev);

	if (p_dev->socket != skt)
	if (p_dev->socket != skt || !p_dev->suspended)
		return 0;

	dpm_runtime_resume(dev);
	runtime_resume(dev);

	return 0;
}
Loading