Commit 51f5d330 authored by Daniel Mack's avatar Daniel Mack Committed by James Toy

This enabled power management functions for the SPI transport layer of the

lis3 devices.  The device's suspend mode is only entered in case no wakeup
threshold has been given.  In this case, the device is supposed to wake up
the system and must thus not be put to deep sleep.
Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Cc: Eric Piel <eric.piel@tremplin-utc.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 5544ef7b
......@@ -87,6 +87,32 @@ static int __devexit lis302dl_spi_remove(struct spi_device *spi)
return 0;
}
#ifdef CONFIG_PM
static int lis3lv02d_spi_suspend(struct spi_device *spi, pm_message_t mesg)
{
struct lis3lv02d *lis3 = spi_get_drvdata(spi);
if (!lis3->pdata->wakeup_flags)
lis3lv02d_poweroff(&lis3_dev);
return 0;
}
static int lis3lv02d_spi_resume(struct spi_device *spi)
{
struct lis3lv02d *lis3 = spi_get_drvdata(spi);
if (!lis3->pdata->wakeup_flags)
lis3lv02d_poweron(lis3);
return 0;
}
#else
#define lis3_spi_suspend NULL
#define lis3_spi_resume NULL
#endif
static struct spi_driver lis302dl_spi_driver = {
.driver = {
.name = DRV_NAME,
......@@ -94,6 +120,8 @@ static struct spi_driver lis302dl_spi_driver = {
},
.probe = lis302dl_spi_probe,
.remove = __devexit_p(lis302dl_spi_remove),
.suspend = lis3lv02d_spi_suspend,
.resume = lis3lv02d_spi_resume,
};
static int __init lis302dl_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment