
On 2019/9/19 下午4:09, Elaine Zhang wrote:
From: Joseph Chen chenjh@rock-chips.com
It is a common requirement to shutdown some PMIC. Provide some simple convenience functions to do this.
Signed-off-by: Joseph Chen chenjh@rock-chips.com Signed-off-by: Elaine Zhang zhangqing@rock-chips.com
Reviewed-by: Kever Yangkever.yang@rock-chips.com
Thanks, - Kever
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