@@ -174,45 +174,35 @@ static struct i2c_pads_info i2c_pad_info1 = {
},
};
-#ifdef CONFIG_POWER
-#define I2C_PMIC 0
+#ifdef CONFIG_DM_PMIC
int power_init_board(void)
{
if (is_mx6ul_9x9_evk()) {
- struct pmic *pfuze;
- int ret;
- unsigned int reg, rev_id;
+ struct udevice *dev;
+ int ret, dev_id, rev_id;
- ret = power_pfuze3000_init(I2C_PMIC);
- if (ret)
+ ret = pmic_get("pfuze3000", &dev);
+ if (ret == -ENODEV)
+ return 0;
+ else if (ret != 0)
return ret;
- pfuze = pmic_get("PFUZE3000");
- ret = pmic_probe(pfuze);
- if (ret)
- return ret;
-
- pmic_reg_read(pfuze, PFUZE3000_DEVICEID, ®);
- pmic_reg_read(pfuze, PFUZE3000_REVID, &rev_id);
+ dev_id = pmic_reg_read(dev, PFUZE3000_DEVICEID);
+ rev_id = pmic_reg_read(dev, PFUZE3000_REVID);
printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n",
- reg, rev_id);
+ dev_id, rev_id);
/* disable Low Power Mode during standby mode */
- pmic_reg_read(pfuze, PFUZE3000_LDOGCTL, ®);
- reg |= 0x1;
- pmic_reg_write(pfuze, PFUZE3000_LDOGCTL, reg);
+ pmic_clrsetbits(dev, PFUZE3000_LDOGCTL, 0, 1);
/* SW1B step ramp up time from 2us to 4us/25mV */
- reg = 0x40;
- pmic_reg_write(pfuze, PFUZE3000_SW1BCONF, reg);
+ pmic_reg_write(dev, PFUZE3000_SW1BCONF, 0x40);
/* SW1B mode to APS/PFM */
- reg = 0xc;
- pmic_reg_write(pfuze, PFUZE3000_SW1BMODE, reg);
+ pmic_reg_write(dev, PFUZE3000_SW1BMODE, 0xc);
/* SW1B standby voltage set to 0.975V */
- reg = 0xb;
- pmic_reg_write(pfuze, PFUZE3000_SW1BSTBY, reg);
+ pmic_reg_write(dev, PFUZE3000_SW1BSTBY, 0xb);
}
return 0;
@@ -4,6 +4,7 @@ CONFIG_CMD_DHCP=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_PING=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ul-14x14-evk"
+CONFIG_DM_I2C=y
CONFIG_OF_CONTROL=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_FULL=y
@@ -3,7 +3,15 @@ CONFIG_ARM=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_PING=y
+CONFIG_CMD_PMIC=y
+CONFIG_CMD_REGULATOR=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ul-9x9-evk"
+CONFIG_DM_I2C=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_ERRNO_STR=y
CONFIG_OF_CONTROL=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_FULL=y
@@ -50,19 +50,12 @@
#endif
/* I2C configs */
+#ifndef CONFIG_SPL
#define CONFIG_CMD_I2C
#ifdef CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_MXC
-#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */
-#define CONFIG_SYS_I2C_MXC_I2C2 /* enable I2C bus 2 */
#define CONFIG_SYS_I2C_SPEED 100000
-
-/* PMIC only for 9X9 EVK */
-#define CONFIG_POWER
-#define CONFIG_POWER_I2C
-#define CONFIG_POWER_PFUZE3000
-#define CONFIG_POWER_PFUZE3000_I2C_ADDR 0x08
+#endif
#endif
#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
Convert to use DM_PMIC/DM_REGULATOR/DM_I2C for mx6ul evk. To mx6ul_14x14_evk, there is no pmic on board, so only enable DM_I2C. Since we have PINCTRL driver and DM_I2C enabled, we could discard the pinmux setting in board file, but we can not do this, because still some dependency in arch/arm/imx-common/i2c-mxv7.c. Later we may need to find out a way to refine this. To avoid SPL build warning, disable i2c-mxc driver for SPL part. Signed-off-by: Peng Fan <van.freenix@gmail.com> Cc: Stefano Babic <sbabic@denx.de> Cc: Fabio Estevam <fabio.estevam@nxp.com> --- board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 38 +++++++++-------------- configs/mx6ul_14x14_evk_defconfig | 1 + configs/mx6ul_9x9_evk_defconfig | 8 +++++ include/configs/mx6ul_14x14_evk.h | 11 ++----- 4 files changed, 25 insertions(+), 33 deletions(-)