mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-28 22:21:49 +01:00
power: pmic: rk808: add RK818 support
The RK818 chip is a Power Management IC (PMIC) for multimedia and handheld devices. For boards use rk818, the input current should be set in the early stage, before ddr initialization. Signed-off-by: Jacob Chen <jacob-chen@iotwrt.com>
This commit is contained in:
parent
1daa93c0b4
commit
d77af8a8c9
@ -80,6 +80,20 @@ static int rk808_bind(struct udevice *dev)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int rk808_probe(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct rk808_priv *priv = dev_get_priv(dev);
|
||||||
|
uint8_t msb, lsb;
|
||||||
|
|
||||||
|
/* read Chip variant */
|
||||||
|
rk808_read(dev, ID_MSB, &msb, 1);
|
||||||
|
rk808_read(dev, ID_LSB, &lsb, 1);
|
||||||
|
|
||||||
|
priv->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct dm_pmic_ops rk808_ops = {
|
static struct dm_pmic_ops rk808_ops = {
|
||||||
.reg_count = rk808_reg_count,
|
.reg_count = rk808_reg_count,
|
||||||
.read = rk808_read,
|
.read = rk808_read,
|
||||||
@ -88,6 +102,7 @@ static struct dm_pmic_ops rk808_ops = {
|
|||||||
|
|
||||||
static const struct udevice_id rk808_ids[] = {
|
static const struct udevice_id rk808_ids[] = {
|
||||||
{ .compatible = "rockchip,rk808" },
|
{ .compatible = "rockchip,rk808" },
|
||||||
|
{ .compatible = "rockchip,rk818" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,5 +113,6 @@ U_BOOT_DRIVER(pmic_rk808) = {
|
|||||||
#if CONFIG_IS_ENABLED(PMIC_CHILDREN)
|
#if CONFIG_IS_ENABLED(PMIC_CHILDREN)
|
||||||
.bind = rk808_bind,
|
.bind = rk808_bind,
|
||||||
#endif
|
#endif
|
||||||
|
.probe = rk808_probe,
|
||||||
.ops = &rk808_ops,
|
.ops = &rk808_ops,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -170,12 +170,24 @@ enum {
|
|||||||
RK808_NUM_OF_REGS,
|
RK808_NUM_OF_REGS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
RK805_ID = 0x8050,
|
||||||
|
RK808_ID = 0x0000,
|
||||||
|
RK818_ID = 0x8180,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define RK8XX_ID_MSK 0xfff0
|
||||||
|
|
||||||
struct rk808_reg_table {
|
struct rk808_reg_table {
|
||||||
char *name;
|
char *name;
|
||||||
u8 reg_ctl;
|
u8 reg_ctl;
|
||||||
u8 reg_vol;
|
u8 reg_vol;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct rk808_priv {
|
||||||
|
int variant;
|
||||||
|
};
|
||||||
|
|
||||||
int rk808_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
|
int rk808_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user