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

Commit dd28e482 authored by Peter Meerwald's avatar Peter Meerwald Committed by Jonathan Cameron
Browse files

staging:iio:hmc5843: Introduce helper functions to show/check list of int pairs

parent 9728fe3f
Loading
Loading
Loading
Loading
+34 −22
Original line number Diff line number Diff line
@@ -356,24 +356,42 @@ static IIO_DEVICE_ATTR(meas_conf,
			hmc5843_set_measurement_configuration,
			0);

static ssize_t hmc5843_show_samp_freq_avail(struct device *dev,
				struct device_attribute *attr, char *buf)
static ssize_t hmc5843_show_int_plus_micros(char *buf,
	const int (*vals)[2], int n)
{
	struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev));
	ssize_t total_n = 0;
	size_t len = 0;
	int i;

	for (i = 0; i < HMC5843_RATE_NOT_USED; i++) {
		ssize_t n = sprintf(buf, "%d.%d ",
			data->variant->regval_to_samp_freq[i][0],
			data->variant->regval_to_samp_freq[i][1]);
		buf += n;
		total_n += n;
	}
	for (i = 0; i < n; i++)
		len += scnprintf(buf + len, PAGE_SIZE - len,
			"%d.%d ", vals[i][0], vals[i][1]);

	/* replace trailing space by newline */
	buf[-1] = '\n';
	buf[len - 1] = '\n';

	return len;
}

static int hmc5843_check_int_plus_micros(const int (*vals)[2], int n,
					int val, int val2)
{
	int i;

	for (i = 0; i < n; i++) {
		if (val == vals[i][0] && val2 == vals[i][1])
			return i;
	}

	return total_n;
	return -EINVAL;
}

static ssize_t hmc5843_show_samp_freq_avail(struct device *dev,
				struct device_attribute *attr, char *buf)
{
	struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev));

	return hmc5843_show_int_plus_micros(buf,
		data->variant->regval_to_samp_freq, HMC5843_RATE_NOT_USED);
}

static IIO_DEV_ATTR_SAMP_FREQ_AVAIL(hmc5843_show_samp_freq_avail);
@@ -389,15 +407,9 @@ static s32 hmc5843_set_rate(struct hmc5843_data *data, u8 rate)
static int hmc5843_check_samp_freq(struct hmc5843_data *data,
				   int val, int val2)
{
	int i;

	for (i = 0; i < HMC5843_RATE_NOT_USED; i++) {
		if (val == data->variant->regval_to_samp_freq[i][0] &&
		    val2 == data->variant->regval_to_samp_freq[i][1])
			return i;
	}

	return -EINVAL;
	return hmc5843_check_int_plus_micros(
		data->variant->regval_to_samp_freq, HMC5843_RATE_NOT_USED,
		val, val2);
}

static ssize_t hmc5843_show_range_gain(struct device *dev,