debug("%s: Cannot find PMIC I2C chip\n", __func__);
                return;
        }
-       i2c_write(dev, reg, &data, 1);
+       dm_i2c_write(dev, reg, &data, 1);
 }
 
 /*
 
        reg = 0x32;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (i2c_write(dev, reg, data_buffer, 1))
+               if (dm_i2c_write(dev, reg, data_buffer, 1))
                        udelay(100);
        }
 
        reg = 0x67;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (i2c_write(dev, reg, data_buffer, 1))
+               if (dm_i2c_write(dev, reg, data_buffer, 1))
                        udelay(100);
        }
 }
        data[0] = 0x15;
        addr = 0x30;
 
-       err = i2c_write(dev, addr, data, 1);
+       err = dm_i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set VDD supply\n");
                return err;
        data[0] = 0x15;
        addr = 0x31;
 
-       err = i2c_write(dev, addr, data, 1);
+       err = dm_i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set AVDD supply\n");
                return err;
 
        data_buffer[0] = 0x31;
        reg = 0x61;
 
-       ret = i2c_write(dev, reg, data_buffer, 1);
+       ret = dm_i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: PMU i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
        data_buffer[0] = 0x01;
        reg = 0x60;
 
-       ret = i2c_write(dev, reg, data_buffer, 1);
+       ret = dm_i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: PMU i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
                debug("%s: Cannot find charger I2C chip\n", __func__);
                return;
        }
-       ret = i2c_write(dev, reg, data_buffer, 1);
+       ret = dm_i2c_write(dev, reg, data_buffer, 1);
        if (ret)
                printf("%s: BAT i2c_write %02X<-%02X returned %d\n",
                        __func__, reg, data_buffer[0], ret);
 
                return;
        }
        val = 0x29;
-       ret = i2c_write(dev, 0x46, &val, 1);
+       ret = dm_i2c_write(dev, 0x46, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x46 failed: %d\n", ret);
        val = 0x00;
-       ret = i2c_write(dev, 0x45, &val, 1);
+       ret = dm_i2c_write(dev, 0x45, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x45 failed: %d\n", ret);
        val = 0x1f;
-       ret = i2c_write(dev, 0x44, &val, 1);
+       ret = dm_i2c_write(dev, 0x44, &val, 1);
        if (ret)
                printf("i2c_write 0 0x3c 0x44 failed: %d\n", ret);
 
                return;
        }
        val = 0x03;
-       ret = i2c_write(dev, 2, &val, 1);
+       ret = dm_i2c_write(dev, 2, &val, 1);
        if (ret)
                printf("i2c_write 0 0x20 2 failed: %d\n", ret);
        val = 0xfc;
-       ret = i2c_write(dev, 6, &val, 1);
+       ret = dm_i2c_write(dev, 6, &val, 1);
        if (ret)
                printf("i2c_write 0 0x20 6 failed: %d\n", ret);
 }
 
        data[0] = 0x27;
        addr = 0x25;
 
-       err = i2c_write(dev, addr, data, 1);
+       err = dm_i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set VDD supply\n");
                return err;
        data[0] = 0x0D;
        addr = 0x24;
 
-       err = i2c_write(dev, addr, data, 1);
+       err = dm_i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to enable VDD supply\n");
                return err;
        data[0] = 0x0D;
        addr = 0x35;
 
-       err = i2c_write(dev, addr, data, 1);
+       err = dm_i2c_write(dev, addr, data, 1);
        if (err) {
                debug("failed to set AVDD supply\n");
                return err;
 
 #ifdef CONFIG_DM_I2C
 static struct udevice *i2c_cur_bus;
 
-static int i2c_set_bus_num(unsigned int busnum)
+static int cmd_i2c_set_bus_num(unsigned int busnum)
 {
        struct udevice *bus;
        int ret;
        if (!ret && alen != -1)
                ret = i2c_set_chip_offset_len(dev, alen);
        if (!ret)
-               ret = i2c_read(dev, devaddr, memaddr, length);
+               ret = dm_i2c_read(dev, devaddr, memaddr, length);
 #else
        ret = i2c_read(chip, devaddr, alen, memaddr, length);
 #endif
 
        while (length-- > 0) {
 #ifdef CONFIG_DM_I2C
-               ret = i2c_write(dev, devaddr++, memaddr++, 1);
+               ret = dm_i2c_write(dev, devaddr++, memaddr++, 1);
 #else
                ret = i2c_write(chip, devaddr++, alen, memaddr++, 1);
 #endif
                linebytes = (nbytes > DISP_LINE_LEN) ? DISP_LINE_LEN : nbytes;
 
 #ifdef CONFIG_DM_I2C
-               ret = i2c_read(dev, addr, linebuf, linebytes);
+               ret = dm_i2c_read(dev, addr, linebuf, linebytes);
 #else
                ret = i2c_read(chip, addr, alen, linebuf, linebytes);
 #endif
 
        while (count-- > 0) {
 #ifdef CONFIG_DM_I2C
-               ret = i2c_write(dev, addr++, &byte, 1);
+               ret = dm_i2c_write(dev, addr++, &byte, 1);
 #else
                ret = i2c_write(chip, addr++, alen, &byte, 1);
 #endif
        err = 0;
        while (count-- > 0) {
 #ifdef CONFIG_DM_I2C
-               ret = i2c_read(dev, addr, &byte, 1);
+               ret = dm_i2c_read(dev, addr, &byte, 1);
 #else
                ret = i2c_read(chip, addr, alen, &byte, 1);
 #endif
        do {
                printf("%08lx:", addr);
 #ifdef CONFIG_DM_I2C
-               ret = i2c_read(dev, addr, (uchar *)&data, size);
+               ret = dm_i2c_read(dev, addr, (uchar *)&data, size);
 #else
                ret = i2c_read(chip, addr, alen, (uchar *)&data, size);
 #endif
                                 */
                                bootretry_reset_cmd_timeout();
 #ifdef CONFIG_DM_I2C
-                               ret = i2c_write(dev, addr, (uchar *)&data,
-                                               size);
+                               ret = dm_i2c_write(dev, addr, (uchar *)&data,
+                                                  size);
 #else
                                ret = i2c_write(chip, addr, alen,
                                                (uchar *)&data, size);
                        continue;
 #endif
 #ifdef CONFIG_DM_I2C
-               ret = i2c_probe(bus, j, 0, &dev);
+               ret = dm_i2c_probe(bus, j, 0, &dev);
 #else
                ret = i2c_probe(j);
 #endif
         */
        while (1) {
 #ifdef CONFIG_DM_I2C
-               ret = i2c_read(dev, addr, bytes, length);
+               ret = dm_i2c_read(dev, addr, bytes, length);
 #else
                ret = i2c_read(chip, addr, alen, bytes, length);
 #endif
 #ifdef CONFIG_DM_I2C
        ret = i2c_get_cur_bus_chip(chip, &dev);
        if (!ret)
-               ret = i2c_read(dev, 0, (uchar *)&edid, sizeof(edid));
+               ret = dm_i2c_read(dev, 0, (uchar *)&edid, sizeof(edid));
 #else
        ret = i2c_read(chip, 0, 1, (uchar *)&edid, sizeof(edid));
 #endif
                }
 #endif
                printf("Setting bus to %d\n", bus_no);
+#ifdef CONFIG_DM_I2C
+               ret = cmd_i2c_set_bus_num(bus_no);
+#else
                ret = i2c_set_bus_num(bus_no);
+#endif
                if (ret)
                        printf("Failure changing bus number (%d)\n", ret);
        }
 
 # define install_hdlr      irq_install_handler
 # define free_hdlr         irq_free_handler
 #endif
-#ifndef CONFIG_CMD_I2C
+#if !defined(CONFIG_CMD_I2C) || \
+       (defined(CONFIG_DM_I2C) && !defined(CONFIG_DM_I2C_COMPAT))
 # define i2c_write         dummy
 # define i2c_read          dummy
 #endif
 
        return 0;
 }
 
-int i2c_read(struct udevice *dev, uint offset, uint8_t *buffer, int len)
+int dm_i2c_read(struct udevice *dev, uint offset, uint8_t *buffer, int len)
 {
        struct dm_i2c_chip *chip = dev_get_parentdata(dev);
        struct udevice *bus = dev_get_parent(dev);
        return ops->xfer(bus, msg, msg_count);
 }
 
-int i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer, int len)
+int dm_i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer,
+                int len)
 {
        struct dm_i2c_chip *chip = dev_get_parentdata(dev);
        struct udevice *bus = dev_get_parent(dev);
        return 0;
 }
 
-int i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
-             struct udevice **devp)
+int dm_i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
+                struct udevice **devp)
 {
        int ret;
 
 
 {
        int err;
 
-       err = i2c_read(pmic, reg, value, 1);
+       err = dm_i2c_read(pmic, reg, value, 1);
        if (err < 0)
                return err;
 
 {
        int err;
 
-       err = i2c_write(pmic, reg, &value, 1);
+       err = dm_i2c_write(pmic, reg, &value, 1);
        if (err < 0)
                return err;
 
 
        int     retval = -1;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (!i2c_read(tps6586x_dev, reg,  &data, 1)) {
+               if (!dm_i2c_read(tps6586x_dev, reg,  &data, 1)) {
                        retval = (int)data;
                        goto exit;
                }
        int     retval = -1;
 
        for (i = 0; i < MAX_I2C_RETRY; ++i) {
-               if (!i2c_write(tps6586x_dev, reg, data, len)) {
+               if (!dm_i2c_write(tps6586x_dev, reg, data, len)) {
                        retval = 0;
                        goto exit;
                }
 
 };
 
 /**
- * i2c_read() - read bytes from an I2C chip
+ * dm_i2c_read() - read bytes from an I2C chip
  *
  * To obtain an I2C device (called a 'chip') given the I2C bus address you
  * can use i2c_get_chip(). To obtain a bus by bus number use
  *
  * @return 0 on success, -ve on failure
  */
-int i2c_read(struct udevice *dev, uint offset, uint8_t *buffer,
-            int len);
+int dm_i2c_read(struct udevice *dev, uint offset, uint8_t *buffer, int len);
 
 /**
- * i2c_write() - write bytes to an I2C chip
+ * dm_i2c_write() - write bytes to an I2C chip
  *
- * See notes for i2c_read() above.
+ * See notes for dm_i2c_read() above.
  *
  * @dev:       Chip to write to
  * @offset:    Offset within chip to start writing
  *
  * @return 0 on success, -ve on failure
  */
-int i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer,
-             int len);
+int dm_i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer,
+                int len);
 
 /**
- * i2c_probe() - probe a particular chip address
+ * dm_i2c_probe() - probe a particular chip address
  *
  * This can be useful to check for the existence of a chip on the bus.
  * It is typically implemented by writing the chip address to the bus
  * @devp:      Returns the device found, or NULL if none
  * @return 0 if a chip was found at that address, -ve if not
  */
-int i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
-             struct udevice **devp);
+int dm_i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
+                struct udevice **devp);
 
 /**
  * i2c_set_bus_speed() - set the speed of a bus
 
         * remove the emulation and the slave device.
         */
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
-       ut_assertok(i2c_probe(bus, chip, 0, &dev));
-       ut_asserteq(-ENODEV, i2c_probe(bus, no_chip, 0, &dev));
+       ut_assertok(dm_i2c_probe(bus, chip, 0, &dev));
+       ut_asserteq(-ENODEV, dm_i2c_probe(bus, no_chip, 0, &dev));
        ut_asserteq(-ENODEV, uclass_get_device_by_seq(UCLASS_I2C, 1, &bus));
 
        return 0;
 
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
        ut_assertok(i2c_get_chip(bus, chip, &dev));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
-       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0AB\0", sizeof(buf)));
 
        return 0;
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
        ut_assertok(i2c_get_chip(bus, chip, &dev));
        ut_assertok(i2c_set_bus_speed(bus, 100000));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(i2c_set_bus_speed(bus, 400000));
        ut_asserteq(400000, i2c_get_bus_speed(bus));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
-       ut_asserteq(-EINVAL, i2c_write(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
+       ut_asserteq(-EINVAL, dm_i2c_write(dev, 0, buf, 5));
 
        return 0;
 }
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
        ut_assertok(i2c_get_chip(bus, chip, &dev));
        ut_assertok(i2c_set_chip_offset_len(dev, 1));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
 
        /* This is not supported by the uclass */
        ut_asserteq(-EINVAL, i2c_set_chip_offset_len(dev, 5));
        struct udevice *bus, *dev;
 
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
-       ut_assertok(i2c_probe(bus, SANDBOX_I2C_TEST_ADDR, 0, &dev));
+       ut_assertok(dm_i2c_probe(bus, SANDBOX_I2C_TEST_ADDR, 0, &dev));
 
        return 0;
 }
 
        ut_assertok(uclass_get_device_by_seq(UCLASS_I2C, busnum, &bus));
        ut_assertok(i2c_get_chip(bus, chip, &dev));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
 
        /* Tell the EEPROM to only read/write one register at a time */
        sandbox_i2c_eeprom_set_test_mode(eeprom, SIE_TEST_MODE_SINGLE_BYTE);
 
        /* Now we only get the first byte - the rest will be 0xff */
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
 
        /* If we do a separate transaction for each byte, it works */
        ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_RD_ADDRESS));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0\0\0\0", sizeof(buf)));
 
        /* This will only write A */
        ut_assertok(i2c_set_chip_flags(dev, 0));
-       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
 
        /* Check that the B was ignored */
        ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_RD_ADDRESS));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0A\0\0\0", sizeof(buf)));
 
        /* Now write it again with the new flags, it should work */
        ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_WR_ADDRESS));
-       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\xff\xff\xff\xff", sizeof(buf)));
 
        ut_assertok(i2c_set_chip_flags(dev, DM_I2C_CHIP_WR_ADDRESS |
                                                DM_I2C_CHIP_RD_ADDRESS));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "\0\0AB\0\0", sizeof(buf)));
 
        /* Restore defaults */
        ut_assertok(i2c_get_chip_for_busnum(busnum, chip, &dev));
 
        /* Do a transfer so we can find the emulator */
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(uclass_first_device(UCLASS_I2C_EMUL, &eeprom));
 
        /* Offset length 0 */
        sandbox_i2c_eeprom_set_offset_len(eeprom, 0);
        ut_assertok(i2c_set_chip_offset_len(dev, 0));
-       ut_assertok(i2c_write(dev, 10 /* ignored */, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 10 /* ignored */, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "AB\0\0\0\0", sizeof(buf)));
 
        /* Offset length 1 */
        sandbox_i2c_eeprom_set_offset_len(eeprom, 1);
        ut_assertok(i2c_set_chip_offset_len(dev, 1));
-       ut_assertok(i2c_write(dev, 2, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 2, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0, buf, 5));
        ut_assertok(memcmp(buf, "ABAB\0", sizeof(buf)));
 
        /* Offset length 2 */
        sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
        ut_assertok(i2c_set_chip_offset_len(dev, 2));
-       ut_assertok(i2c_write(dev, 0x210, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0x210, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 0x210, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0x210, buf, 5));
        ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
 
        /* Offset length 3 */
        sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
        ut_assertok(i2c_set_chip_offset_len(dev, 2));
-       ut_assertok(i2c_write(dev, 0x410, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0x410, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 0x410, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0x410, buf, 5));
        ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
 
        /* Offset length 4 */
        sandbox_i2c_eeprom_set_offset_len(eeprom, 2);
        ut_assertok(i2c_set_chip_offset_len(dev, 2));
-       ut_assertok(i2c_write(dev, 0x420, (uint8_t *)"AB", 2));
-       ut_assertok(i2c_read(dev, 0x420, buf, 5));
+       ut_assertok(dm_i2c_write(dev, 0x420, (uint8_t *)"AB", 2));
+       ut_assertok(dm_i2c_read(dev, 0x420, buf, 5));
        ut_assertok(memcmp(buf, "AB\0\0\0", sizeof(buf)));
 
        /* Restore defaults */