]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: ad7606: change channel macros parameters
authorGuillaume Stols <gstols@baylibre.com>
Mon, 10 Feb 2025 16:10:58 +0000 (17:10 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 11 Feb 2025 19:56:25 +0000 (19:56 +0000)
Add the possibility to pass the *_available parameters to the main
macro.
This is a preparation to add the new channels for software mode and
hardware mode in iio backend mode more easily.

Signed-off-by: Guillaume Stols <gstols@baylibre.com>
Link: https://patch.msgid.link/20250210-wip-bl-ad7606_add_backend_sw_mode-v4-8-160df18b1da7@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7606.h

index 7a044b499cfe16b0afdba1ec007b0c6966b03045..a35b526f3915d06a60afb18ea63afce34e1e16f0 100644 (file)
 #define AD7606_RANGE_CH_ADDR(ch)       (0x03 + ((ch) >> 1))
 #define AD7606_OS_MODE                 0x08
 
-#define AD760X_CHANNEL(num, mask_sep, mask_type, mask_all, bits) {     \
+#define AD760X_CHANNEL(num, mask_sep, mask_type, mask_all,     \
+               mask_sep_avail, mask_all_avail, bits) {         \
                .type = IIO_VOLTAGE,                            \
                .indexed = 1,                                   \
                .channel = num,                                 \
                .address = num,                                 \
                .info_mask_separate = mask_sep,                 \
+               .info_mask_separate_available =                 \
+                       mask_sep_avail,                         \
                .info_mask_shared_by_type = mask_type,          \
                .info_mask_shared_by_all = mask_all,            \
-               .scan_index = num,                              \
-               .scan_type = {                                  \
-                       .sign = 's',                            \
-                       .realbits = (bits),                     \
-                       .storagebits = (bits) > 16 ? 32 : 16,   \
-                       .endianness = IIO_CPU,                  \
-               },                                              \
-}
-
-#define AD7606_SW_CHANNEL(num, bits) {                         \
-               .type = IIO_VOLTAGE,                            \
-               .indexed = 1,                                   \
-               .channel = num,                                 \
-               .address = num,                                 \
-               .info_mask_separate =                           \
-                       BIT(IIO_CHAN_INFO_RAW) |                \
-                       BIT(IIO_CHAN_INFO_SCALE),               \
-               .info_mask_separate_available =                 \
-                       BIT(IIO_CHAN_INFO_SCALE),               \
-               .info_mask_shared_by_all =                      \
-                       BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
                .info_mask_shared_by_all_available =            \
-                       BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
+                       mask_all_avail,                         \
                .scan_index = num,                              \
                .scan_type = {                                  \
                        .sign = 's',                            \
                },                                              \
 }
 
+#define AD7606_SW_CHANNEL(num, bits)                   \
+       AD760X_CHANNEL(num,                             \
+               /* mask separate */                     \
+               BIT(IIO_CHAN_INFO_RAW) |                \
+               BIT(IIO_CHAN_INFO_SCALE),               \
+               /* mask type */                         \
+               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
+               /* mask all */                          \
+               0,                                      \
+               /* mask separate available */           \
+               BIT(IIO_CHAN_INFO_SCALE),               \
+               /* mask all available */                \
+               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
+               bits)
+
 #define AD7605_CHANNEL(num)                            \
        AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_RAW),     \
-               BIT(IIO_CHAN_INFO_SCALE), 0, 16)
+               BIT(IIO_CHAN_INFO_SCALE), 0, 0, 0, 16)
 
 #define AD7606_CHANNEL(num, bits)                      \
        AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_RAW),     \
                BIT(IIO_CHAN_INFO_SCALE),               \
-               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), bits)
+               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
+               0, 0, bits)
 
 #define AD7616_CHANNEL(num)    AD7606_SW_CHANNEL(num, 16)
 
@@ -95,7 +93,8 @@
        AD760X_CHANNEL(num, 0,                          \
                BIT(IIO_CHAN_INFO_SCALE),               \
                BIT(IIO_CHAN_INFO_SAMP_FREQ) |          \
-               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), 16)
+               BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),  \
+               0, 0, 16)
 
 struct ad7606_state;