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

Commit 23da6a15 authored by Giuliano Belinassi's avatar Giuliano Belinassi Committed by Jonathan Cameron
Browse files

staging: iio: ad7780: check if ad778x before gain update



Only the ad778x have the 'gain' status bit. Check it before updating
through a new variable is_ad778x in chip_info.

Signed-off-by: default avatarGiuliano Belinassi <giuliano.belinassi@usp.br>
Acked-by: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 72e3a524
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ struct ad7780_chip_info {
	struct iio_chan_spec	channel;
	unsigned int		pattern_mask;
	unsigned int		pattern;
	bool			is_ad778x;
};

struct ad7780_state {
@@ -113,10 +114,12 @@ static int ad7780_postprocess_sample(struct ad_sigma_delta *sigma_delta,
	    ((raw_sample & chip_info->pattern_mask) != chip_info->pattern))
		return -EIO;

	if (chip_info->is_ad778x) {
		if (raw_sample & AD7780_GAIN)
			st->gain = 1;
		else
			st->gain = 128;
	}

	return 0;
}
@@ -135,21 +138,25 @@ static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
		.channel = AD7780_CHANNEL(12, 24),
		.pattern = 0x5,
		.pattern_mask = 0x7,
		.is_ad778x = false,
	},
	[ID_AD7171] = {
		.channel = AD7780_CHANNEL(16, 24),
		.pattern = 0x5,
		.pattern_mask = 0x7,
		.is_ad778x = false,
	},
	[ID_AD7780] = {
		.channel = AD7780_CHANNEL(24, 32),
		.pattern = 0x1,
		.pattern_mask = 0x3,
		.is_ad778x = true,
	},
	[ID_AD7781] = {
		.channel = AD7780_CHANNEL(20, 32),
		.pattern = 0x1,
		.pattern_mask = 0x3,
		.is_ad778x = true,
	},
};