
2017-05-02 14:54 GMT+08:00 Jacob Chen jacob-chen@iotwrt.com:
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
Changes in v2:
- remove input current selection in probe, it should be configured
in board_init_f by manual.
Maybe we'd better provide a function here, like `rk808_spl_configure_buck` It could be `rk8xx_spl_init(pmic, parm....)`
drivers/power/pmic/rk808.c | 16 ++++++++++++++++ include/power/rk808_pmic.h | 12 ++++++++++++ 2 files changed, 28 insertions(+)
diff --git a/drivers/power/pmic/rk808.c b/drivers/power/pmic/rk808.c index 3f5f316..582e456 100644 --- a/drivers/power/pmic/rk808.c +++ b/drivers/power/pmic/rk808.c @@ -80,6 +80,20 @@ static int rk808_bind(struct udevice *dev) } #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 = { .reg_count = rk808_reg_count, .read = rk808_read, @@ -88,6 +102,7 @@ static struct dm_pmic_ops rk808_ops = {
static const struct udevice_id rk808_ids[] = { { .compatible = "rockchip,rk808" },
{ .compatible = "rockchip,rk818" }, { }
};
@@ -98,5 +113,6 @@ U_BOOT_DRIVER(pmic_rk808) = { #if CONFIG_IS_ENABLED(PMIC_CHILDREN) .bind = rk808_bind, #endif
.probe = rk808_probe, .ops = &rk808_ops,
}; diff --git a/include/power/rk808_pmic.h b/include/power/rk808_pmic.h index d29c2b3..c370c32 100644 --- a/include/power/rk808_pmic.h +++ b/include/power/rk808_pmic.h @@ -170,12 +170,24 @@ enum { RK808_NUM_OF_REGS, };
+enum {
RK805_ID = 0x8050,
RK808_ID = 0x0000,
RK818_ID = 0x8180,
+};
+#define RK8XX_ID_MSK 0xfff0
struct rk808_reg_table { char *name; u8 reg_ctl; u8 reg_vol; };
+struct rk808_priv {
int variant;
+};
int rk808_spl_configure_buck(struct udevice *pmic, int buck, int uvolt);
#endif
2.7.4