power: pmic: rk8xx: implement suspend/resume callback
Signed-off-by: Joseph Chen <chenjh@rock-chips.com> Change-Id: I46b13886fcb3e7733155cd6f5fce15473c439da3
This commit is contained in:
parent
2a7051be6c
commit
40db74046c
|
|
@ -233,6 +233,48 @@ static int rk8xx_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int rk8xx_suspend(struct udevice *dev)
|
||||
{
|
||||
struct rk8xx_priv *priv = dev_get_priv(dev);
|
||||
int ret = 0;
|
||||
u8 val;
|
||||
|
||||
switch (priv->variant) {
|
||||
case RK809_ID:
|
||||
case RK817_ID:
|
||||
/* pmic_sleep active high */
|
||||
ret = rk8xx_read(dev, RK817_PMIC_SYS_CFG3, &val, 1);
|
||||
if (ret)
|
||||
return ret;
|
||||
priv->sleep_pin = val;
|
||||
val &= ~0x38;
|
||||
val |= 0x28;
|
||||
ret = rk8xx_write(dev, RK817_PMIC_SYS_CFG3, &val, 1);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rk8xx_resume(struct udevice *dev)
|
||||
{
|
||||
struct rk8xx_priv *priv = dev_get_priv(dev);
|
||||
int ret = 0;
|
||||
|
||||
switch (priv->variant) {
|
||||
case RK809_ID:
|
||||
case RK817_ID:
|
||||
ret = rk8xx_write(dev, RK817_PMIC_SYS_CFG3, &priv->sleep_pin, 1);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rk8xx_shutdown(struct udevice *dev)
|
||||
{
|
||||
struct rk8xx_priv *priv = dev_get_priv(dev);
|
||||
|
|
@ -568,6 +610,8 @@ static struct dm_pmic_ops rk8xx_ops = {
|
|||
.reg_count = rk8xx_reg_count,
|
||||
.read = rk8xx_read,
|
||||
.write = rk8xx_write,
|
||||
.suspend = rk8xx_suspend,
|
||||
.resume = rk8xx_resume,
|
||||
.shutdown = rk8xx_shutdown,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -277,11 +277,12 @@ struct rk8xx_reg_table {
|
|||
};
|
||||
|
||||
struct rk8xx_priv {
|
||||
struct virq_chip *irq_chip;
|
||||
int variant;
|
||||
int irq;
|
||||
struct virq_chip *irq_chip;
|
||||
int lp_off_time;
|
||||
int lp_action;
|
||||
uint8_t sleep_pin;
|
||||
};
|
||||
|
||||
int rk8xx_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
|
||||
|
|
|
|||
Loading…
Reference in New Issue