|
|
|
@ -1271,6 +1271,36 @@ static int nau8825_i2c_remove(struct i2c_client *client) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_PM_SLEEP |
|
|
|
|
static int nau8825_suspend(struct device *dev) |
|
|
|
|
{ |
|
|
|
|
struct i2c_client *client = to_i2c_client(dev); |
|
|
|
|
struct nau8825 *nau8825 = dev_get_drvdata(dev); |
|
|
|
|
|
|
|
|
|
disable_irq(client->irq); |
|
|
|
|
regcache_cache_only(nau8825->regmap, true); |
|
|
|
|
regcache_mark_dirty(nau8825->regmap); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int nau8825_resume(struct device *dev) |
|
|
|
|
{ |
|
|
|
|
struct i2c_client *client = to_i2c_client(dev); |
|
|
|
|
struct nau8825 *nau8825 = dev_get_drvdata(dev); |
|
|
|
|
|
|
|
|
|
regcache_cache_only(nau8825->regmap, false); |
|
|
|
|
regcache_sync(nau8825->regmap); |
|
|
|
|
enable_irq(client->irq); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
static const struct dev_pm_ops nau8825_pm = { |
|
|
|
|
SET_SYSTEM_SLEEP_PM_OPS(nau8825_suspend, nau8825_resume) |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const struct i2c_device_id nau8825_i2c_ids[] = { |
|
|
|
|
{ "nau8825", 0 }, |
|
|
|
|
{ } |
|
|
|
@ -1297,6 +1327,7 @@ static struct i2c_driver nau8825_driver = { |
|
|
|
|
.name = "nau8825", |
|
|
|
|
.of_match_table = of_match_ptr(nau8825_of_ids), |
|
|
|
|
.acpi_match_table = ACPI_PTR(nau8825_acpi_match), |
|
|
|
|
.pm = &nau8825_pm, |
|
|
|
|
}, |
|
|
|
|
.probe = nau8825_i2c_probe, |
|
|
|
|
.remove = nau8825_i2c_remove, |
|
|
|
|