staging:iio:treewide only use shared to decide on interfaces
[firefly-linux-kernel-4.4.55.git] / drivers / staging / iio / iio.h
index 4fb4cc42399b6e9e441f8339c02d0d4e5d9e5465..66c2604c92c4e080c54377863162d2a0e89fc6cb 100644 (file)
@@ -27,24 +27,54 @@ enum iio_data_type {
 /* Could add the raw attributes as well - allowing buffer only devices */
 enum iio_chan_info_enum {
        /* 0 is reserverd for raw attributes */
-       IIO_CHAN_INFO_SCALE_SHARED = 2,
-       IIO_CHAN_INFO_SCALE_SEPARATE,
-       IIO_CHAN_INFO_OFFSET_SHARED,
-       IIO_CHAN_INFO_OFFSET_SEPARATE,
-       IIO_CHAN_INFO_CALIBSCALE_SHARED,
-       IIO_CHAN_INFO_CALIBSCALE_SEPARATE,
-       IIO_CHAN_INFO_CALIBBIAS_SHARED,
-       IIO_CHAN_INFO_CALIBBIAS_SEPARATE,
-       IIO_CHAN_INFO_PEAK_SHARED,
-       IIO_CHAN_INFO_PEAK_SEPARATE,
-       IIO_CHAN_INFO_PEAK_SCALE_SHARED,
-       IIO_CHAN_INFO_PEAK_SCALE_SEPARATE,
-       IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SHARED,
-       IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE,
-       IIO_CHAN_INFO_AVERAGE_RAW_SHARED,
-       IIO_CHAN_INFO_AVERAGE_RAW_SEPARATE,
+       IIO_CHAN_INFO_SCALE = 1,
+       IIO_CHAN_INFO_OFFSET,
+       IIO_CHAN_INFO_CALIBSCALE,
+       IIO_CHAN_INFO_CALIBBIAS,
+       IIO_CHAN_INFO_PEAK,
+       IIO_CHAN_INFO_PEAK_SCALE,
+       IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW,
+       IIO_CHAN_INFO_AVERAGE_RAW,
 };
 
+#define IIO_CHAN_INFO_SHARED_BIT(type) BIT(type*2)
+#define IIO_CHAN_INFO_SEPARATE_BIT(type) BIT(type*2 + 1)
+
+#define IIO_CHAN_INFO_SCALE_SEPARATE_BIT               \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_SCALE)
+#define IIO_CHAN_INFO_SCALE_SHARED_BIT                 \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_SCALE)
+#define IIO_CHAN_INFO_OFFSET_SEPARATE_BIT                      \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_OFFSET)
+#define IIO_CHAN_INFO_OFFSET_SHARED_BIT                        \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_OFFSET)
+#define IIO_CHAN_INFO_CALIBSCALE_SEPARATE_BIT                  \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_CALIBSCALE)
+#define IIO_CHAN_INFO_CALIBSCALE_SHARED_BIT                    \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_CALIBSCALE)
+#define IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT                   \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_CALIBBIAS)
+#define IIO_CHAN_INFO_CALIBBIAS_SHARED_BIT                     \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_CALIBBIAS)
+#define IIO_CHAN_INFO_PEAK_SEPARATE_BIT                        \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_PEAK)
+#define IIO_CHAN_INFO_PEAK_SHARED_BIT                  \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_PEAK)
+#define IIO_CHAN_INFO_PEAKSCALE_SEPARATE_BIT                   \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_PEAKSCALE)
+#define IIO_CHAN_INFO_PEAKSCALE_SHARED_BIT                     \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_PEAKSCALE)
+#define IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE_BIT   \
+       IIO_CHAN_INFO_SEPARATE_BIT(                             \
+               IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW)
+#define IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SHARED_BIT     \
+       IIO_CHAN_INFO_SHARED_BIT(                               \
+               IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW)
+#define IIO_CHAN_INFO_AVERAGE_RAW_SEPARATE_BIT                 \
+       IIO_CHAN_INFO_SEPARATE_BIT(IIO_CHAN_INFO_AVERAGE_RAW)
+#define IIO_CHAN_INFO_AVERAGE_RAW_SHARED_BIT                   \
+       IIO_CHAN_INFO_SHARED_BIT(IIO_CHAN_INFO_AVERAGE_RAW)
+
 enum iio_endian {
        IIO_CPU,
        IIO_BE,