iio: filter: admv8818: Support frequencies >= 2^32
[ Upstream commit 9016776f1301627de78a633bda7c898425a56572 ]
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: f34fe888ad
("iio:filter:admv8818: add support for ADMV8818")
Signed-off-by: Brian Pellegrino <bpellegrino@arka.org>
Signed-off-by: Sam Winchenbach <swinchenbach@arka.org>
Link: https://patch.msgid.link/20250328174831.227202-7-sam.winchenbach@framepointer.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
786cdbd4da
commit
ca0012a632
@@ -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 @@ set_mode:
|
||||
|
||||
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,
|
||||
};
|
||||
|
Reference in New Issue
Block a user