Commit 9016776f authored by Brian Pellegrino's avatar Brian Pellegrino Committed by Jonathan Cameron
Browse files

iio: filter: admv8818: Support frequencies >= 2^32



This patch allows writing u64 values to the ADMV8818's high and low-pass
filter frequencies. It includes the following changes:

- Rejects negative frequencies in admv8818_write_raw.
- Adds a write_raw_get_fmt function to admv8818's iio_info, returning
  IIO_VAL_INT_64 for the high and low-pass filter 3dB frequency channels.

Fixes: f34fe888 ("iio:filter:admv8818: add support for ADMV8818")
Signed-off-by: default avatarBrian Pellegrino <bpellegrino@arka.org>
Signed-off-by: default avatarSam Winchenbach <swinchenbach@arka.org>
Link: https://patch.msgid.link/20250328174831.227202-7-sam.winchenbach@framepointer.org


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent c31752b1
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -402,6 +402,19 @@ static int admv8818_read_lpf_freq(struct admv8818_state *st, u64 *lpf_freq)
	return ret;
}

static int admv8818_write_raw_get_fmt(struct iio_dev *indio_dev,
								struct iio_chan_spec const *chan,
								long mask)
{
	switch (mask) {
	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
	case IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY:
		return IIO_VAL_INT_64;
	default:
		return -EINVAL;
	}
}

static int admv8818_write_raw(struct iio_dev *indio_dev,
			      struct iio_chan_spec const *chan,
			      int val, int val2, long info)
@@ -410,6 +423,9 @@ static int admv8818_write_raw(struct iio_dev *indio_dev,

	u64 freq = ((u64)val2 << 32 | (u32)val);

	if ((s64)freq < 0)
		return -EINVAL;

	switch (info) {
	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
		return admv8818_lpf_select(st, freq);
@@ -571,6 +587,7 @@ static int admv8818_set_mode(struct iio_dev *indio_dev,

static const struct iio_info admv8818_info = {
	.write_raw = admv8818_write_raw,
	.write_raw_get_fmt = admv8818_write_raw_get_fmt,
	.read_raw = admv8818_read_raw,
	.debugfs_reg_access = &admv8818_reg_access,
};