gpio: fxl6408: Add suspend/resume support
PATCH v4 1/1 gpio: fxl6408: Add suspend/resume support
Currently, during suspend, do nothing; during resume, just sync the regmap cache to hw regs.
Signed-off-by Jisheng Zhang <[email protected]>
---
since v3:
- simplify the patch a lot by removing fxl6408_chip wrapper structure, thank Bart for the suggestion.
since v2:
- drop the reset pin support patch since no users now
since v1:
- fix W=1 build error on nios2 platform
drivers/gpio/gpio-fxl6408.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
drivers/gpio/gpio-fxl6408.c +13 -0
@@ -123,6 +123,8 @@ static int fxl6408_probe(struct i2c_client *client)if (ret)return ret; +i2c_set_clientdata (client, gpio_config.regmap); +/* Disable High-Z of outputs, so that our OUTPUT updates actually take effect. */ ret =regmap_write (gpio_config.regmap,FXL6408_REG_OUTPUT_HIGH_Z ,0 );if (ret)
@@ -131,6 +133,16 @@ static int fxl6408_probe(struct i2c_client *client)return PTR_ERR_OR_ZERO (devm_gpio_regmap_register (dev, &gpio_config)); } +static int fxl6408_resume (struct device *dev) +{ +struct regmap *regmap =dev_get_drvdata (dev); + +regcache_mark_dirty (regmap); +return regcache_sync (regmap); +} + +static DEFINE_SIMPLE_DEV_PM_OPS(fxl6408_pm_ops, NULL, fxl6408_resume); +static const __maybe_unused struct of_device_id fxl6408_dt_ids[] = { { .compatible ="fcs,fxl6408" }, { }
@@ -146,6 +158,7 @@ MODULE_DEVICE_TABLE(i2c, fxl6408_id);static struct i2c_driver fxl6408_driver = { .driver = { .name ="fxl6408" , + .pm =pm_sleep_ptr (&fxl6408_pm_ops), .of_match_table = fxl6408_dt_ids, }, .probe = fxl6408_probe,
Signature · 1 line
2.51.0
Bartosz Golaszewski
AppliedFrom: Bartosz Golaszewski <[email protected]>
Quoted 4 lines · Jisheng Zhang
Currently, during suspend, do nothing; during resume, just sync the regmap cache to hw regs.
Applied, thanks!
[1/1] gpio: fxl6408: Add suspend/resume support
https://git.kernel.org/brgl/linux/c/87100151e090217b9325d7fc007b2930f6a46f02
Best regards,
Signature · 1 line
Bartosz Golaszewski <[email protected]>