mx6sabresd: Convert to DM_PMIC
authorFabio Estevam <festevam@denx.de>
Thu, 16 Feb 2023 10:08:49 +0000 (07:08 -0300)
committerStefano Babic <sbabic@denx.de>
Wed, 29 Mar 2023 20:27:39 +0000 (22:27 +0200)
The usage of DM_PMIC is preferred, so convert to it.

This also brings the benefit of causing a significant amount
of code removal.

Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
board/freescale/mx6sabresd/mx6sabresd.c
configs/mx6sabresd_defconfig
include/configs/mx6sabresd.h

index 8c35230..96a76b0 100644 (file)
@@ -17,7 +17,6 @@
 #include <env.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/mach-imx/iomux-v3.h>
 #include <asm/mach-imx/boot_mode.h>
 #include <asm/mach-imx/video.h>
@@ -28,7 +27,6 @@
 #include <asm/arch/crm_regs.h>
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
-#include <i2c.h>
 #include <input.h>
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
@@ -49,14 +47,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define SPI_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_SPEED_MED | \
                      PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
 
-#define I2C_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                   \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
-       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
-
-#define I2C_PMIC       1
-
-#define I2C_PAD MUX_PAD_CTRL(I2C_PAD_CTRL)
-
 #define DISP0_PWR_EN   IMX_GPIO_NR(1, 21)
 
 #define KEY_VOL_UP     IMX_GPIO_NR(1, 4)
@@ -174,32 +164,6 @@ static void enable_lvds(struct display_info_t const *dev)
        enable_backlight();
 }
 
-static struct i2c_pads_info mx6q_i2c_pad_info1 = {
-       .scl = {
-               .i2c_mode = MX6Q_PAD_KEY_COL3__I2C2_SCL | I2C_PAD,
-               .gpio_mode = MX6Q_PAD_KEY_COL3__GPIO4_IO12 | I2C_PAD,
-               .gp = IMX_GPIO_NR(4, 12)
-       },
-       .sda = {
-               .i2c_mode = MX6Q_PAD_KEY_ROW3__I2C2_SDA | I2C_PAD,
-               .gpio_mode = MX6Q_PAD_KEY_ROW3__GPIO4_IO13 | I2C_PAD,
-               .gp = IMX_GPIO_NR(4, 13)
-       }
-};
-
-static struct i2c_pads_info mx6dl_i2c_pad_info1 = {
-       .scl = {
-               .i2c_mode = MX6DL_PAD_KEY_COL3__I2C2_SCL | I2C_PAD,
-               .gpio_mode = MX6DL_PAD_KEY_COL3__GPIO4_IO12 | I2C_PAD,
-               .gp = IMX_GPIO_NR(4, 12)
-       },
-       .sda = {
-               .i2c_mode = MX6DL_PAD_KEY_ROW3__I2C2_SDA | I2C_PAD,
-               .gpio_mode = MX6DL_PAD_KEY_ROW3__GPIO4_IO13 | I2C_PAD,
-               .gp = IMX_GPIO_NR(4, 13)
-       }
-};
-
 static void setup_spi(void)
 {
        SETUP_IOMUX_PADS(ecspi1_pads);
@@ -495,10 +459,7 @@ int board_init(void)
 #ifdef CONFIG_MXC_SPI
        setup_spi();
 #endif
-       if (is_mx6dq() || is_mx6dqp())
-               setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6q_i2c_pad_info1);
-       else
-               setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6dl_i2c_pad_info1);
+
 #if defined(CONFIG_VIDEO_IPUV3)
        setup_display();
 #endif
@@ -511,29 +472,32 @@ int board_init(void)
 
 int power_init_board(void)
 {
-       struct pmic *p;
+       struct udevice *dev;
        unsigned int reg;
        int ret;
 
-       p = pfuze_common_init(I2C_PMIC);
-       if (!p)
-               return -ENODEV;
+       ret = pmic_get("pfuze100@8", &dev);
+       if (ret == -ENODEV)
+               return 0;
+
+       if (ret != 0)
+               return ret;
 
-       ret = pfuze_mode_init(p, APS_PFM);
+       ret = pfuze_mode_init(dev, APS_PFM);
        if (ret < 0)
                return ret;
 
        /* Increase VGEN3 from 2.5 to 2.8V */
-       pmic_reg_read(p, PFUZE100_VGEN3VOL, &reg);
+       reg = pmic_reg_read(dev, PFUZE100_VGEN3VOL);
        reg &= ~LDO_VOL_MASK;
        reg |= LDOB_2_80V;
-       pmic_reg_write(p, PFUZE100_VGEN3VOL, reg);
+       pmic_reg_write(dev, PFUZE100_VGEN3VOL, reg);
 
        /* Increase VGEN5 from 2.8 to 3V */
-       pmic_reg_read(p, PFUZE100_VGEN5VOL, &reg);
+       reg = pmic_reg_read(dev, PFUZE100_VGEN5VOL);
        reg &= ~LDO_VOL_MASK;
        reg |= LDOB_3_00V;
-       pmic_reg_write(p, PFUZE100_VGEN5VOL, reg);
+       pmic_reg_write(dev, PFUZE100_VGEN5VOL, reg);
 
        return 0;
 }
@@ -902,7 +866,6 @@ void board_init_f(ulong dummy)
        ccgr_init();
        gpr_init();
 
-       /* iomux and setup of i2c */
        board_early_init_f();
 
        /* setup GP timer */
index 965536c..2770b12 100644 (file)
@@ -11,9 +11,6 @@ CONFIG_ENV_SIZE=0x2000
 CONFIG_ENV_OFFSET=0xC0000
 CONFIG_MX6QDL=y
 CONFIG_TARGET_MX6SABRESD=y
-CONFIG_SYS_I2C_MXC_I2C1=y
-CONFIG_SYS_I2C_MXC_I2C2=y
-CONFIG_SYS_I2C_MXC_I2C3=y
 CONFIG_DM_GPIO=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-sabresd"
 CONFIG_SPL_TEXT_BASE=0x00908000
@@ -82,7 +79,6 @@ CONFIG_FASTBOOT_BUF_SIZE=0x10000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=2
 CONFIG_DM_I2C=y
-CONFIG_SPL_SYS_I2C_LEGACY=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_USDHC=y
@@ -100,11 +96,12 @@ CONFIG_PCI_SCAN_SHOW=y
 CONFIG_PCIE_IMX=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
-CONFIG_POWER_LEGACY=y
-CONFIG_POWER_PFUZE100=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_PFUZE100=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_FIXED=y
-CONFIG_POWER_I2C=y
+CONFIG_DM_REGULATOR_PFUZE100=y
+CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_DM_SERIAL=y
 CONFIG_MXC_UART=y
 CONFIG_SPI=y
index 30d3b9d..844f10e 100644 (file)
@@ -24,9 +24,6 @@
 #define CFG_PCIE_IMX_POWER_GPIO        IMX_GPIO_NR(3, 19)
 #endif
 
-/* PMIC */
-#define CFG_POWER_PFUZE100_I2C_ADDR    0x08
-
 /* USB Configs */
 #ifdef CONFIG_CMD_USB
 #define CFG_MXC_USB_PORTSC             (PORT_PTS_UTMI | PORT_PTS_PTW)