diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-12 15:26:33 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-12 15:26:33 -0400 |
commit | fc6ed2c6411e3ee0a3775d6d822f9b0169cc40a2 (patch) | |
tree | 5f7900d05ce0c113641609d8a251ad3487b871a3 /drivers/iio | |
parent | d99b5ac65e7827f10ba60b1ea44d7bd041d58d1d (diff) | |
parent | e59b9afecf7ddf52d31d24e800b473f19c23cfe0 (diff) |
Merge tag 'fixes-togreg-3.6a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into work-next
Various minor IIO fixes for staging-next.
Diffstat (limited to 'drivers/iio')
-rw-r--r-- | drivers/iio/dac/ad5064.c | 40 | ||||
-rw-r--r-- | drivers/iio/inkern.c | 3 |
2 files changed, 22 insertions, 21 deletions
diff --git a/drivers/iio/dac/ad5064.c b/drivers/iio/dac/ad5064.c index aa739c497f2b..eb281a2c295b 100644 --- a/drivers/iio/dac/ad5064.c +++ b/drivers/iio/dac/ad5064.c | |||
@@ -122,25 +122,6 @@ enum ad5064_type { | |||
122 | ID_AD5668_2, | 122 | ID_AD5668_2, |
123 | }; | 123 | }; |
124 | 124 | ||
125 | static int ad5064_i2c_write(struct ad5064_state *st, unsigned int cmd, | ||
126 | unsigned int addr, unsigned int val) | ||
127 | { | ||
128 | struct i2c_client *i2c = to_i2c_client(st->dev); | ||
129 | |||
130 | st->data.i2c[0] = (cmd << 4) | addr; | ||
131 | put_unaligned_be16(val, &st->data.i2c[1]); | ||
132 | return i2c_master_send(i2c, st->data.i2c, 3); | ||
133 | } | ||
134 | |||
135 | static int ad5064_spi_write(struct ad5064_state *st, unsigned int cmd, | ||
136 | unsigned int addr, unsigned int val) | ||
137 | { | ||
138 | struct spi_device *spi = to_spi_device(st->dev); | ||
139 | |||
140 | st->data.spi = cpu_to_be32(AD5064_CMD(cmd) | AD5064_ADDR(addr) | val); | ||
141 | return spi_write(spi, &st->data.spi, sizeof(st->data.spi)); | ||
142 | } | ||
143 | |||
144 | static int ad5064_write(struct ad5064_state *st, unsigned int cmd, | 125 | static int ad5064_write(struct ad5064_state *st, unsigned int cmd, |
145 | unsigned int addr, unsigned int val, unsigned int shift) | 126 | unsigned int addr, unsigned int val, unsigned int shift) |
146 | { | 127 | { |
@@ -533,6 +514,15 @@ static int __devexit ad5064_remove(struct device *dev) | |||
533 | 514 | ||
534 | #if IS_ENABLED(CONFIG_SPI_MASTER) | 515 | #if IS_ENABLED(CONFIG_SPI_MASTER) |
535 | 516 | ||
517 | static int ad5064_spi_write(struct ad5064_state *st, unsigned int cmd, | ||
518 | unsigned int addr, unsigned int val) | ||
519 | { | ||
520 | struct spi_device *spi = to_spi_device(st->dev); | ||
521 | |||
522 | st->data.spi = cpu_to_be32(AD5064_CMD(cmd) | AD5064_ADDR(addr) | val); | ||
523 | return spi_write(spi, &st->data.spi, sizeof(st->data.spi)); | ||
524 | } | ||
525 | |||
536 | static int __devinit ad5064_spi_probe(struct spi_device *spi) | 526 | static int __devinit ad5064_spi_probe(struct spi_device *spi) |
537 | { | 527 | { |
538 | const struct spi_device_id *id = spi_get_device_id(spi); | 528 | const struct spi_device_id *id = spi_get_device_id(spi); |
@@ -582,7 +572,7 @@ static int __init ad5064_spi_register_driver(void) | |||
582 | return spi_register_driver(&ad5064_spi_driver); | 572 | return spi_register_driver(&ad5064_spi_driver); |
583 | } | 573 | } |
584 | 574 | ||
585 | static void __exit ad5064_spi_unregister_driver(void) | 575 | static void ad5064_spi_unregister_driver(void) |
586 | { | 576 | { |
587 | spi_unregister_driver(&ad5064_spi_driver); | 577 | spi_unregister_driver(&ad5064_spi_driver); |
588 | } | 578 | } |
@@ -596,6 +586,16 @@ static inline void ad5064_spi_unregister_driver(void) { } | |||
596 | 586 | ||
597 | #if IS_ENABLED(CONFIG_I2C) | 587 | #if IS_ENABLED(CONFIG_I2C) |
598 | 588 | ||
589 | static int ad5064_i2c_write(struct ad5064_state *st, unsigned int cmd, | ||
590 | unsigned int addr, unsigned int val) | ||
591 | { | ||
592 | struct i2c_client *i2c = to_i2c_client(st->dev); | ||
593 | |||
594 | st->data.i2c[0] = (cmd << 4) | addr; | ||
595 | put_unaligned_be16(val, &st->data.i2c[1]); | ||
596 | return i2c_master_send(i2c, st->data.i2c, 3); | ||
597 | } | ||
598 | |||
599 | static int __devinit ad5064_i2c_probe(struct i2c_client *i2c, | 599 | static int __devinit ad5064_i2c_probe(struct i2c_client *i2c, |
600 | const struct i2c_device_id *id) | 600 | const struct i2c_device_id *id) |
601 | { | 601 | { |
diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index e2aded04996b..b5afc2ff34fd 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c | |||
@@ -198,11 +198,12 @@ struct iio_channel *iio_channel_get_all(const char *name) | |||
198 | iio_device_get(chans[mapind].indio_dev); | 198 | iio_device_get(chans[mapind].indio_dev); |
199 | mapind++; | 199 | mapind++; |
200 | } | 200 | } |
201 | mutex_unlock(&iio_map_list_lock); | ||
202 | if (mapind == 0) { | 201 | if (mapind == 0) { |
203 | ret = -ENODEV; | 202 | ret = -ENODEV; |
204 | goto error_free_chans; | 203 | goto error_free_chans; |
205 | } | 204 | } |
205 | mutex_unlock(&iio_map_list_lock); | ||
206 | |||
206 | return chans; | 207 | return chans; |
207 | 208 | ||
208 | error_free_chans: | 209 | error_free_chans: |