Commit 5efb0a3c authored by Guillaume Stols's avatar Guillaume Stols Committed by Jonathan Cameron
Browse files

iio: adc: ad7606: change channel macros parameters



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: default avatarGuillaume 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: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 0f65f59e
Loading
Loading
Loading
Loading
+25 −26
Original line number Diff line number Diff line
@@ -40,14 +40,19 @@
#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,		\
		.info_mask_shared_by_all_available =		\
			mask_all_avail,				\
		.scan_index = num,				\
		.scan_type = {					\
			.sign = 's',				\
@@ -57,37 +62,30 @@
		},						\
}

#define AD7606_SW_CHANNEL(num, bits) {				\
		.type = IIO_VOLTAGE,				\
		.indexed = 1,					\
		.channel = num,					\
		.address = num,					\
		.info_mask_separate =				\
#define AD7606_SW_CHANNEL(num, bits)			\
	AD760X_CHANNEL(num,				\
		/* 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 =			\
		/* mask type */				\
		BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),	\
		.info_mask_shared_by_all_available =		\
		/* mask all */				\
		0,					\
		/* mask separate available */		\
		BIT(IIO_CHAN_INFO_SCALE),		\
		/* mask all available */		\
		BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO),	\
		.scan_index = num,				\
		.scan_type = {					\
			.sign = 's',				\
			.realbits = (bits),			\
			.storagebits = (bits) > 16 ? 32 : 16,	\
			.endianness = IIO_CPU,			\
		},						\
}
		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;