Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ade7ef7b authored by Jonathan Cameron's avatar Jonathan Cameron Committed by Greg Kroah-Hartman
Browse files

staging:iio: Differential channel handling - use explicit flag rather than types.



Straight forward change in the core, but required some drivers to not use
the IIO_CHAN macro as that doesn't allow setting this bit (and is
going away anyway). Hence the churn.

Tested on max1363 with a couple of supported parts.

V2: differential bit in code got 7 bits and direction 1. Reversed that.
Issue spotted by Michael - thanks!

Signed-off-by: default avatarJonathan Cameron <jic23@cam.ac.uk>
Acked-by: default avatarMichael Hennerich <Michael.Hennerich@analog.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 8ce7375b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -886,8 +886,7 @@ static int ad7192_read_raw(struct iio_dev *indio_dev,
			((1 << (chan->scan_type.realbits)) - 1);

		switch (chan->type) {
		case IIO_IN:
		case IIO_IN_DIFF:
		case IIO_VOLTAGE:
			if (!unipolar)
				*val -= (1 << (chan->scan_type.realbits - 1));
			break;
@@ -986,7 +985,8 @@ static const struct iio_info ad7192_info = {
};

#define AD7192_CHAN_DIFF(_chan, _chan2, _name, _address, _si)		\
	{ .type = IIO_IN_DIFF,						\
	{ .type = IIO_VOLTAGE,						\
	  .differential = 1,						\
	  .indexed = 1,							\
	  .extend_name = _name,						\
	  .channel = _chan,						\
@@ -997,7 +997,7 @@ static const struct iio_info ad7192_info = {
	  .scan_type =  IIO_ST('s', 24, 32, 0)}

#define AD7192_CHAN(_chan, _address, _si)				\
	{ .type = IIO_IN,						\
	{ .type = IIO_VOLTAGE,						\
	  .indexed = 1,							\
	  .channel = _chan,						\
	  .info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),		\
+16 −10
Original line number Diff line number Diff line
@@ -495,7 +495,8 @@ static int ad7280_channel_init(struct ad7280_state *st)
		for (ch = AD7280A_CELL_VOLTAGE_1; ch <= AD7280A_AUX_ADC_6; ch++,
			cnt++) {
			if (ch < AD7280A_AUX_ADC_1) {
				st->channels[cnt].type = IIO_IN_DIFF;
				st->channels[cnt].type = IIO_VOLTAGE;
				st->channels[cnt].differential = 1;
				st->channels[cnt].channel = (dev * 6) + ch;
				st->channels[cnt].channel2 =
					st->channels[cnt].channel + 1;
@@ -515,7 +516,8 @@ static int ad7280_channel_init(struct ad7280_state *st)
			st->channels[cnt].scan_type.shift = 0;
		}

	st->channels[cnt].type = IIO_IN_DIFF;
	st->channels[cnt].type = IIO_VOLTAGE;
	st->channels[cnt].differential = 1;
	st->channels[cnt].channel = 0;
	st->channels[cnt].channel2 = dev * 6;
	st->channels[cnt].address = AD7280A_ALL_CELLS;
@@ -692,18 +694,22 @@ static irqreturn_t ad7280_event_handler(int irq, void *private)
			if (((channels[i] >> 11) & 0xFFF) >=
				st->cell_threshhigh)
				iio_push_event(dev_info,
					IIO_UNMOD_EVENT_CODE(IIO_IN_DIFF,
					IIO_EVENT_CODE(IIO_VOLTAGE,
						       1,
						       0,
						       IIO_EV_DIR_RISING,
						       IIO_EV_TYPE_THRESH,
					IIO_EV_DIR_RISING),
						       0, 0, 0),
					iio_get_time_ns());
			else if (((channels[i] >> 11) & 0xFFF) <=
				st->cell_threshlow)
				iio_push_event(dev_info,
					IIO_UNMOD_EVENT_CODE(IIO_IN_DIFF,
					IIO_EVENT_CODE(IIO_VOLTAGE,
						       1,
						       0,
						       IIO_EV_DIR_FALLING,
						       IIO_EV_TYPE_THRESH,
					IIO_EV_DIR_FALLING),
						       0, 0, 0),
					iio_get_time_ns());
		} else {
			if (((channels[i] >> 11) & 0xFFF) >= st->aux_threshhigh)
+128 −48
Original line number Diff line number Diff line
@@ -767,57 +767,137 @@ static const struct iio_info ad7793_info = {

static const struct ad7793_chip_info ad7793_chip_info_tbl[] = {
	[ID_AD7793] = {
		.channel[0] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN1P_AIN1M,
				    0, IIO_ST('s', 24, 32, 0), 0),
		.channel[1] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 1,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN2P_AIN2M,
				    1, IIO_ST('s', 24, 32, 0), 0),
		.channel[2] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 2,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN3P_AIN3M,
				    2, IIO_ST('s', 24, 32, 0), 0),
		.channel[3] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, "shorted", 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN1M_AIN1M,
				    3, IIO_ST('s', 24, 32, 0), 0),
		.channel[4] = IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
				    AD7793_CH_TEMP,
				    4, IIO_ST('s', 24, 32, 0), 0),
		.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 4, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
				    AD7793_CH_AVDD_MONITOR,
				    5, IIO_ST('s', 24, 32, 0), 0),
		.channel[0] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 0,
			.channel2 = 0,
			.address = AD7793_CH_AIN1P_AIN1M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 0,
			.scan_type = IIO_ST('s', 24, 32, 0)
		},
		.channel[1] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 1,
			.channel2 = 1,
			.address = AD7793_CH_AIN2P_AIN2M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 1,
			.scan_type = IIO_ST('s', 24, 32, 0)
		},
		.channel[2] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 2,
			.channel2 = 2,
			.address = AD7793_CH_AIN3P_AIN3M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 2,
			.scan_type = IIO_ST('s', 24, 32, 0)
		},
		.channel[3] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.extend_name = "shorted",
			.indexed = 1,
			.channel = 2,
			.channel2 = 2,
			.address = AD7793_CH_AIN1M_AIN1M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 2,
			.scan_type = IIO_ST('s', 24, 32, 0)
		},
		.channel[4] = {
			.type = IIO_TEMP,
			.indexed = 1,
			.channel = 0,
			.address = AD7793_CH_TEMP,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
			.scan_index = 4,
			.scan_type = IIO_ST('s', 24, 32, 0),
		},
		.channel[5] = {
			.type = IIO_VOLTAGE,
			.extend_name = "supply",
			.indexed = 1,
			.channel = 4,
			.address = AD7793_CH_AVDD_MONITOR,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
			.scan_index = 5,
			.scan_type = IIO_ST('s', 24, 32, 0),
		},
		.channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
	},
	[ID_AD7792] = {
		.channel[0] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN1P_AIN1M,
				    0, IIO_ST('s', 16, 32, 0), 0),
		.channel[1] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 1,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN2P_AIN2M,
				    1, IIO_ST('s', 16, 32, 0), 0),
		.channel[2] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 2,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN3P_AIN3M,
				    2, IIO_ST('s', 16, 32, 0), 0),
		.channel[3] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, "shorted", 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SHARED),
				    AD7793_CH_AIN1M_AIN1M,
				    3, IIO_ST('s', 16, 32, 0), 0),
		.channel[4] = IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
				    AD7793_CH_TEMP,
				    4, IIO_ST('s', 16, 32, 0), 0),
		.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 4, 0,
				    (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
				    AD7793_CH_AVDD_MONITOR,
				    5, IIO_ST('s', 16, 32, 0), 0),
		.channel[0] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 0,
			.channel2 = 0,
			.address = AD7793_CH_AIN1P_AIN1M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 0,
			.scan_type = IIO_ST('s', 16, 32, 0)
		},
		.channel[1] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 1,
			.channel2 = 1,
			.address = AD7793_CH_AIN2P_AIN2M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 1,
			.scan_type = IIO_ST('s', 16, 32, 0)
		},
		.channel[2] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.indexed = 1,
			.channel = 2,
			.channel2 = 2,
			.address = AD7793_CH_AIN3P_AIN3M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 2,
			.scan_type = IIO_ST('s', 16, 32, 0)
		},
		.channel[3] = {
			.type = IIO_VOLTAGE,
			.differential = 1,
			.extend_name = "shorted",
			.indexed = 1,
			.channel = 2,
			.channel2 = 2,
			.address = AD7793_CH_AIN1M_AIN1M,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
			.scan_index = 2,
			.scan_type = IIO_ST('s', 16, 32, 0)
		},
		.channel[4] = {
			.type = IIO_TEMP,
			.indexed = 1,
			.channel = 0,
			.address = AD7793_CH_TEMP,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
			.scan_index = 4,
			.scan_type = IIO_ST('s', 16, 32, 0),
		},
		.channel[5] = {
			.type = IIO_VOLTAGE,
			.extend_name = "supply",
			.indexed = 1,
			.channel = 4,
			.address = AD7793_CH_AVDD_MONITOR,
			.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
			.scan_index = 5,
			.scan_type = IIO_ST('s', 16, 32, 0),
		},
		.channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
	},
};
+89 −109
Original line number Diff line number Diff line
@@ -289,72 +289,52 @@ static const enum max1363_modes max1363_mode_list[] = {
	(IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING)	\
	 | IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING))
#define MAX1363_INFO_MASK (1 << IIO_CHAN_INFO_SCALE_SHARED)
#define MAX1363_CHAN_U(num, addr, si, bits, evmask)			\
	{								\
		.type = IIO_VOLTAGE,					\
		.indexed = 1,						\
		.channel = num,						\
		.address = addr,					\
		.info_mask = MAX1363_INFO_MASK,				\
		.scan_type = IIO_ST('u', bits, (bits > 8) ? 16 : 8, 0), \
		.scan_index = si,					\
		.event_mask = evmask,					\
	}

static struct iio_chan_spec max1363_channels[] = {
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0, MAX1363_INFO_MASK,
		 _s0, 0, IIO_ST('u', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK,
		 _s1, 1, IIO_ST('u', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0, MAX1363_INFO_MASK,
		 _s2, 2, IIO_ST('u', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0, MAX1363_INFO_MASK,
		 _s3, 3, IIO_ST('u', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 1, MAX1363_INFO_MASK,
		 d0m1, 4, IIO_ST('s', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 3, MAX1363_INFO_MASK,
		 d2m3, 5, IIO_ST('s', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK,
		 d1m0, 6, IIO_ST('s', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 3, 2, MAX1363_INFO_MASK,
		 d3m2, 7, IIO_ST('s', 12, 16, 0), MAX1363_EV_M),
	IIO_CHAN_SOFT_TIMESTAMP(8)
};

static struct iio_chan_spec max1361_channels[] = {
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0, MAX1363_INFO_MASK,
		 _s0, 0, IIO_ST('u', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK,
		 _s1, 1, IIO_ST('u', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0, MAX1363_INFO_MASK,
		 _s2, 2, IIO_ST('u', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0, MAX1363_INFO_MASK,
		 _s3, 3, IIO_ST('u', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 1, MAX1363_INFO_MASK,
		 d0m1, 4, IIO_ST('s', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 3, MAX1363_INFO_MASK,
		 d2m3, 5, IIO_ST('s', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK,
		 d1m0, 6, IIO_ST('s', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 3, 2, MAX1363_INFO_MASK,
		 d3m2, 7, IIO_ST('s', 10, 16, 0), MAX1363_EV_M),
	IIO_CHAN_SOFT_TIMESTAMP(8)
};

#define MAX1363_CHAN_U(num, address, scan_index, bits)		\
	IIO_CHAN(IIO_IN, 0, 1, 0, NULL, num, 0, MAX1363_INFO_MASK,	\
		 address, scan_index, IIO_ST('u', bits,		\
					     (bits == 8) ? 8 : 16, 0), 0)
/* bipolar channel */
#define MAX1363_CHAN_B(num, num2, address, scan_index, bits)		\
	IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, num, num2, MAX1363_INFO_MASK,\
		 address, scan_index, IIO_ST('s', bits,		\
					     (bits == 8) ? 8 : 16, 0), 0)

#define MAX1363_4X_CHANS(bits) {		\
	MAX1363_CHAN_U(0, _s0, 0, bits),	\
	MAX1363_CHAN_U(1, _s1, 1, bits),	\
	MAX1363_CHAN_U(2, _s2, 2, bits),	\
	MAX1363_CHAN_U(3, _s3, 3, bits),	\
	MAX1363_CHAN_B(0, 1, d0m1, 4, bits),	\
	MAX1363_CHAN_B(2, 3, d2m3, 5, bits),	\
	MAX1363_CHAN_B(1, 0, d1m0, 6, bits),	\
	MAX1363_CHAN_B(3, 2, d3m2, 7, bits),	\
#define MAX1363_CHAN_B(num, num2, addr, si, bits, evmask)		\
	{								\
		.type = IIO_VOLTAGE,					\
		.differential = 1,					\
		.indexed = 1,						\
		.channel = num,						\
		.channel2 = num2,					\
		.address = addr,					\
		.info_mask = MAX1363_INFO_MASK,				\
		.scan_type = IIO_ST('u', bits, (bits > 8) ? 16 : 8, 0), \
		.scan_index = si,					\
		.event_mask = evmask,					\
	}

#define MAX1363_4X_CHANS(bits, em) {			\
	MAX1363_CHAN_U(0, _s0, 0, bits, em),		\
	MAX1363_CHAN_U(1, _s1, 1, bits, em),		\
	MAX1363_CHAN_U(2, _s2, 2, bits, em),		\
	MAX1363_CHAN_U(3, _s3, 3, bits, em),		\
	MAX1363_CHAN_B(0, 1, d0m1, 4, bits, em),	\
	MAX1363_CHAN_B(2, 3, d2m3, 5, bits, em),	\
	MAX1363_CHAN_B(1, 0, d1m0, 6, bits, em),	\
	MAX1363_CHAN_B(3, 2, d3m2, 7, bits, em),	\
	IIO_CHAN_SOFT_TIMESTAMP(8)			\
	}

static struct iio_chan_spec max1036_channels[] = MAX1363_4X_CHANS(8);
static struct iio_chan_spec max1136_channels[] = MAX1363_4X_CHANS(10);
static struct iio_chan_spec max1236_channels[] = MAX1363_4X_CHANS(12);
static struct iio_chan_spec max1036_channels[] = MAX1363_4X_CHANS(8, 0);
static struct iio_chan_spec max1136_channels[] = MAX1363_4X_CHANS(10, 0);
static struct iio_chan_spec max1236_channels[] = MAX1363_4X_CHANS(12, 0);
static struct iio_chan_spec max1361_channels[] =
	MAX1363_4X_CHANS(10, MAX1363_EV_M);
static struct iio_chan_spec max1363_channels[] =
	MAX1363_4X_CHANS(12, MAX1363_EV_M);

/* Appies to max1236, max1237 */
static const enum max1363_modes max1236_mode_list[] = {
@@ -379,30 +359,30 @@ static const enum max1363_modes max1238_mode_list[] = {
};

#define MAX1363_12X_CHANS(bits) {			\
	MAX1363_CHAN_U(0, _s0, 0, bits),		\
	MAX1363_CHAN_U(1, _s1, 1, bits),		\
	MAX1363_CHAN_U(2, _s2, 2, bits),		\
	MAX1363_CHAN_U(3, _s3, 3, bits),		\
	MAX1363_CHAN_U(4, _s4, 4, bits),		\
	MAX1363_CHAN_U(5, _s5, 5, bits),		\
	MAX1363_CHAN_U(6, _s6, 6, bits),		\
	MAX1363_CHAN_U(7, _s7, 7, bits),		\
	MAX1363_CHAN_U(8, _s8, 8, bits),		\
	MAX1363_CHAN_U(9, _s9, 9, bits),		\
	MAX1363_CHAN_U(10, _s10, 10, bits),		\
	MAX1363_CHAN_U(11, _s11, 11, bits),		\
	MAX1363_CHAN_B(0, 1, d0m1, 12, bits),		\
	MAX1363_CHAN_B(2, 3, d2m3, 13, bits),		\
	MAX1363_CHAN_B(4, 5, d4m5, 14, bits),		\
	MAX1363_CHAN_B(6, 7, d6m7, 15, bits),		\
	MAX1363_CHAN_B(8, 9, d8m9, 16, bits),		\
	MAX1363_CHAN_B(10, 11, d10m11, 17, bits),	\
	MAX1363_CHAN_B(1, 0, d1m0, 18, bits),		\
	MAX1363_CHAN_B(3, 2, d3m2, 19, bits),		\
	MAX1363_CHAN_B(5, 4, d5m4, 20, bits),		\
	MAX1363_CHAN_B(7, 6, d7m6, 21, bits),		\
	MAX1363_CHAN_B(9, 8, d9m8, 22, bits),		\
	MAX1363_CHAN_B(11, 10, d11m10, 23, bits),	\
	MAX1363_CHAN_U(0, _s0, 0, bits, 0),		\
	MAX1363_CHAN_U(1, _s1, 1, bits, 0),		\
	MAX1363_CHAN_U(2, _s2, 2, bits, 0),		\
	MAX1363_CHAN_U(3, _s3, 3, bits, 0),		\
	MAX1363_CHAN_U(4, _s4, 4, bits, 0),		\
	MAX1363_CHAN_U(5, _s5, 5, bits, 0),		\
	MAX1363_CHAN_U(6, _s6, 6, bits, 0),		\
	MAX1363_CHAN_U(7, _s7, 7, bits, 0),		\
	MAX1363_CHAN_U(8, _s8, 8, bits, 0),		\
	MAX1363_CHAN_U(9, _s9, 9, bits, 0),		\
	MAX1363_CHAN_U(10, _s10, 10, bits, 0),		\
	MAX1363_CHAN_U(11, _s11, 11, bits, 0),		\
	MAX1363_CHAN_B(0, 1, d0m1, 12, bits, 0),	\
	MAX1363_CHAN_B(2, 3, d2m3, 13, bits, 0),	\
	MAX1363_CHAN_B(4, 5, d4m5, 14, bits, 0),	\
	MAX1363_CHAN_B(6, 7, d6m7, 15, bits, 0),	\
	MAX1363_CHAN_B(8, 9, d8m9, 16, bits, 0),	\
	MAX1363_CHAN_B(10, 11, d10m11, 17, bits, 0),	\
	MAX1363_CHAN_B(1, 0, d1m0, 18, bits, 0),	\
	MAX1363_CHAN_B(3, 2, d3m2, 19, bits, 0),	\
	MAX1363_CHAN_B(5, 4, d5m4, 20, bits, 0),	\
	MAX1363_CHAN_B(7, 6, d7m6, 21, bits, 0),	\
	MAX1363_CHAN_B(9, 8, d9m8, 22, bits, 0),	\
	MAX1363_CHAN_B(11, 10, d11m10, 23, bits, 0),	\
	IIO_CHAN_SOFT_TIMESTAMP(24)			\
	}
static struct iio_chan_spec max1038_channels[] = MAX1363_12X_CHANS(8);
@@ -428,22 +408,22 @@ static const enum max1363_modes max11608_mode_list[] = {
};

#define MAX1363_8X_CHANS(bits) {			\
		MAX1363_CHAN_U(0, _s0, 0, bits),		\
			MAX1363_CHAN_U(1, _s1, 1, bits),	\
			MAX1363_CHAN_U(2, _s2, 2, bits),	\
			MAX1363_CHAN_U(3, _s3, 3, bits),	\
			MAX1363_CHAN_U(4, _s4, 4, bits),	\
			MAX1363_CHAN_U(5, _s5, 5, bits),	\
			MAX1363_CHAN_U(6, _s6, 6, bits),	\
			MAX1363_CHAN_U(7, _s7, 7, bits),	\
			MAX1363_CHAN_B(0, 1, d0m1, 8, bits),	\
			MAX1363_CHAN_B(2, 3, d2m3, 9, bits),	\
			MAX1363_CHAN_B(4, 5, d4m5, 10, bits),	\
			MAX1363_CHAN_B(6, 7, d6m7, 11, bits),	\
			MAX1363_CHAN_B(1, 0, d1m0, 12, bits),	\
			MAX1363_CHAN_B(3, 2, d3m2, 13, bits),	\
			MAX1363_CHAN_B(5, 4, d5m4, 14, bits),	\
			MAX1363_CHAN_B(7, 6, d7m6, 15, bits),	\
	MAX1363_CHAN_U(0, _s0, 0, bits, 0),		\
	MAX1363_CHAN_U(1, _s1, 1, bits, 0),		\
	MAX1363_CHAN_U(2, _s2, 2, bits, 0),		\
	MAX1363_CHAN_U(3, _s3, 3, bits, 0),		\
	MAX1363_CHAN_U(4, _s4, 4, bits, 0),		\
	MAX1363_CHAN_U(5, _s5, 5, bits, 0),		\
	MAX1363_CHAN_U(6, _s6, 6, bits, 0),		\
	MAX1363_CHAN_U(7, _s7, 7, bits, 0),		\
	MAX1363_CHAN_B(0, 1, d0m1, 8, bits, 0),	\
	MAX1363_CHAN_B(2, 3, d2m3, 9, bits, 0),	\
	MAX1363_CHAN_B(4, 5, d4m5, 10, bits, 0),	\
	MAX1363_CHAN_B(6, 7, d6m7, 11, bits, 0),	\
	MAX1363_CHAN_B(1, 0, d1m0, 12, bits, 0),	\
	MAX1363_CHAN_B(3, 2, d3m2, 13, bits, 0),	\
	MAX1363_CHAN_B(5, 4, d5m4, 14, bits, 0),	\
	MAX1363_CHAN_B(7, 6, d7m6, 15, bits, 0),	\
	IIO_CHAN_SOFT_TIMESTAMP(16)			\
}
static struct iio_chan_spec max11602_channels[] = MAX1363_8X_CHANS(8);
@@ -455,10 +435,10 @@ static const enum max1363_modes max11644_mode_list[] = {
};

#define MAX1363_2X_CHANS(bits) {			\
	MAX1363_CHAN_U(0, _s0, 0, bits),		\
	MAX1363_CHAN_U(1, _s1, 1, bits),		\
	MAX1363_CHAN_B(0, 1, d0m1, 2, bits),		\
	MAX1363_CHAN_B(1, 0, d1m0, 3, bits),		\
	MAX1363_CHAN_U(0, _s0, 0, bits, 0),		\
	MAX1363_CHAN_U(1, _s1, 1, bits, 0),		\
	MAX1363_CHAN_B(0, 1, d0m1, 2, bits, 0),	\
	MAX1363_CHAN_B(1, 0, d1m0, 3, bits, 0),	\
	IIO_CHAN_SOFT_TIMESTAMP(4)			\
	}

+2 −1
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ enum iio_chan_type {
	IIO_CURRENT,
	IIO_POWER,
	IIO_ACCEL,
	IIO_VOLTAGE_DIFF,
	IIO_GYRO,
	IIO_MAGN,
	IIO_LIGHT,
@@ -124,6 +123,7 @@ enum iio_endian {
 *			the value in channel will be suppressed for attribute
 *			but not for event codes. Typically set it to 0 when
 *			the index is false.
 * @differential:	Channel is differential.
 */
struct iio_chan_spec {
	enum iio_chan_type	type;
@@ -145,6 +145,7 @@ struct iio_chan_spec {
	unsigned		modified:1;
	unsigned		indexed:1;
	unsigned		output:1;
	unsigned		differential:1;
};

#define IIO_ST(si, rb, sb, sh)						\
Loading