diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-07 11:36:44 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-07 11:36:44 -0700 |
commit | df9b29d13e043e134e65b9f66b68fa7eae5db8f0 (patch) | |
tree | f2c9ec8792a35bf0ea0b7227cad7275a5b1d0453 /drivers/staging/iio/imu/adis16400_ring.c | |
parent | 7bc30c23c8ace3821a6732bfbe7e8f1b0995a63e (diff) | |
parent | 28276a28d8b3cd19f4449991faad4945fe557656 (diff) |
Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
* 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (28 commits)
staging: usbip: bugfix for isochronous packets and optimization
staging: usbip: bugfix add number of packets for isochronous frames
staging: usbip: bugfixes related to kthread conversion
staging: usbip: fix shutdown problems.
staging: hv: Fix GARP not sent after Quick Migration
staging: IIO: IMU: ADIS16400: Avoid using printk facility directly
staging: IIO: IMU: ADIS16400: Fix product ID check, skip embedded revision number
staging: IIO: IMU: ADIS16400: Make sure only enabled scan_elements are pushed into the ring
staging: IIO: IMU: ADIS16400: Fix addresses of GYRO and ACCEL calibration offset
staging: IIO: IMU: ADIS16400: Add delay after self test
staging: IIO: IMU: ADIS16400: Fix up SPI messages cs_change behavior
staging/rtl81*: build as loadable modules only
staging: brcm80211: removed 'is_amsdu causing toss' log spam
staging: brcm80211: fix for 'Short CCK' log spam
staging: brcm80211: fix for 'AC_BE txop..' logs spammed problem
staging: memrar: remove driver from tree
staging: sep: remove last memrar remnants
staging: fix hv_mouse build, needs delay.h
staging: fix olpc_dcon build errors
staging: sm7xx: fixed defines
...
Fix up trivial conflict in drivers/staging/memrar/memrar_handler.c
(deleted vs trivial spelling fixes)
Diffstat (limited to 'drivers/staging/iio/imu/adis16400_ring.c')
-rw-r--r-- | drivers/staging/iio/imu/adis16400_ring.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/staging/iio/imu/adis16400_ring.c b/drivers/staging/iio/imu/adis16400_ring.c index 33293fba9bcc..da28cb4288af 100644 --- a/drivers/staging/iio/imu/adis16400_ring.c +++ b/drivers/staging/iio/imu/adis16400_ring.c @@ -122,12 +122,10 @@ static int adis16400_spi_read_burst(struct device *dev, u8 *rx) .tx_buf = st->tx, .bits_per_word = 8, .len = 2, - .cs_change = 0, }, { .rx_buf = rx, .bits_per_word = 8, .len = 24, - .cs_change = 1, }, }; @@ -162,9 +160,10 @@ static void adis16400_trigger_bh_to_ring(struct work_struct *work_s) work_trigger_to_ring); struct iio_ring_buffer *ring = st->indio_dev->ring; - int i = 0; + int i = 0, j; s16 *data; size_t datasize = ring->access.get_bytes_per_datum(ring); + unsigned long mask = ring->scan_mask; data = kmalloc(datasize , GFP_KERNEL); if (data == NULL) { @@ -174,9 +173,12 @@ static void adis16400_trigger_bh_to_ring(struct work_struct *work_s) if (ring->scan_count) if (adis16400_spi_read_burst(&st->indio_dev->dev, st->rx) >= 0) - for (; i < ring->scan_count; i++) + for (; i < ring->scan_count; i++) { + j = __ffs(mask); + mask &= ~(1 << j); data[i] = be16_to_cpup( - (__be16 *)&(st->rx[i*2])); + (__be16 *)&(st->rx[j*2])); + } /* Guaranteed to be aligned with 8 byte boundary */ if (ring->scan_timestamp) |