return -EINVAL;
 }
 
+#define AD7476_CHAN(bits)                                      \
+       {                                                       \
+       .type = IIO_VOLTAGE,                                    \
+       .indexed = 1,                                           \
+       .info_mask = IIO_CHAN_INFO_SCALE_SHARED_BIT,            \
+       .scan_type = {                                          \
+               .sign = 'u',                                    \
+               .realbits = bits,                               \
+               .storagebits = 16,                              \
+               .shift = 12 - bits,                             \
+       },                                                      \
+}
+
 static const struct ad7476_chip_info ad7476_chip_info_tbl[] = {
        [ID_AD7466] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 12, 16, 0), 0),
+               .channel[0] = AD7476_CHAN(12),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7467] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 10, 16, 2), 0),
+               .channel[0] = AD7476_CHAN(10),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7468] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1 , 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 8, 16, 4), 0),
+               .channel[0] = AD7476_CHAN(8),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7475] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 12, 16, 0), 0),
+               .channel[0] = AD7476_CHAN(12),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7476] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 12, 16, 0), 0),
+               .channel[0] = AD7476_CHAN(12),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7477] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 10, 16, 2), 0),
+               .channel[0] = AD7476_CHAN(10),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7478] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 8, 16, 4), 0),
+               .channel[0] = AD7476_CHAN(8),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
        },
        [ID_AD7495] = {
-               .channel[0] = IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
-                                      IIO_CHAN_INFO_SCALE_SHARED_BIT,
-                                      0, 0, IIO_ST('u', 12, 16, 0), 0),
+               .channel[0] = AD7476_CHAN(12),
                .channel[1] = IIO_CHAN_SOFT_TIMESTAMP(1),
                .int_vref_mv = 2500,
        },