As Lars-Peter noticed, I was being an idiot and the original set would never have worked. Actually it turned out that they would have also gotten the handling of shared and separate the wrong way around and there were a few other minor issues elsewhere. Now a lot of people were kind enough to take a look at the original patches and provide Acks on the mistaken assumption that the basic principle worked. (given the cc list would have been huge many people probably never saw anything other than the individual driver patches which in of themselves appeared sane). If people do not reply this time around I'll assume their acks are good for this set and apply them. (Of course if anyone want so re ack the corrected patches that is great as well!). Any tested-by's would also be great as right now I've only actually tested with one driver. Well that was an 'interesting' way to start off this cycle :( Version 1 message: Hi All, This has been on my todo list for a while. I'm not sure how we ever ended up with the mess that is the current info_mask bitmap of which properties exist for a given channel. Anyhow currently you have two types of bit in there, IIO_CHAN_INFO_SHARED_BIT (even) and IIO_CHAN_INFO_SEPARATE_BIT (odd). Whether we have odd or even elements is used to indicate whether we want an associated attribute specific to the channel, or one that is shared. E.g. in_accel_x_scale (for just the x accel channel) or in_accel_scale (for all accel channels) in_illuminance0_calibbias or in_illuminance_calibbias This led to a horrible mess in iio.h where we had macros for each option of every element added to the info_mask. Also, a while back it became apparent that sometimes we have attributes shared across all channels irrespective of their type (sampling_frequency for example). Now the obvious solution to this would be to add a third type of info_mask element, but then things are getting rather silly. Hence the proposed solution. Have separate info_mask elements for each of the two types of bit we had previously (others may follow). Advantages: 1) More consise naming of elements 2) Drop all those hideous macros 3) More space (admitedly there are lots of other ways we could have gotten that). Can't immediately think of any disadvantages other than the fact that we now have so many drivers this was rather time consuming to actually put together and almost certainly has some errors somewhere. Jonathan Jonathan Cameron (67): iio: Add broken out info_mask fields for shared_by_type and separate iio:adc:max1363 move to info_mask_(shared_by_type/separate) staging:iio:dummy move to info_mask_(shared_by_type/separate) iio:hid_sensors move to info_mask_(shared_by_type/separate) iio:accel:kxsd9 move to info_mask_(shared_by_type/separate) iio:st_sensors move to info_mask_(shared_by_type/separate) iio:adc:ad_sigma_delta move to info_mask_(shared_by_type/separate) iio:adc:ad7266 move to info_mask_(shared_by_type/separate) iio:adc:ad7298 move to info_mask_(shared_by_type/separate) iio:adc:ad7476 move to info_mask_(shared_by_type/separate) iio:adc:ad7887 move to info_mask_(shared_by_type/separate) iio:adc:at91_adc move to info_mask_(shared_by_type/separate) iio:adc:lp8778_adc move to info_mask_(shared_by_type/separate) iio:adc:ti-adc081 move to info_mask_(shared_by_type/separate) iio:adc:ti_am335x_adc move to info_mask_(shared_by_type/separate) iio:adc:viperboard_adc move to info_mask_(shared_by_type/separate) iio:amplifiers:ad8366 move to info_mask_(shared_by_type/separate) iio:dac:ad5064 move to info_mask_(shared_by_type/separate) iio:dac:ad5360 move to info_mask_(shared_by_type/separate) iio:dac:ad5380 move to info_mask_(shared_by_type/separate) iio:dac:ad5421 move to info_mask_(shared_by_type/separate) iio:dac:ad5446 move to info_mask_(shared_by_type/separate) iio:dac:ad5449 move to info_mask_(shared_by_type/separate) iio:dac:ad5504 move to info_mask_(shared_by_type/separate) iio:dac:ad5624r move to info_mask_(shared_by_type/separate) iio:dac:ad5686 move to info_mask_(shared_by_type/separate) iio:dac:ad5755 move to info_mask_(shared_by_type/separate) iio:dac:ad5764 move to info_mask_(shared_by_type/separate) iio:dac:ad5791 move to info_mask_(shared_by_type/separate) iio:dac:max517 move to info_mask_(shared_by_type/separate) iio:dac:mcp4725 move to info_mask_(shared_by_type/separate) iio:freq:ad9523 move to info_mask_(shared_by_type/separate) iio:gyro:adis16080 move to info_mask_(shared_by_type/separate) iio:gyro:adis16136 move to info_mask_(shared_by_type/separate) iio:gyro:adxrs450 move to info_mask_(shared_by_type/separate) iio:gyro:itg3200_core move to info_mask_(shared_by_type/separate) iio:imu:adis16400 move to info_mask_(shared_by_type/separate) iio:imu:adis16480 move to info_mask_(shared_by_type/separate) iio:imu:mpu6050 move to info_mask_(shared_by_type/separate) iio:light:adjd_s311 move to info_mask_(shared_by_type/separate) iio:light:lm3533 move to info_mask_(shared_by_type/separate) iio:light:tsl2563 move to info_mask_(shared_by_type/separate) iio:light:vcnl4000 move to info_mask_(shared_by_type/separate) staging:iio:accel:adis move to info_mask_(shared_by_type/separate) staging:iio:accel:adis16220 move to info_mask_(shared_by_type/separate) staging:iio:accel:lis3l02dq move to info_mask_(shared_by_type/separate) staging:iio:accel:sca3000 move to info_mask_(shared_by_type/separate) staging:iio:adc:ad7280a move to info_mask_(shared_by_type/separate) staging:iio:adc:ad7291 move to info_mask_(shared_by_type/separate) staging:iio:adc:ad7606 move to info_mask_(shared_by_type/separate) staging:iio:adc:ad799x move to info_mask_(shared_by_type/separate) staging:iio:cdc:ad7150 move to info_mask_(shared_by_type/separate) staging:iio:cdc:ad7152 move to info_mask_(shared_by_type/separate) staging:iio:cdc:ad7746 move to info_mask_(shared_by_type/separate) staging:iio:gyro:adis16060 move to info_mask_(shared_by_type/separate) staging:iio:gyro:adis16130 move to info_mask_(shared_by_type/separate) staging:iio:impedance:ad5933 move to info_mask_(shared_by_type/separate) staging:iio:light:isl29018 move to info_mask_(shared_by_type/separate) staging:iio:light:isl29028 move to info_mask_(shared_by_type/separate) staging:iio:light:tsl2x7x move to info_mask_(shared_by_type/separate) staging:iio:mag:ak8975 move to info_mask_(shared_by_type/separate) staging:iio:magnetometer:hmc5843 move to info_mask_(shared_by_type/separate) staging:iio:meter:ade7758 move to info_mask_(shared_by_type/separate) staging:iio:resolver:ad2s1200 move to info_mask_(shared_by_type/separate) staging:iio:resolver:ad2s1210 move to info_mask_(shared_by_type/separate) staging:iio:resolver:ad2s90 move to info_mask_(shared_by_type/separate) iio:core drop info_mask from struct iio_info drivers/iio/accel/hid-sensor-accel-3d.c | 24 ++++---- drivers/iio/accel/kxsd9.c | 6 +- drivers/iio/adc/ad7266.c | 12 ++-- drivers/iio/adc/ad7298.c | 10 ++-- drivers/iio/adc/ad7476.c | 10 ++-- drivers/iio/adc/ad7887.c | 8 +-- drivers/iio/adc/at91_adc.c | 4 +- drivers/iio/adc/lp8788_adc.c | 4 +- drivers/iio/adc/max1363.c | 9 +-- drivers/iio/adc/ti-adc081c.c | 4 +- drivers/iio/adc/ti_am335x_adc.c | 2 +- drivers/iio/adc/viperboard_adc.c | 2 +- drivers/iio/amplifiers/ad8366.c | 2 +- drivers/iio/dac/ad5064.c | 4 +- drivers/iio/dac/ad5360.c | 10 ++-- drivers/iio/dac/ad5380.c | 8 +-- drivers/iio/dac/ad5421.c | 10 ++-- drivers/iio/dac/ad5446.c | 4 +- drivers/iio/dac/ad5449.c | 4 +- drivers/iio/dac/ad5504.c | 4 +- drivers/iio/dac/ad5624r_spi.c | 4 +- drivers/iio/dac/ad5686.c | 6 +- drivers/iio/dac/ad5755.c | 10 ++-- drivers/iio/dac/ad5764.c | 10 ++-- drivers/iio/dac/ad5791.c | 6 +- drivers/iio/dac/max517.c | 4 +- drivers/iio/dac/mcp4725.c | 4 +- drivers/iio/frequency/ad9523.c | 8 +-- drivers/iio/gyro/adis16080.c | 22 +++---- drivers/iio/gyro/adis16136.c | 13 ++-- drivers/iio/gyro/adxrs450.c | 22 +++---- drivers/iio/gyro/hid-sensor-gyro-3d.c | 24 ++++---- drivers/iio/gyro/itg3200_core.c | 13 ++-- drivers/iio/imu/adis16400_core.c | 47 +++++++-------- drivers/iio/imu/adis16480.c | 32 +++++----- drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 10 ++-- drivers/iio/industrialio-core.c | 27 ++++++--- drivers/iio/light/adjd_s311.c | 4 +- drivers/iio/light/hid-sensor-als.c | 8 +-- drivers/iio/light/lm3533-als.c | 6 +- drivers/iio/light/tsl2563.c | 10 ++-- drivers/iio/light/vcnl4000.c | 6 +- drivers/iio/magnetometer/hid-sensor-magn-3d.c | 24 ++++---- drivers/staging/iio/accel/adis16201_core.c | 8 +-- drivers/staging/iio/accel/adis16203_core.c | 2 +- drivers/staging/iio/accel/adis16204_core.c | 8 +-- drivers/staging/iio/accel/adis16209_core.c | 4 +- drivers/staging/iio/accel/adis16220_core.c | 26 ++++---- drivers/staging/iio/accel/adis16240_core.c | 9 +-- drivers/staging/iio/accel/lis3l02dq_core.c | 11 ++-- drivers/staging/iio/accel/sca3000_core.c | 5 +- drivers/staging/iio/adc/ad7280a.c | 12 ++-- drivers/staging/iio/adc/ad7291.c | 10 ++-- drivers/staging/iio/adc/ad7606_core.c | 4 +- drivers/staging/iio/adc/ad799x_core.c | 76 ++++++++++++------------ drivers/staging/iio/cdc/ad7150.c | 8 +-- drivers/staging/iio/cdc/ad7152.c | 32 +++++----- drivers/staging/iio/cdc/ad7746.c | 48 +++++++-------- drivers/staging/iio/gyro/adis16060_core.c | 11 ++-- drivers/staging/iio/gyro/adis16130_core.c | 4 +- drivers/staging/iio/gyro/adis16260_core.c | 4 +- drivers/staging/iio/iio_simple_dummy.c | 33 +++++------ drivers/staging/iio/impedance-analyzer/ad5933.c | 10 ++-- drivers/staging/iio/light/isl29018.c | 8 +-- drivers/staging/iio/light/isl29028.c | 10 ++-- drivers/staging/iio/light/tsl2x7x_core.c | 40 ++++++------- drivers/staging/iio/magnetometer/ak8975.c | 4 +- drivers/staging/iio/magnetometer/hmc5843.c | 4 +- drivers/staging/iio/meter/ade7758_core.c | 60 +++++++++---------- drivers/staging/iio/resolver/ad2s1200.c | 4 +- drivers/staging/iio/resolver/ad2s1210.c | 4 +- drivers/staging/iio/resolver/ad2s90.c | 2 +- include/linux/iio/adc/ad_sigma_delta.h | 6 +- include/linux/iio/common/st_sensors.h | 5 +- include/linux/iio/iio.h | 79 +++---------------------- include/linux/iio/imu/adis.h | 34 +++++------ 76 files changed, 489 insertions(+), 557 deletions(-) -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html