diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-08-01 18:22:33 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-08-01 18:22:33 -0600 |
commit | 09235b6d7bf8727d27ac0f3bb6524e405cc0d723 (patch) | |
tree | ba2047ef3933359f5a307f2520258477a8353bfe /nuttx/drivers | |
parent | 3662d4806995edebe1cdde5d45abb2dd5a33d3c6 (diff) | |
download | px4-nuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.tar.gz px4-nuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.tar.bz2 px4-nuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.zip |
WM8904 I2C: Fix an error in writing. I am not sure why this fixes the problem
Diffstat (limited to 'nuttx/drivers')
-rw-r--r-- | nuttx/drivers/audio/wm8904.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/nuttx/drivers/audio/wm8904.c b/nuttx/drivers/audio/wm8904.c index ad38249d4..d2e2c4a27 100644 --- a/nuttx/drivers/audio/wm8904.c +++ b/nuttx/drivers/audio/wm8904.c @@ -348,32 +348,20 @@ static void wm8904_writereg(FAR struct wm8904_dev_s *priv, uint8_t regaddr, for (retries = 1; retries <= 3; retries++) { - struct i2c_msg_s msg[2]; - uint8_t data[2]; + uint8_t data[3]; int ret; - /* Set up to write the address */ + /* Set up the data to write */ - msg[0].addr = priv->lower->address; - msg[0].flags = 0; - msg[0].buffer = ®addr; - msg[0].length = 1; - - /* Followed by the read data */ - - data[0] = regval >> 8; - data[1] = regval & 0xff; - - msg[1].addr = priv->lower->address; - msg[1].flags = I2C_M_NORESTART; - msg[1].buffer = data; - msg[1].length = 2; + data[0] = regaddr; + data[1] = regval >> 8; + data[2] = regval & 0xff; /* Read the register data. The returned value is the number messages * completed. */ - ret = I2C_TRANSFER(priv->i2c, msg, 2); + ret = I2C_WRITE(priv->i2c, data, 3); if (ret < 0) { #ifdef CONFIG_I2C_RESET |