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

Commit 8672bd93 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: ad7879 - consolidate PM methods



The PM methods are basically the same for SPI and I2C busses, so let's
use the same dev_pm_ops for both of them.

Acked-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 59bae1db
Loading
Loading
Loading
Loading
+1 −25
Original line number Diff line number Diff line
@@ -16,30 +16,6 @@

#define AD7879_DEVID		0x79	/* AD7879-1/AD7889-1 */

#ifdef CONFIG_PM_SLEEP
static int ad7879_i2c_suspend(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct ad7879 *ts = i2c_get_clientdata(client);

	ad7879_suspend(ts);

	return 0;
}

static int ad7879_i2c_resume(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct ad7879 *ts = i2c_get_clientdata(client);

	ad7879_resume(ts);

	return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(ad7879_i2c_pm, ad7879_i2c_suspend, ad7879_i2c_resume);

/* All registers are word-sized.
 * AD7879 uses a high-byte first convention.
 */
@@ -119,7 +95,7 @@ static struct i2c_driver ad7879_i2c_driver = {
	.driver = {
		.name	= "ad7879",
		.owner	= THIS_MODULE,
		.pm	= &ad7879_i2c_pm,
		.pm	= &ad7879_pm_ops,
	},
	.probe		= ad7879_i2c_probe,
	.remove		= __devexit_p(ad7879_i2c_remove),
+1 −25
Original line number Diff line number Diff line
@@ -21,30 +21,6 @@
#define AD7879_WRITECMD(reg) (AD7879_CMD(reg))
#define AD7879_READCMD(reg)  (AD7879_CMD(reg) | AD7879_CMD_READ)

#ifdef CONFIG_PM_SLEEP
static int ad7879_spi_suspend(struct device *dev)
{
	struct spi_device *spi = to_spi_device(dev);
	struct ad7879 *ts = spi_get_drvdata(spi);

	ad7879_suspend(ts);

	return 0;
}

static int ad7879_spi_resume(struct device *dev)
{
	struct spi_device *spi = to_spi_device(dev);
	struct ad7879 *ts = spi_get_drvdata(spi);

	ad7879_resume(ts);

	return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(ad7879_spi_pm, ad7879_spi_suspend, ad7879_spi_resume);

/*
 * ad7879_read/write are only used for initial setup and for sysfs controls.
 * The main traffic is done in ad7879_collect().
@@ -175,7 +151,7 @@ static struct spi_driver ad7879_spi_driver = {
		.name	= "ad7879",
		.bus	= &spi_bus_type,
		.owner	= THIS_MODULE,
		.pm	= &ad7879_spi_pm,
		.pm	= &ad7879_pm_ops,
	},
	.probe		= ad7879_spi_probe,
	.remove		= __devexit_p(ad7879_spi_remove),
+15 −4
Original line number Diff line number Diff line
@@ -280,8 +280,11 @@ static void ad7879_close(struct input_dev* input)
		__ad7879_disable(ts);
}

void ad7879_suspend(struct ad7879 *ts)
#ifdef CONFIG_PM_SLEEP
static int ad7879_suspend(struct device *dev)
{
	struct ad7879 *ts = dev_get_drvdata(dev);

	mutex_lock(&ts->input->mutex);

	if (!ts->suspended && !ts->disabled && ts->input->users)
@@ -290,11 +293,14 @@ void ad7879_suspend(struct ad7879 *ts)
	ts->suspended = true;

	mutex_unlock(&ts->input->mutex);

	return 0;
}
EXPORT_SYMBOL(ad7879_suspend);

void ad7879_resume(struct ad7879 *ts)
static int ad7879_resume(struct device *dev)
{
	struct ad7879 *ts = dev_get_drvdata(dev);

	mutex_lock(&ts->input->mutex);

	if (ts->suspended && !ts->disabled && ts->input->users)
@@ -303,8 +309,13 @@ void ad7879_resume(struct ad7879 *ts)
	ts->suspended = false;

	mutex_unlock(&ts->input->mutex);

	return 0;
}
EXPORT_SYMBOL(ad7879_resume);
#endif

SIMPLE_DEV_PM_OPS(ad7879_pm_ops, ad7879_suspend, ad7879_resume);
EXPORT_SYMBOL(ad7879_pm_ops);

static void ad7879_toggle(struct ad7879 *ts, bool disable)
{
+2 −2
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ struct ad7879_bus_ops {
	int (*write)(struct device *dev, u8 reg, u16 val);
};

void ad7879_suspend(struct ad7879 *);
void ad7879_resume(struct ad7879 *);
extern const struct dev_pm_ops ad7879_pm_ops;

struct ad7879 *ad7879_probe(struct device *dev, u8 devid, unsigned irq,
			    const struct ad7879_bus_ops *bops);
void ad7879_remove(struct ad7879 *);