summaryrefslogtreecommitdiff
path: root/nuttx/drivers/audio
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-08-01 18:22:33 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-08-01 18:22:33 -0600
commit09235b6d7bf8727d27ac0f3bb6524e405cc0d723 (patch)
treeba2047ef3933359f5a307f2520258477a8353bfe /nuttx/drivers/audio
parent3662d4806995edebe1cdde5d45abb2dd5a33d3c6 (diff)
downloadnuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.tar.gz
nuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.tar.bz2
nuttx-09235b6d7bf8727d27ac0f3bb6524e405cc0d723.zip
WM8904 I2C: Fix an error in writing. I am not sure why this fixes the problem
Diffstat (limited to 'nuttx/drivers/audio')
-rw-r--r--nuttx/drivers/audio/wm8904.c24
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 = &regaddr;
- 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