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;
|
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)
|
static int rk8xx_shutdown(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct rk8xx_priv *priv = dev_get_priv(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,
|
.reg_count = rk8xx_reg_count,
|
||||||
.read = rk8xx_read,
|
.read = rk8xx_read,
|
||||||
.write = rk8xx_write,
|
.write = rk8xx_write,
|
||||||
|
.suspend = rk8xx_suspend,
|
||||||
|
.resume = rk8xx_resume,
|
||||||
.shutdown = rk8xx_shutdown,
|
.shutdown = rk8xx_shutdown,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -277,11 +277,12 @@ struct rk8xx_reg_table {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rk8xx_priv {
|
struct rk8xx_priv {
|
||||||
|
struct virq_chip *irq_chip;
|
||||||
int variant;
|
int variant;
|
||||||
int irq;
|
int irq;
|
||||||
struct virq_chip *irq_chip;
|
|
||||||
int lp_off_time;
|
int lp_off_time;
|
||||||
int lp_action;
|
int lp_action;
|
||||||
|
uint8_t sleep_pin;
|
||||||
};
|
};
|
||||||
|
|
||||||
int rk8xx_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
|
int rk8xx_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue