Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249838
b: refs/heads/master
c: f535e08
h: refs/heads/master
v: v3
  • Loading branch information
Michael Hennerich authored and Greg Kroah-Hartman committed May 19, 2011
1 parent b64e486 commit 2264b0f
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 69c272cc8edf3e5432859a9c1bcb51a64b2accb5
refs/heads/master: f535e08eb60edbfb9f8ff660c9512b498ba0e1de
43 changes: 33 additions & 10 deletions trunk/drivers/staging/iio/meter/ade7758_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ static int ade7758_spi_write_reg_24(struct device *dev,
return ret;
}

static int ade7758_spi_read_reg_8(struct device *dev,
int ade7758_spi_read_reg_8(struct device *dev,
u8 reg_address,
u8 *val)
{
Expand All @@ -111,9 +111,15 @@ static int ade7758_spi_read_reg_8(struct device *dev,
struct spi_transfer xfers[] = {
{
.tx_buf = st->tx,
.bits_per_word = 8,
.len = 1,
.delay_usecs = 4,
},
{
.tx_buf = &st->tx[1],
.rx_buf = st->rx,
.bits_per_word = 8,
.len = 2,
.len = 1,
},
};

Expand All @@ -122,14 +128,15 @@ static int ade7758_spi_read_reg_8(struct device *dev,
st->tx[1] = 0;

spi_message_init(&msg);
spi_message_add_tail(xfers, &msg);
spi_message_add_tail(&xfers[0], &msg);
spi_message_add_tail(&xfers[1], &msg);
ret = spi_sync(st->us, &msg);
if (ret) {
dev_err(&st->us->dev, "problem when reading 8 bit register 0x%02X",
reg_address);
goto error_ret;
}
*val = st->rx[1];
*val = st->rx[0];

error_ret:
mutex_unlock(&st->buf_lock);
Expand All @@ -147,26 +154,35 @@ static int ade7758_spi_read_reg_16(struct device *dev,
struct spi_transfer xfers[] = {
{
.tx_buf = st->tx,
.bits_per_word = 8,
.len = 1,
.delay_usecs = 4,
},
{
.tx_buf = &st->tx[1],
.rx_buf = st->rx,
.bits_per_word = 8,
.len = 3,
.len = 2,
},
};


mutex_lock(&st->buf_lock);
st->tx[0] = ADE7758_READ_REG(reg_address);
st->tx[1] = 0;
st->tx[2] = 0;

spi_message_init(&msg);
spi_message_add_tail(xfers, &msg);
spi_message_add_tail(&xfers[0], &msg);
spi_message_add_tail(&xfers[1], &msg);
ret = spi_sync(st->us, &msg);
if (ret) {
dev_err(&st->us->dev, "problem when reading 16 bit register 0x%02X",
reg_address);
goto error_ret;
}
*val = (st->rx[1] << 8) | st->rx[2];

*val = (st->rx[0] << 8) | st->rx[1];

error_ret:
mutex_unlock(&st->buf_lock);
Expand All @@ -184,9 +200,15 @@ static int ade7758_spi_read_reg_24(struct device *dev,
struct spi_transfer xfers[] = {
{
.tx_buf = st->tx,
.bits_per_word = 8,
.len = 1,
.delay_usecs = 4,
},
{
.tx_buf = &st->tx[1],
.rx_buf = st->rx,
.bits_per_word = 8,
.len = 4,
.len = 3,
},
};

Expand All @@ -197,14 +219,15 @@ static int ade7758_spi_read_reg_24(struct device *dev,
st->tx[3] = 0;

spi_message_init(&msg);
spi_message_add_tail(xfers, &msg);
spi_message_add_tail(&xfers[0], &msg);
spi_message_add_tail(&xfers[1], &msg);
ret = spi_sync(st->us, &msg);
if (ret) {
dev_err(&st->us->dev, "problem when reading 24 bit register 0x%02X",
reg_address);
goto error_ret;
}
*val = (st->rx[1] << 16) | (st->rx[2] << 8) | st->rx[3];
*val = (st->rx[0] << 16) | (st->rx[1] << 8) | st->rx[2];

error_ret:
mutex_unlock(&st->buf_lock);
Expand Down

0 comments on commit 2264b0f

Please sign in to comment.