Commit 0c07a9b4078d7a414674e5548c428994df1842bf

Authored by Lukasz Majewski
Committed by Tom Rini
1 parent 8ce7f2c115

eeprom: Add device model based I2C support to eeprom command

After this change the 'eeprom' command can be used with DM aware boards.

Signed-off-by: Lukasz Majewski <lukma@denx.de>

Showing 1 changed file with 21 additions and 3 deletions Side-by-side Diff

... ... @@ -137,6 +137,23 @@
137 137 spi_write(addr, alen, buffer, len);
138 138 #else /* I2C */
139 139  
  140 +#if defined(CONFIG_DM_I2C) && defined(CONFIG_SYS_I2C_EEPROM_BUS)
  141 + struct udevice *dev;
  142 +
  143 + ret = i2c_get_chip_for_busnum(CONFIG_SYS_I2C_EEPROM_BUS, addr[0],
  144 + alen - 1, &dev);
  145 + if (ret) {
  146 + printf("%s: Cannot find udev for a bus %d\n", __func__,
  147 + CONFIG_SYS_I2C_EEPROM_BUS);
  148 + return CMD_RET_FAILURE;
  149 + }
  150 +
  151 + if (read)
  152 + ret = dm_i2c_read(dev, offset, buffer, len);
  153 + else
  154 + ret = dm_i2c_write(dev, offset, buffer, len);
  155 +
  156 +#else /* Non DM I2C support - will be removed */
140 157 #if defined(CONFIG_SYS_I2C_EEPROM_BUS)
141 158 i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS);
142 159 #endif
143 160  
... ... @@ -145,10 +162,11 @@
145 162 ret = i2c_read(addr[0], offset, alen - 1, buffer, len);
146 163 else
147 164 ret = i2c_write(addr[0], offset, alen - 1, buffer, len);
148   -
149   - if (ret)
150   - ret = 1;
151 165 #endif
  166 +#endif /* CONFIG_DM_I2C && CONFIG_SYS_I2C_EEPROM_BUS */
  167 + if (ret)
  168 + ret = CMD_RET_FAILURE;
  169 +
152 170 return ret;
153 171 }
154 172