Hi Jacob,
Am 21.04.2017 um 05:34 schrieb Jacob Chen: > 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. > > To use rk818,below configs should be enabled: > CONFIG_SPL_I2C_SUPPORT=y > CONFIG_SPL_POWER_SUPPORT=y > and rk818 device should probe in spl board_init_f. > > Signed-off-by: Jacob Chen <jacob-c...@iotwrt.com> > --- > > drivers/power/pmic/rk808.c | 29 +++++++++++++++++++++++++++++ > include/power/rk808_pmic.h | 12 ++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/drivers/power/pmic/rk808.c b/drivers/power/pmic/rk808.c > index 3f5f316..2d764d9 100644 > --- a/drivers/power/pmic/rk808.c > +++ b/drivers/power/pmic/rk808.c > @@ -80,6 +80,33 @@ 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; > + > +#ifdef CONFIG_SPL_BUILD > + if (priv->variant == RK818_ID) { > + uint8_t txdata; > + /* > + * Increase USB input current selection to 2A and close charger > + * when usb lower then 3.4V. > + */ > + txdata = 0x77; > + rk808_write(dev, REG_USB_CTRL, &txdata, 1); > + udelay(3); > + } I don't think this is the right place for this board specific setup. Not every RK818 based device has such a high power consumption and has to increase it's USB input current selection. You should move the USB_CTRL register write to board_init_f() and check for the board with #ifdef TARGET_XXX Regards, Wadim > +#endif > + > + return 0; > +} > + > static struct dm_pmic_ops rk808_ops = { > .reg_count = rk808_reg_count, > .read = rk808_read, > @@ -88,6 +115,7 @@ static struct dm_pmic_ops rk808_ops = { > > static const struct udevice_id rk808_ids[] = { > { .compatible = "rockchip,rk808" }, > + { .compatible = "rockchip,rk818" }, > { } > }; > > @@ -98,5 +126,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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot