Merge pull request #10578 from MrKevinWeiss/pr/i2capi
drivers/i2c: Fix i2c api issues
This commit is contained in:
commit
d9be249144
@ -388,8 +388,8 @@ int i2c_write_bytes(i2c_t dev, uint16_t addr, const void *data,
|
|||||||
* @brief Convenience function for writing one byte to a given
|
* @brief Convenience function for writing one byte to a given
|
||||||
* register address
|
* register address
|
||||||
*
|
*
|
||||||
* @note This function is using a repeated start sequence for writing to the
|
* @note This function is using a continuous sequence for writing to the
|
||||||
* specified register address.
|
* specified register address. It first writes the register then data.
|
||||||
*
|
*
|
||||||
* @pre i2c_acquire must be called before accessing the bus
|
* @pre i2c_acquire must be called before accessing the bus
|
||||||
*
|
*
|
||||||
@ -414,8 +414,8 @@ int i2c_write_reg(i2c_t dev, uint16_t addr, uint16_t reg,
|
|||||||
/**
|
/**
|
||||||
* @brief Convenience function for writing data to a given register address
|
* @brief Convenience function for writing data to a given register address
|
||||||
*
|
*
|
||||||
* @note This function is using a repeated start sequence for writing to the
|
* @note This function is using a continuous sequence for writing to the
|
||||||
* specified register address.
|
* specified register address. It first writes the register then data.
|
||||||
*
|
*
|
||||||
* @pre i2c_acquire must be called before accessing the bus
|
* @pre i2c_acquire must be called before accessing the bus
|
||||||
*
|
*
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
*
|
*
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
@ -36,6 +37,9 @@ int i2c_read_reg(i2c_t dev, uint16_t addr, uint16_t reg,
|
|||||||
int i2c_read_regs(i2c_t dev, uint16_t addr, uint16_t reg,
|
int i2c_read_regs(i2c_t dev, uint16_t addr, uint16_t reg,
|
||||||
void *data, size_t len, uint8_t flags)
|
void *data, size_t len, uint8_t flags)
|
||||||
{
|
{
|
||||||
|
if (flags & (I2C_NOSTOP | I2C_NOSTART)) {
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
/* First set ADDR and register with no stop */
|
/* First set ADDR and register with no stop */
|
||||||
int ret = i2c_write_bytes(dev, addr, ®, (flags & I2C_REG16) ? 2 : 1,
|
int ret = i2c_write_bytes(dev, addr, ®, (flags & I2C_REG16) ? 2 : 1,
|
||||||
flags | I2C_NOSTOP);
|
flags | I2C_NOSTOP);
|
||||||
@ -69,6 +73,9 @@ int i2c_write_reg(i2c_t dev, uint16_t addr, uint16_t reg,
|
|||||||
int i2c_write_regs(i2c_t dev, uint16_t addr, uint16_t reg,
|
int i2c_write_regs(i2c_t dev, uint16_t addr, uint16_t reg,
|
||||||
const void *data, size_t len, uint8_t flags)
|
const void *data, size_t len, uint8_t flags)
|
||||||
{
|
{
|
||||||
|
if (flags & (I2C_NOSTOP | I2C_NOSTART)) {
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
/* First set ADDR and register with no stop */
|
/* First set ADDR and register with no stop */
|
||||||
int ret = i2c_write_bytes(dev, addr, ®, (flags & I2C_REG16) ? 2 : 1,
|
int ret = i2c_write_bytes(dev, addr, ®, (flags & I2C_REG16) ? 2 : 1,
|
||||||
flags | I2C_NOSTOP);
|
flags | I2C_NOSTOP);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user