dm: i2c: Add functions to read and write a register

Add driver model versions of the legacy functions to read and write a
single byte register. These are a useful shortcut in many cases.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
master
Simon Glass 9 years ago
parent 1bde67b1f4
commit ba3864f803
  1. 19
      drivers/i2c/i2c-uclass.c
  2. 21
      include/i2c.h

@ -186,6 +186,25 @@ int dm_i2c_write(struct udevice *dev, uint offset, const uint8_t *buffer,
}
}
int dm_i2c_reg_read(struct udevice *dev, uint offset)
{
uint8_t val;
int ret;
ret = dm_i2c_read(dev, offset, &val, 1);
if (ret < 0)
return ret;
return val;
}
int dm_i2c_reg_write(struct udevice *dev, uint offset, uint value)
{
uint8_t val = value;
return dm_i2c_write(dev, offset, &val, 1);
}
/**
* i2c_probe_chip() - probe for a chip on a bus
*

@ -124,6 +124,27 @@ int dm_i2c_probe(struct udevice *bus, uint chip_addr, uint chip_flags,
struct udevice **devp);
/**
* dm_i2c_reg_read() - Read a value from an I2C register
*
* This reads a single value from the given address in an I2C chip
*
* @addr: Address to read from
* @return value read, or -ve on error
*/
int dm_i2c_reg_read(struct udevice *dev, uint offset);
/**
* dm_i2c_reg_write() - Write a value to an I2C register
*
* This writes a single value to the given address in an I2C chip
*
* @addr: Address to write to
* @val: Value to write (normally a byte)
* @return 0 on success, -ve on error
*/
int dm_i2c_reg_write(struct udevice *dev, uint offset, unsigned int val);
/**
* dm_i2c_set_bus_speed() - set the speed of a bus
*
* @bus: Bus to adjust

Loading…
Cancel
Save