diff options
Diffstat (limited to 'drivers/staging/iio/accel')
-rw-r--r-- | drivers/staging/iio/accel/accel.h | 42 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16209_core.c | 30 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16209_ring.c | 49 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16220_core.c | 14 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16240_core.c | 27 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16240_ring.c | 41 | ||||
-rw-r--r-- | drivers/staging/iio/accel/inclinometer.h | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/lis3l02dq_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/lis3l02dq_ring.c | 62 | ||||
-rw-r--r-- | drivers/staging/iio/accel/sca3000_core.c | 4 | ||||
-rw-r--r-- | drivers/staging/iio/accel/sca3000_ring.c | 12 |
11 files changed, 158 insertions, 127 deletions
diff --git a/drivers/staging/iio/accel/accel.h b/drivers/staging/iio/accel/accel.h index 1b6e37f76200..01e930201aa8 100644 --- a/drivers/staging/iio/accel/accel.h +++ b/drivers/staging/iio/accel/accel.h @@ -14,14 +14,44 @@ #define IIO_DEV_ATTR_ACCEL_Z_OFFSET(_mode, _show, _store, _addr) \ IIO_DEVICE_ATTR(accel_z_offset, _mode, _show, _store, _addr) -#define IIO_DEV_ATTR_ACCEL_X_GAIN(_mode, _show, _store, _addr) \ - IIO_DEVICE_ATTR(accel_x_gain, _mode, _show, _store, _addr) +#define IIO_CONST_ATTR_ACCEL_SCALE(_string) \ + IIO_CONST_ATTR(accel_scale, _string) -#define IIO_DEV_ATTR_ACCEL_Y_GAIN(_mode, _show, _store, _addr) \ - IIO_DEVICE_ATTR(accel_y_gain, _mode, _show, _store, _addr) +#define IIO_DEV_ATTR_ACCEL_SCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_scale, _mode, _show, _store, _addr) -#define IIO_DEV_ATTR_ACCEL_Z_GAIN(_mode, _show, _store, _addr) \ - IIO_DEVICE_ATTR(accel_z_gain, _mode, _show, _store, _addr) +#define IIO_DEV_ATTR_ACCEL_X_SCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_x_scale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Y_SCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_y_scale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Z_SCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_z_scale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_CALIBBIAS(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_calibbias, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_X_CALIBBIAS(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_x_calibbias, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Y_CALIBBIAS(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_y_calibbias, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Z_CALIBBIAS(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_z_calibbias, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_CALIBSCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_calibscale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_X_CALIBSCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_x_calibscale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Y_CALIBSCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_y_calibscale, _mode, _show, _store, _addr) + +#define IIO_DEV_ATTR_ACCEL_Z_CALIBSCALE(_mode, _show, _store, _addr) \ + IIO_DEVICE_ATTR(accel_z_calibscale, _mode, _show, _store, _addr) #define IIO_DEV_ATTR_ACCEL(_show, _addr) \ IIO_DEVICE_ATTR(accel_raw, S_IRUGO, _show, NULL, _addr) diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c index 6c6923f2eaa5..9ee523a044d5 100644 --- a/drivers/staging/iio/accel/adis16209_core.c +++ b/drivers/staging/iio/accel/adis16209_core.c @@ -393,7 +393,7 @@ err_ret: static IIO_DEV_ATTR_IN_NAMED_RAW(supply, adis16209_read_14bit_unsigned, ADIS16209_SUPPLY_OUT); -static IIO_CONST_ATTR(in_supply_scale, "0.30518"); +static IIO_CONST_ATTR_IN_NAMED_SCALE(supply, "0.30518"); static IIO_DEV_ATTR_IN_RAW(0, adis16209_read_12bit_unsigned, ADIS16209_AUX_ADC); static IIO_CONST_ATTR(in0_scale, "0.6105"); @@ -402,40 +402,32 @@ static IIO_DEV_ATTR_ACCEL_X(adis16209_read_14bit_signed, ADIS16209_XACCL_OUT); static IIO_DEV_ATTR_ACCEL_Y(adis16209_read_14bit_signed, ADIS16209_YACCL_OUT); -static IIO_DEV_ATTR_ACCEL_X_OFFSET(S_IWUSR | S_IRUGO, +static IIO_DEV_ATTR_ACCEL_X_CALIBBIAS(S_IWUSR | S_IRUGO, adis16209_read_14bit_signed, adis16209_write_16bit, ADIS16209_XACCL_NULL); -static IIO_DEV_ATTR_ACCEL_Y_OFFSET(S_IWUSR | S_IRUGO, +static IIO_DEV_ATTR_ACCEL_Y_CALIBBIAS(S_IWUSR | S_IRUGO, adis16209_read_14bit_signed, adis16209_write_16bit, ADIS16209_YACCL_NULL); -static IIO_CONST_ATTR(accel_scale, "0.24414"); +static IIO_CONST_ATTR_ACCEL_SCALE("0.002394195531"); static IIO_DEV_ATTR_INCLI_X(adis16209_read_14bit_signed, ADIS16209_XINCL_OUT); static IIO_DEV_ATTR_INCLI_Y(adis16209_read_14bit_signed, ADIS16209_YINCL_OUT); -static IIO_DEV_ATTR_INCLI_X_OFFSET(S_IWUSR | S_IRUGO, - adis16209_read_14bit_signed, - adis16209_write_16bit, - ADIS16209_XACCL_NULL); -static IIO_DEV_ATTR_INCLI_Y_OFFSET(S_IWUSR | S_IRUGO, - adis16209_read_14bit_signed, - adis16209_write_16bit, - ADIS16209_YACCL_NULL); -static IIO_CONST_ATTR(incli_scale, "0.025"); +static IIO_CONST_ATTR(incli_scale, "0.00043633231"); static IIO_DEVICE_ATTR(rot_raw, S_IRUGO, adis16209_read_14bit_signed, NULL, ADIS16209_ROT_OUT); static IIO_DEV_ATTR_TEMP(adis16209_read_temp); -static IIO_CONST_ATTR(temp_offset, "25"); -static IIO_CONST_ATTR(temp_scale, "-0.47"); +static IIO_CONST_ATTR_TEMP_OFFSET("25"); +static IIO_CONST_ATTR_TEMP_SCALE("-0.47"); static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16209_write_reset, 0); -static IIO_CONST_ATTR(name, "adis16209"); +static IIO_CONST_ATTR_NAME("adis16209"); static struct attribute *adis16209_event_attributes[] = { NULL @@ -457,13 +449,11 @@ static struct attribute *adis16209_attributes[] = { &iio_const_attr_in0_scale.dev_attr.attr, &iio_dev_attr_accel_x_raw.dev_attr.attr, &iio_dev_attr_accel_y_raw.dev_attr.attr, - &iio_dev_attr_accel_x_offset.dev_attr.attr, - &iio_dev_attr_accel_y_offset.dev_attr.attr, + &iio_dev_attr_accel_x_calibbias.dev_attr.attr, + &iio_dev_attr_accel_y_calibbias.dev_attr.attr, &iio_const_attr_accel_scale.dev_attr.attr, &iio_dev_attr_incli_x_raw.dev_attr.attr, &iio_dev_attr_incli_y_raw.dev_attr.attr, - &iio_dev_attr_incli_x_offset.dev_attr.attr, - &iio_dev_attr_incli_y_offset.dev_attr.attr, &iio_const_attr_incli_scale.dev_attr.attr, &iio_dev_attr_rot_raw.dev_attr.attr, NULL diff --git a/drivers/staging/iio/accel/adis16209_ring.c b/drivers/staging/iio/accel/adis16209_ring.c index 25fde659d098..3eb1d559eb69 100644 --- a/drivers/staging/iio/accel/adis16209_ring.c +++ b/drivers/staging/iio/accel/adis16209_ring.c @@ -17,13 +17,13 @@ #include "../trigger.h" #include "adis16209.h" -static IIO_SCAN_EL_C(supply, ADIS16209_SCAN_SUPPLY, IIO_UNSIGNED(14), +static IIO_SCAN_EL_C(in_supply, ADIS16209_SCAN_SUPPLY, IIO_UNSIGNED(14), ADIS16209_SUPPLY_OUT, NULL); static IIO_SCAN_EL_C(accel_x, ADIS16209_SCAN_ACC_X, IIO_SIGNED(14), ADIS16209_XACCL_OUT, NULL); static IIO_SCAN_EL_C(accel_y, ADIS16209_SCAN_ACC_Y, IIO_SIGNED(14), ADIS16209_YACCL_OUT, NULL); -static IIO_SCAN_EL_C(aux_adc, ADIS16209_SCAN_AUX_ADC, IIO_UNSIGNED(12), +static IIO_SCAN_EL_C(in0, ADIS16209_SCAN_AUX_ADC, IIO_UNSIGNED(12), ADIS16209_AUX_ADC, NULL); static IIO_SCAN_EL_C(temp, ADIS16209_SCAN_TEMP, IIO_UNSIGNED(12), ADIS16209_TEMP_OUT, NULL); @@ -37,10 +37,10 @@ static IIO_SCAN_EL_C(rot, ADIS16209_SCAN_ROT, IIO_SIGNED(14), static IIO_SCAN_EL_TIMESTAMP(8); static struct attribute *adis16209_scan_el_attrs[] = { - &iio_scan_el_supply.dev_attr.attr, + &iio_scan_el_in_supply.dev_attr.attr, &iio_scan_el_accel_x.dev_attr.attr, &iio_scan_el_accel_y.dev_attr.attr, - &iio_scan_el_aux_adc.dev_attr.attr, + &iio_scan_el_in0.dev_attr.attr, &iio_scan_el_temp.dev_attr.attr, &iio_scan_el_incli_x.dev_attr.attr, &iio_scan_el_incli_y.dev_attr.attr, @@ -115,11 +115,11 @@ static void adis16209_trigger_bh_to_ring(struct work_struct *work_s) struct adis16209_state *st = container_of(work_s, struct adis16209_state, work_trigger_to_ring); + struct iio_ring_buffer *ring = st->indio_dev->ring; int i = 0; s16 *data; - size_t datasize = st->indio_dev - ->ring->access.get_bpd(st->indio_dev->ring); + size_t datasize = ring->access.get_bytes_per_datum(ring); data = kmalloc(datasize , GFP_KERNEL); if (data == NULL) { @@ -127,19 +127,19 @@ static void adis16209_trigger_bh_to_ring(struct work_struct *work_s) return; } - if (st->indio_dev->scan_count) + if (ring->scan_count) if (adis16209_read_ring_data(&st->indio_dev->dev, st->rx) >= 0) - for (; i < st->indio_dev->scan_count; i++) + for (; i < ring->scan_count; i++) data[i] = be16_to_cpup( (__be16 *)&(st->rx[i*2])); /* Guaranteed to be aligned with 8 byte boundary */ - if (st->indio_dev->scan_timestamp) + if (ring->scan_timestamp) *((s64 *)(data + ((i + 3)/4)*4)) = st->last_timestamp; - st->indio_dev->ring->access.store_to(st->indio_dev->ring, - (u8 *)data, - st->last_timestamp); + ring->access.store_to(ring, + (u8 *)data, + st->last_timestamp); iio_trigger_notify_done(st->indio_dev->trig); kfree(data); @@ -159,19 +159,6 @@ int adis16209_configure_ring(struct iio_dev *indio_dev) struct adis16209_state *st = indio_dev->dev_data; struct iio_ring_buffer *ring; INIT_WORK(&st->work_trigger_to_ring, adis16209_trigger_bh_to_ring); - /* Set default scan mode */ - - iio_scan_mask_set(indio_dev, iio_scan_el_supply.number); - iio_scan_mask_set(indio_dev, iio_scan_el_rot.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_x.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_y.number); - iio_scan_mask_set(indio_dev, iio_scan_el_temp.number); - iio_scan_mask_set(indio_dev, iio_scan_el_aux_adc.number); - iio_scan_mask_set(indio_dev, iio_scan_el_incli_x.number); - iio_scan_mask_set(indio_dev, iio_scan_el_incli_y.number); - indio_dev->scan_timestamp = true; - - indio_dev->scan_el_attrs = &adis16209_scan_el_group; ring = iio_sw_rb_allocate(indio_dev); if (!ring) { @@ -182,11 +169,23 @@ int adis16209_configure_ring(struct iio_dev *indio_dev) /* Effectively select the ring buffer implementation */ iio_ring_sw_register_funcs(&ring->access); ring->bpe = 2; + ring->scan_el_attrs = &adis16209_scan_el_group; + ring->scan_timestamp = true; ring->preenable = &iio_sw_ring_preenable; ring->postenable = &iio_triggered_ring_postenable; ring->predisable = &iio_triggered_ring_predisable; ring->owner = THIS_MODULE; + /* Set default scan mode */ + iio_scan_mask_set(ring, iio_scan_el_in_supply.number); + iio_scan_mask_set(ring, iio_scan_el_rot.number); + iio_scan_mask_set(ring, iio_scan_el_accel_x.number); + iio_scan_mask_set(ring, iio_scan_el_accel_y.number); + iio_scan_mask_set(ring, iio_scan_el_temp.number); + iio_scan_mask_set(ring, iio_scan_el_in0.number); + iio_scan_mask_set(ring, iio_scan_el_incli_x.number); + iio_scan_mask_set(ring, iio_scan_el_incli_y.number); + ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16209_poll_func_th); if (ret) goto error_iio_sw_rb_free; diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c index bb7d76539cd7..032616ee65af 100644 --- a/drivers/staging/iio/accel/adis16220_core.c +++ b/drivers/staging/iio/accel/adis16220_core.c @@ -487,7 +487,7 @@ static struct bin_attribute adc2_bin = { static IIO_DEV_ATTR_IN_NAMED_RAW(supply, adis16220_read_12bit_unsigned, ADIS16220_CAPT_SUPPLY); -static IIO_CONST_ATTR(in_supply_scale, "0.0012207"); +static IIO_CONST_ATTR_IN_NAMED_SCALE(supply, "0.0012207"); static IIO_DEV_ATTR_ACCEL(adis16220_read_16bit, ADIS16220_CAPT_BUFA); static IIO_DEVICE_ATTR(accel_peak_raw, S_IRUGO, adis16220_read_16bit, NULL, ADIS16220_CAPT_PEAKA); @@ -495,9 +495,10 @@ static IIO_DEV_ATTR_ACCEL_OFFSET(S_IWUSR | S_IRUGO, adis16220_read_16bit, adis16220_write_16bit, ADIS16220_ACCL_NULL); +static IIO_CONST_ATTR_ACCEL_SCALE("0.18704223545"); static IIO_DEV_ATTR_TEMP_RAW(adis16220_read_12bit_unsigned); -static IIO_CONST_ATTR(temp_offset, "25"); -static IIO_CONST_ATTR(temp_scale, "-0.47"); +static IIO_CONST_ATTR_TEMP_OFFSET("25"); +static IIO_CONST_ATTR_TEMP_SCALE("-0.47"); static IIO_DEV_ATTR_IN_RAW(0, adis16220_read_16bit, ADIS16220_CAPT_BUF1); static IIO_DEV_ATTR_IN_RAW(1, adis16220_read_16bit, ADIS16220_CAPT_BUF2); @@ -518,9 +519,9 @@ static IIO_DEV_ATTR_CAPTURE_COUNT(S_IWUSR | S_IRUGO, adis16220_write_16bit, ADIS16220_CAPT_PNTR); -static IIO_CONST_ATTR_AVAIL_SAMP_FREQ("100200"); +static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("100200"); -static IIO_CONST_ATTR(name, "adis16220"); +static IIO_CONST_ATTR_NAME("adis16220"); static struct attribute *adis16220_attributes[] = { &iio_dev_attr_in_supply_raw.dev_attr.attr, @@ -528,12 +529,13 @@ static struct attribute *adis16220_attributes[] = { &iio_dev_attr_accel_raw.dev_attr.attr, &iio_dev_attr_accel_offset.dev_attr.attr, &iio_dev_attr_accel_peak_raw.dev_attr.attr, + &iio_const_attr_accel_scale.dev_attr.attr, &iio_dev_attr_temp_raw.dev_attr.attr, &iio_dev_attr_in0_raw.dev_attr.attr, &iio_dev_attr_in1_raw.dev_attr.attr, &iio_const_attr_temp_offset.dev_attr.attr, &iio_const_attr_temp_scale.dev_attr.attr, - &iio_const_attr_available_sampling_frequency.dev_attr.attr, + &iio_const_attr_sampling_frequency_available.dev_attr.attr, &iio_dev_attr_reset.dev_attr.attr, &iio_dev_attr_capture.dev_attr.attr, &iio_dev_attr_capture_count.dev_attr.attr, diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c index 3e9531dd0000..49e172a6a0cd 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++ b/drivers/staging/iio/accel/adis16240_core.c @@ -380,7 +380,10 @@ static IIO_DEV_ATTR_IN_NAMED_RAW(supply, adis16240_read_10bit_unsigned, ADIS16240_SUPPLY_OUT); static IIO_DEV_ATTR_IN_RAW(0, adis16240_read_10bit_signed, ADIS16240_AUX_ADC); -static IIO_CONST_ATTR(in_supply_scale, "0.00488"); +static IIO_CONST_ATTR_IN_NAMED_SCALE(supply, "0.00488"); + +static IIO_CONST_ATTR_ACCEL_SCALE("0.50406181"); +static IIO_CONST_ATTR(accel_peak_scale, "6.6292954"); static IIO_DEV_ATTR_ACCEL_X(adis16240_read_10bit_signed, ADIS16240_XACCL_OUT); static IIO_DEVICE_ATTR(accel_x_peak_raw, S_IRUGO, @@ -400,26 +403,26 @@ static IIO_DEVICE_ATTR(accel_z_peak_raw, S_IRUGO, static IIO_DEVICE_ATTR(accel_xyz_squared_peak_raw, S_IRUGO, adis16240_read_12bit_signed, NULL, ADIS16240_XYZPEAK_OUT); -static IIO_DEV_ATTR_ACCEL_X_OFFSET(S_IWUSR | S_IRUGO, +static IIO_DEV_ATTR_ACCEL_X_CALIBBIAS(S_IWUSR | S_IRUGO, adis16240_read_10bit_signed, adis16240_write_16bit, ADIS16240_XACCL_OFF); -static IIO_DEV_ATTR_ACCEL_Y_OFFSET(S_IWUSR | S_IRUGO, +static IIO_DEV_ATTR_ACCEL_Y_CALIBBIAS(S_IWUSR | S_IRUGO, adis16240_read_10bit_signed, adis16240_write_16bit, ADIS16240_YACCL_OFF); -static IIO_DEV_ATTR_ACCEL_Z_OFFSET(S_IWUSR | S_IRUGO, +static IIO_DEV_ATTR_ACCEL_Z_CALIBBIAS(S_IWUSR | S_IRUGO, adis16240_read_10bit_signed, adis16240_write_16bit, ADIS16240_ZACCL_OFF); static IIO_DEV_ATTR_TEMP_RAW(adis16240_read_10bit_unsigned); -static IIO_CONST_ATTR(temp_scale, "0.244"); +static IIO_CONST_ATTR_TEMP_SCALE("0.244"); static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16240_write_reset, 0); -static IIO_CONST_ATTR_AVAIL_SAMP_FREQ("4096"); +static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("4096"); -static IIO_CONST_ATTR(name, "adis16240"); +static IIO_CONST_ATTR_NAME("adis16240"); static struct attribute *adis16240_event_attributes[] = { NULL @@ -433,19 +436,21 @@ static struct attribute *adis16240_attributes[] = { &iio_dev_attr_in_supply_raw.dev_attr.attr, &iio_const_attr_in_supply_scale.dev_attr.attr, &iio_dev_attr_in0_raw.dev_attr.attr, + &iio_const_attr_accel_scale.dev_attr.attr, + &iio_const_attr_accel_peak_scale.dev_attr.attr, &iio_dev_attr_accel_x_raw.dev_attr.attr, - &iio_dev_attr_accel_x_offset.dev_attr.attr, + &iio_dev_attr_accel_x_calibbias.dev_attr.attr, &iio_dev_attr_accel_x_peak_raw.dev_attr.attr, &iio_dev_attr_accel_y_raw.dev_attr.attr, - &iio_dev_attr_accel_y_offset.dev_attr.attr, + &iio_dev_attr_accel_y_calibbias.dev_attr.attr, &iio_dev_attr_accel_y_peak_raw.dev_attr.attr, &iio_dev_attr_accel_z_raw.dev_attr.attr, - &iio_dev_attr_accel_z_offset.dev_attr.attr, + &iio_dev_attr_accel_z_calibbias.dev_attr.attr, &iio_dev_attr_accel_z_peak_raw.dev_attr.attr, &iio_dev_attr_accel_xyz_squared_peak_raw.dev_attr.attr, &iio_dev_attr_temp_raw.dev_attr.attr, &iio_const_attr_temp_scale.dev_attr.attr, - &iio_const_attr_available_sampling_frequency.dev_attr.attr, + &iio_const_attr_sampling_frequency_available.dev_attr.attr, &iio_dev_attr_reset.dev_attr.attr, &iio_const_attr_name.dev_attr.attr, NULL diff --git a/drivers/staging/iio/accel/adis16240_ring.c b/drivers/staging/iio/accel/adis16240_ring.c index cd69a2e2bb9a..9282372e7a69 100644 --- a/drivers/staging/iio/accel/adis16240_ring.c +++ b/drivers/staging/iio/accel/adis16240_ring.c @@ -17,7 +17,7 @@ #include "../trigger.h" #include "adis16240.h" -static IIO_SCAN_EL_C(supply, ADIS16240_SCAN_SUPPLY, IIO_UNSIGNED(10), +static IIO_SCAN_EL_C(in_supply, ADIS16240_SCAN_SUPPLY, IIO_UNSIGNED(10), ADIS16240_SUPPLY_OUT, NULL); static IIO_SCAN_EL_C(accel_x, ADIS16240_SCAN_ACC_X, IIO_SIGNED(10), ADIS16240_XACCL_OUT, NULL); @@ -25,7 +25,7 @@ static IIO_SCAN_EL_C(accel_y, ADIS16240_SCAN_ACC_Y, IIO_SIGNED(10), ADIS16240_YACCL_OUT, NULL); static IIO_SCAN_EL_C(accel_z, ADIS16240_SCAN_ACC_Z, IIO_SIGNED(10), ADIS16240_ZACCL_OUT, NULL); -static IIO_SCAN_EL_C(aux_adc, ADIS16240_SCAN_AUX_ADC, IIO_UNSIGNED(10), +static IIO_SCAN_EL_C(in0, ADIS16240_SCAN_AUX_ADC, IIO_UNSIGNED(10), ADIS16240_AUX_ADC, NULL); static IIO_SCAN_EL_C(temp, ADIS16240_SCAN_TEMP, IIO_UNSIGNED(10), ADIS16240_TEMP_OUT, NULL); @@ -33,11 +33,11 @@ static IIO_SCAN_EL_C(temp, ADIS16240_SCAN_TEMP, IIO_UNSIGNED(10), static IIO_SCAN_EL_TIMESTAMP(6); static struct attribute *adis16240_scan_el_attrs[] = { - &iio_scan_el_supply.dev_attr.attr, + &iio_scan_el_in_supply.dev_attr.attr, &iio_scan_el_accel_x.dev_attr.attr, &iio_scan_el_accel_y.dev_attr.attr, &iio_scan_el_accel_z.dev_attr.attr, - &iio_scan_el_aux_adc.dev_attr.attr, + &iio_scan_el_in0.dev_attr.attr, &iio_scan_el_temp.dev_attr.attr, &iio_scan_el_timestamp.dev_attr.attr, NULL, @@ -107,11 +107,11 @@ static void adis16240_trigger_bh_to_ring(struct work_struct *work_s) struct adis16240_state *st = container_of(work_s, struct adis16240_state, work_trigger_to_ring); + struct iio_ring_buffer *ring = st->indio_dev->ring; int i = 0; s16 *data; - size_t datasize = st->indio_dev - ->ring->access.get_bpd(st->indio_dev->ring); + size_t datasize = ring->access.get_bytes_per_datum(ring); data = kmalloc(datasize , GFP_KERNEL); if (data == NULL) { @@ -119,17 +119,17 @@ static void adis16240_trigger_bh_to_ring(struct work_struct *work_s) return; } - if (st->indio_dev->scan_count) + if (ring->scan_count) if (adis16240_read_ring_data(&st->indio_dev->dev, st->rx) >= 0) - for (; i < st->indio_dev->scan_count; i++) + for (; i < ring->scan_count; i++) data[i] = be16_to_cpup( (__be16 *)&(st->rx[i*2])); /* Guaranteed to be aligned with 8 byte boundary */ - if (st->indio_dev->scan_timestamp) + if (ring->scan_timestamp) *((s64 *)(data + ((i + 3)/4)*4)) = st->last_timestamp; - st->indio_dev->ring->access.store_to(st->indio_dev->ring, + ring->access.store_to(ring, (u8 *)data, st->last_timestamp); @@ -151,17 +151,6 @@ int adis16240_configure_ring(struct iio_dev *indio_dev) struct adis16240_state *st = indio_dev->dev_data; struct iio_ring_buffer *ring; INIT_WORK(&st->work_trigger_to_ring, adis16240_trigger_bh_to_ring); - /* Set default scan mode */ - - iio_scan_mask_set(indio_dev, iio_scan_el_supply.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_x.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_y.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_z.number); - iio_scan_mask_set(indio_dev, iio_scan_el_temp.number); - iio_scan_mask_set(indio_dev, iio_scan_el_aux_adc.number); - indio_dev->scan_timestamp = true; - - indio_dev->scan_el_attrs = &adis16240_scan_el_group; ring = iio_sw_rb_allocate(indio_dev); if (!ring) { @@ -172,11 +161,21 @@ int adis16240_configure_ring(struct iio_dev *indio_dev) /* Effectively select the ring buffer implementation */ iio_ring_sw_register_funcs(&ring->access); ring->bpe = 2; + ring->scan_el_attrs = &adis16240_scan_el_group; + ring->scan_timestamp = true; ring->preenable = &iio_sw_ring_preenable; ring->postenable = &iio_triggered_ring_postenable; ring->predisable = &iio_triggered_ring_predisable; ring->owner = THIS_MODULE; + /* Set default scan mode */ + iio_scan_mask_set(ring, iio_scan_el_in_supply.number); + iio_scan_mask_set(ring, iio_scan_el_accel_x.number); + iio_scan_mask_set(ring, iio_scan_el_accel_y.number); + iio_scan_mask_set(ring, iio_scan_el_accel_z.number); + iio_scan_mask_set(ring, iio_scan_el_temp.number); + iio_scan_mask_set(ring, iio_scan_el_in0.number); + ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16240_poll_func_th); if (ret) goto error_iio_sw_rb_free; diff --git a/drivers/staging/iio/accel/inclinometer.h b/drivers/staging/iio/accel/inclinometer.h index 5b49f835eac5..faf73d7892e0 100644 --- a/drivers/staging/iio/accel/inclinometer.h +++ b/drivers/staging/iio/accel/inclinometer.h @@ -21,3 +21,5 @@ #define IIO_DEV_ATTR_INCLI_Z_OFFSET(_mode, _show, _store, _addr) \ IIO_DEVICE_ATTR(incli_z_offset, _mode, _show, _store, _addr) +#define IIO_CONST_ATTR_INCLI_SCALE(_string) \ + IIO_CONST_ATTR(incli_scale, _string) diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c index 0ee933737545..655f2b7672e0 100644 --- a/drivers/staging/iio/accel/lis3l02dq_core.c +++ b/drivers/staging/iio/accel/lis3l02dq_core.c @@ -731,7 +731,7 @@ static struct attribute_group lis3l02dq_event_attribute_group = { .attrs = lis3l02dq_event_attributes, }; -static IIO_CONST_ATTR(name, "lis3l02dq"); +static IIO_CONST_ATTR_NAME("lis3l02dq"); static IIO_CONST_ATTR(accel_scale, "0.00958"); static struct attribute *lis3l02dq_attributes[] = { diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c index a960a8ff3c40..a68a381836e1 100644 --- a/drivers/staging/iio/accel/lis3l02dq_ring.c +++ b/drivers/staging/iio/accel/lis3l02dq_ring.c @@ -150,38 +150,40 @@ ssize_t lis3l02dq_read_accel_from_ring(struct device *dev, int ret, len = 0, i = 0; struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); struct iio_dev *dev_info = dev_get_drvdata(dev); + struct iio_ring_buffer *ring = dev_info->ring; + struct attribute_group *scan_el_attrs = ring->scan_el_attrs; s16 *data; - while (dev_info->scan_el_attrs->attrs[i]) { + while (scan_el_attrs->attrs[i]) { el = to_iio_scan_el((struct device_attribute *) - (dev_info->scan_el_attrs->attrs[i])); + (scan_el_attrs->attrs[i])); /* label is in fact the address */ if (el->label == this_attr->address) break; i++; } - if (!dev_info->scan_el_attrs->attrs[i]) { + if (!scan_el_attrs->attrs[i]) { ret = -EINVAL; goto error_ret; } /* If this element is in the scan mask */ - ret = iio_scan_mask_query(dev_info, el->number); + ret = iio_scan_mask_query(ring, el->number); if (ret < 0) goto error_ret; if (ret) { - data = kmalloc(dev_info->ring->access.get_bpd(dev_info->ring), + data = kmalloc(ring->access.get_bytes_per_datum(ring), GFP_KERNEL); if (data == NULL) return -ENOMEM; - ret = dev_info->ring->access.read_last(dev_info->ring, - (u8 *)data); + ret = ring->access.read_last(ring, + (u8 *)data); if (ret) goto error_free_data; } else { ret = -EINVAL; goto error_ret; } - len = iio_scan_mask_count_to_right(dev_info, el->number); + len = iio_scan_mask_count_to_right(ring, el->number); if (len < 0) { ret = len; goto error_free_data; @@ -211,11 +213,12 @@ static const u8 read_all_tx_array[] = { **/ static int lis3l02dq_read_all(struct lis3l02dq_state *st, u8 *rx_array) { + struct iio_ring_buffer *ring = st->help.indio_dev->ring; struct spi_transfer *xfers; struct spi_message msg; int ret, i, j = 0; - xfers = kzalloc((st->help.indio_dev->scan_count) * 2 + xfers = kzalloc((ring->scan_count) * 2 * sizeof(*xfers), GFP_KERNEL); if (!xfers) return -ENOMEM; @@ -223,7 +226,7 @@ static int lis3l02dq_read_all(struct lis3l02dq_state *st, u8 *rx_array) mutex_lock(&st->buf_lock); for (i = 0; i < ARRAY_SIZE(read_all_tx_array)/4; i++) { - if (st->help.indio_dev->scan_mask & (1 << i)) { + if (ring->scan_mask & (1 << i)) { /* lower byte */ xfers[j].tx_buf = st->tx + 2*j; st->tx[2*j] = read_all_tx_array[i*4]; @@ -251,7 +254,7 @@ static int lis3l02dq_read_all(struct lis3l02dq_state *st, u8 *rx_array) * values in alternate bytes */ spi_message_init(&msg); - for (j = 0; j < st->help.indio_dev->scan_count * 2; j++) + for (j = 0; j < ring->scan_count * 2; j++) spi_message_add_tail(&xfers[j], &msg); ret = spi_sync(st->us, &msg); @@ -279,13 +282,13 @@ static int lis3l02dq_get_ring_element(struct iio_sw_ring_helper_state *h, u8 *rx_array ; s16 *data = (s16 *)buf; - rx_array = kzalloc(4 * (h->indio_dev->scan_count), GFP_KERNEL); + rx_array = kzalloc(4 * (h->indio_dev->ring->scan_count), GFP_KERNEL); if (rx_array == NULL) return -ENOMEM; ret = lis3l02dq_read_all(lis3l02dq_h_to_s(h), rx_array); if (ret < 0) return ret; - for (i = 0; i < h->indio_dev->scan_count; i++) + for (i = 0; i < h->indio_dev->ring->scan_count; i++) data[i] = combine_8_to_16(rx_array[i*4+1], rx_array[i*4+3]); kfree(rx_array); @@ -479,28 +482,29 @@ int lis3l02dq_configure_ring(struct iio_dev *indio_dev) { int ret; struct iio_sw_ring_helper_state *h = iio_dev_get_devdata(indio_dev); - + struct iio_ring_buffer *ring; INIT_WORK(&h->work_trigger_to_ring, lis3l02dq_trigger_bh_to_ring); - /* Set default scan mode */ h->get_ring_element = &lis3l02dq_get_ring_element; - iio_scan_mask_set(indio_dev, iio_scan_el_accel_x.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_y.number); - iio_scan_mask_set(indio_dev, iio_scan_el_accel_z.number); - indio_dev->scan_timestamp = true; - - indio_dev->scan_el_attrs = &lis3l02dq_scan_el_group; - indio_dev->ring = iio_sw_rb_allocate(indio_dev); - if (!indio_dev->ring) + ring = iio_sw_rb_allocate(indio_dev); + if (!ring) return -ENOMEM; + indio_dev->ring = ring; /* Effectively select the ring buffer implementation */ - iio_ring_sw_register_funcs(&indio_dev->ring->access); - indio_dev->ring->bpe = 2; - indio_dev->ring->preenable = &iio_sw_ring_preenable; - indio_dev->ring->postenable = &iio_triggered_ring_postenable; - indio_dev->ring->predisable = &iio_triggered_ring_predisable; - indio_dev->ring->owner = THIS_MODULE; + iio_ring_sw_register_funcs(&ring->access); + ring->bpe = 2; + ring->scan_el_attrs = &lis3l02dq_scan_el_group; + ring->scan_timestamp = true; + ring->preenable = &iio_sw_ring_preenable; + ring->postenable = &iio_triggered_ring_postenable; + ring->predisable = &iio_triggered_ring_predisable; + ring->owner = THIS_MODULE; + + /* Set default scan mode */ + iio_scan_mask_set(ring, iio_scan_el_accel_x.number); + iio_scan_mask_set(ring, iio_scan_el_accel_y.number); + iio_scan_mask_set(ring, iio_scan_el_accel_z.number); ret = iio_alloc_pollfunc(indio_dev, NULL, &lis3l02dq_poll_func_th); if (ret) diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c index b78b6b66ffe0..0eb2c4cdeb48 100644 --- a/drivers/staging/iio/accel/sca3000_core.c +++ b/drivers/staging/iio/accel/sca3000_core.c @@ -721,8 +721,8 @@ error_ret: } static IIO_DEV_ATTR_TEMP_RAW(sca3000_read_temp); -static IIO_CONST_ATTR(temp_scale, "0.555556"); -static IIO_CONST_ATTR(temp_offset, "-214.6"); +static IIO_CONST_ATTR_TEMP_SCALE("0.555556"); +static IIO_CONST_ATTR_TEMP_OFFSET("-214.6"); /** * sca3000_show_thresh() sysfs query of a threshold diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c index 8e8c068d401b..6d19d15c6d77 100644 --- a/drivers/staging/iio/accel/sca3000_ring.c +++ b/drivers/staging/iio/accel/sca3000_ring.c @@ -100,7 +100,7 @@ static int sca3000_ring_get_length(struct iio_ring_buffer *r) } /* only valid if resolution is kept at 11bits */ -static int sca3000_ring_get_bpd(struct iio_ring_buffer *r) +static int sca3000_ring_get_bytes_per_datum(struct iio_ring_buffer *r) { return 6; } @@ -111,7 +111,7 @@ static void sca3000_ring_release(struct device *dev) } static IIO_RING_ENABLE_ATTR; -static IIO_RING_BPS_ATTR; +static IIO_RING_BYTES_PER_DATUM_ATTR; static IIO_RING_LENGTH_ATTR; /** @@ -218,8 +218,8 @@ static struct attribute_group sca3000_scan_el_group = { */ static struct attribute *sca3000_ring_attributes[] = { &dev_attr_length.attr, - &dev_attr_bps.attr, - &dev_attr_ring_enable.attr, + &dev_attr_bytes_per_datum.attr, + &dev_attr_enable.attr, NULL, }; @@ -264,15 +264,15 @@ static inline void sca3000_rb_free(struct iio_ring_buffer *r) int sca3000_configure_ring(struct iio_dev *indio_dev) { - indio_dev->scan_el_attrs = &sca3000_scan_el_group; indio_dev->ring = sca3000_rb_allocate(indio_dev); if (indio_dev->ring == NULL) return -ENOMEM; indio_dev->modes |= INDIO_RING_HARDWARE_BUFFER; + indio_dev->ring->scan_el_attrs = &sca3000_scan_el_group; indio_dev->ring->access.rip_lots = &sca3000_rip_hw_rb; indio_dev->ring->access.get_length = &sca3000_ring_get_length; - indio_dev->ring->access.get_bpd = &sca3000_ring_get_bpd; + indio_dev->ring->access.get_bytes_per_datum = &sca3000_ring_get_bytes_per_datum; return 0; } |