
From: Joseph Chen chenjh@rock-chips.com
Signed-off-by: Joseph Chen chenjh@rock-chips.com Signed-off-by: Elaine Zhang zhangqing@rock-chips.com --- drivers/power/pmic/pmic-uclass.c | 11 +++++++++++ include/power/pmic.h | 9 +++++++++ 2 files changed, 20 insertions(+)
diff --git a/drivers/power/pmic/pmic-uclass.c b/drivers/power/pmic/pmic-uclass.c index db68c766f5d7..28cfe0c987a2 100644 --- a/drivers/power/pmic/pmic-uclass.c +++ b/drivers/power/pmic/pmic-uclass.c @@ -191,6 +191,17 @@ static int pmic_pre_probe(struct udevice *dev) return 0; }
+ +int pmic_shutdown(struct udevice *dev) +{ + const struct dm_pmic_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->shutdown) + return -ENOSYS; + + return ops->shutdown(dev); +} + UCLASS_DRIVER(pmic) = { .id = UCLASS_PMIC, .name = "pmic", diff --git a/include/power/pmic.h b/include/power/pmic.h index be9de6b4de7e..231195e5ea85 100644 --- a/include/power/pmic.h +++ b/include/power/pmic.h @@ -164,6 +164,7 @@ 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 (*shutdown)(struct udevice *dev); };
/** @@ -306,6 +307,14 @@ struct uc_pmic_priv { uint trans_len; };
+/** + * pmic_shutdown() - power off supplies of PMIC + * + * @dev: PMIC device to update + * @return 0 on success or negative value of errno. + */ +int pmic_shutdown(struct udevice *dev); + #endif /* CONFIG_DM_PMIC */
#ifdef CONFIG_POWER