Skip to content

Commit

Permalink
Input: ad7879 - consolidate PM methods
Browse files Browse the repository at this point in the history
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: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Dmitry Torokhov committed Nov 16, 2011
1 parent 59bae1d commit 8672bd9
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 56 deletions.
26 changes: 1 addition & 25 deletions drivers/input/touchscreen/ad7879-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down Expand Up @@ -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),
Expand Down
26 changes: 1 addition & 25 deletions drivers/input/touchscreen/ad7879-spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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().
Expand Down Expand Up @@ -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),
Expand Down
19 changes: 15 additions & 4 deletions drivers/input/touchscreen/ad7879.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
{
Expand Down
4 changes: 2 additions & 2 deletions drivers/input/touchscreen/ad7879.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 *);
Expand Down

0 comments on commit 8672bd9

Please sign in to comment.