|
@@ -9,6 +9,7 @@
|
|
|
#include <common.h>
|
|
|
#include <asm/gpio.h>
|
|
|
#include <asm/arch/mmc.h>
|
|
|
+#include <dm.h>
|
|
|
#include <power/pmic.h>
|
|
|
#include <usb/dwc2_udc.h>
|
|
|
#include <asm/arch/cpu.h>
|
|
@@ -43,19 +44,6 @@ void i2c_init_board(void)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-int power_init_board(void)
|
|
|
-{
|
|
|
-#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */
|
|
|
- /*
|
|
|
- * For PMIC the I2C bus is named as I2C5, but it is connected
|
|
|
- * to logical I2C adapter 0
|
|
|
- */
|
|
|
- return pmic_init(I2C_0);
|
|
|
-#else
|
|
|
- return 0;
|
|
|
-#endif
|
|
|
-}
|
|
|
-
|
|
|
int dram_init(void)
|
|
|
{
|
|
|
gd->ram_size = PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE +
|
|
@@ -146,39 +134,50 @@ int board_mmc_init(bd_t *bis)
|
|
|
#ifdef CONFIG_USB_GADGET
|
|
|
static int s5pc1xx_phy_control(int on)
|
|
|
{
|
|
|
-#ifndef CONFIG_DM_I2C /* TODO(maintainer): Convert to driver model */
|
|
|
- int ret;
|
|
|
+ struct udevice *dev;
|
|
|
static int status;
|
|
|
- struct pmic *p = pmic_get("MAX8998_PMIC");
|
|
|
- if (!p)
|
|
|
- return -ENODEV;
|
|
|
+ int reg, ret;
|
|
|
|
|
|
- if (pmic_probe(p))
|
|
|
- return -1;
|
|
|
+ ret = pmic_get("max8998_pmic", &dev);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
if (on && !status) {
|
|
|
- ret = pmic_set_output(p, MAX8998_REG_ONOFF1,
|
|
|
- MAX8998_LDO3, LDO_ON);
|
|
|
- ret = pmic_set_output(p, MAX8998_REG_ONOFF2,
|
|
|
- MAX8998_LDO8, LDO_ON);
|
|
|
+ reg = pmic_reg_read(dev, MAX8998_REG_ONOFF1);
|
|
|
+ reg |= MAX8998_LDO3;
|
|
|
+ ret = pmic_reg_write(dev, MAX8998_REG_ONOFF1, reg);
|
|
|
if (ret) {
|
|
|
puts("MAX8998 LDO setting error!\n");
|
|
|
- return -1;
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ reg = pmic_reg_read(dev, MAX8998_REG_ONOFF2);
|
|
|
+ reg |= MAX8998_LDO8;
|
|
|
+ ret = pmic_reg_write(dev, MAX8998_REG_ONOFF2, reg);
|
|
|
+ if (ret) {
|
|
|
+ puts("MAX8998 LDO setting error!\n");
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
status = 1;
|
|
|
} else if (!on && status) {
|
|
|
- ret = pmic_set_output(p, MAX8998_REG_ONOFF1,
|
|
|
- MAX8998_LDO3, LDO_OFF);
|
|
|
- ret = pmic_set_output(p, MAX8998_REG_ONOFF2,
|
|
|
- MAX8998_LDO8, LDO_OFF);
|
|
|
+ reg = pmic_reg_read(dev, MAX8998_REG_ONOFF1);
|
|
|
+ reg &= ~MAX8998_LDO3;
|
|
|
+ ret = pmic_reg_write(dev, MAX8998_REG_ONOFF1, reg);
|
|
|
+ if (ret) {
|
|
|
+ puts("MAX8998 LDO setting error!\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ reg = pmic_reg_read(dev, MAX8998_REG_ONOFF2);
|
|
|
+ reg &= ~MAX8998_LDO8;
|
|
|
+ ret = pmic_reg_write(dev, MAX8998_REG_ONOFF2, reg);
|
|
|
if (ret) {
|
|
|
puts("MAX8998 LDO setting error!\n");
|
|
|
- return -1;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
status = 0;
|
|
|
}
|
|
|
udelay(10000);
|
|
|
-#endif
|
|
|
return 0;
|
|
|
}
|
|
|
|