From 2a7051be6cb4eddfbb7c8a7288750ec77adc42f3 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Thu, 14 Jan 2021 20:38:15 +0800 Subject: [PATCH] dm: pmic: add suspend/resume callback Signed-off-by: Joseph Chen Change-Id: Iaa3b0b7f7b3a0563370baace876e095deb64c28f --- drivers/power/pmic/pmic-uclass.c | 19 +++++++++++++++++++ include/power/pmic.h | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/drivers/power/pmic/pmic-uclass.c b/drivers/power/pmic/pmic-uclass.c index 8b77b3143e..127f24481a 100644 --- a/drivers/power/pmic/pmic-uclass.c +++ b/drivers/power/pmic/pmic-uclass.c @@ -189,6 +189,25 @@ int pmic_clrsetbits(struct udevice *dev, uint reg, uint clr, uint set) return pmic_reg_write(dev, reg, byte); } +int pmic_suspend(struct udevice *dev) +{ + const struct dm_pmic_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->suspend) + return -ENOSYS; + + return ops->suspend(dev); +} + +int pmic_resume(struct udevice *dev) +{ + const struct dm_pmic_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->resume) + return -ENOSYS; + + return ops->resume(dev); +} int pmic_shutdown(struct udevice *dev) { diff --git a/include/power/pmic.h b/include/power/pmic.h index 8eca9680f7..68ad5e571a 100644 --- a/include/power/pmic.h +++ b/include/power/pmic.h @@ -165,6 +165,8 @@ struct dm_pmic_ops { int (*read)(struct udevice *dev, uint reg, uint8_t *buffer, int len); int (*write)(struct udevice *dev, uint reg, const uint8_t *buffer, int len); + int (*suspend)(struct udevice *dev); + int (*resume)(struct udevice *dev); int (*shutdown)(struct udevice *dev); }; @@ -300,6 +302,22 @@ int pmic_reg_write(struct udevice *dev, uint reg, uint value); */ int pmic_clrsetbits(struct udevice *dev, uint reg, uint clr, uint set); +/** + * pmic_suspend() - suspend of PMIC + * + * @dev: PMIC device + * @return 0 on success or negative value of errno. + */ +int pmic_suspend(struct udevice *dev); + +/** + * pmic_resume() - resume of PMIC + * + * @dev: PMIC device + * @return 0 on success or negative value of errno. + */ +int pmic_resume(struct udevice *dev); + /** * pmic_shutdown() - power off supplies of PMIC *