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

Commit a36385a2 authored by Daniel Baluta's avatar Daniel Baluta Committed by Jonathan Cameron
Browse files

iio: imu: kmx61: Drop odr_bits from kmx61_samp_freq_table



odr_bits values are between 0 and 11, so we can use the index
in kmx61_samp_freq_table instead of odr_bits structure member.

Signed-off-by: default avatarDaniel Baluta <daniel.baluta@intel.com>
Reviewed-by: default avatarHartmut Knaack <knaack.h@gmx.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 1e716a15
Loading
Loading
Loading
Loading
+26 −38
Original line number Diff line number Diff line
@@ -169,19 +169,18 @@ static const u16 kmx61_uscale_table[] = {9582, 19163, 38326};
static const struct {
	int val;
	int val2;
	u8 odr_bits;
} kmx61_samp_freq_table[] = { {12, 500000, 0x00},
			{25, 0, 0x01},
			{50, 0, 0x02},
			{100, 0, 0x03},
			{200, 0, 0x04},
			{400, 0, 0x05},
			{800, 0, 0x06},
			{1600, 0, 0x07},
			{0, 781000, 0x08},
			{1, 563000, 0x09},
			{3, 125000, 0x0A},
			{6, 250000, 0x0B} };
} kmx61_samp_freq_table[] = { {12, 500000},
			{25, 0},
			{50, 0},
			{100, 0},
			{200, 0},
			{400, 0},
			{800, 0},
			{1600, 0},
			{0, 781000},
			{1, 563000},
			{3, 125000},
			{6, 250000} };

static const struct {
	int val;
@@ -302,24 +301,10 @@ static int kmx61_convert_freq_to_bit(int val, int val2)
	for (i = 0; i < ARRAY_SIZE(kmx61_samp_freq_table); i++)
		if (val == kmx61_samp_freq_table[i].val &&
		    val2 == kmx61_samp_freq_table[i].val2)
			return kmx61_samp_freq_table[i].odr_bits;
	return -EINVAL;
}

static int kmx61_convert_bit_to_freq(u8 odr_bits, int *val, int *val2)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(kmx61_samp_freq_table); i++)
		if (odr_bits == kmx61_samp_freq_table[i].odr_bits) {
			*val = kmx61_samp_freq_table[i].val;
			*val2 = kmx61_samp_freq_table[i].val2;
			return 0;
		}
			return i;
	return -EINVAL;
}


static int kmx61_convert_wake_up_odr_to_bit(int val, int val2)
{
	int i;
@@ -478,7 +463,7 @@ static int kmx61_set_odr(struct kmx61_data *data, int val, int val2, u8 device)

static int kmx61_get_odr(struct kmx61_data *data, int *val, int *val2,
			 u8 device)
{	int i;
{
	u8 lodr_bits;

	if (device & KMX61_ACC)
@@ -490,13 +475,13 @@ static int kmx61_get_odr(struct kmx61_data *data, int *val, int *val2,
	else
		return -EINVAL;

	for (i = 0; i < ARRAY_SIZE(kmx61_samp_freq_table); i++)
		if (lodr_bits == kmx61_samp_freq_table[i].odr_bits) {
			*val = kmx61_samp_freq_table[i].val;
			*val2 = kmx61_samp_freq_table[i].val2;
			return 0;
		}
	if (lodr_bits >= ARRAY_SIZE(kmx61_samp_freq_table))
		return -EINVAL;

	*val = kmx61_samp_freq_table[lodr_bits].val;
	*val2 = kmx61_samp_freq_table[lodr_bits].val2;

	return 0;
}

static int kmx61_set_range(struct kmx61_data *data, u8 range)
@@ -580,8 +565,11 @@ static int kmx61_chip_init(struct kmx61_data *data)
	}
	data->odr_bits = ret;

	/* set output data rate for wake up (motion detection) function */
	ret = kmx61_convert_bit_to_freq(data->odr_bits, &val, &val2);
	/*
	 * set output data rate for wake up (motion detection) function
	 * to match data rate for accelerometer sampling
	 */
	ret = kmx61_get_odr(data, &val, &val2, KMX61_ACC);
	if (ret < 0)
		return ret;