Commit c99389ad authored by Teodora Baluta's avatar Teodora Baluta Committed by Jonathan Cameron

iio: magnetometer: mmc35240: fix available sampling frequencies

Fix the sampling frequencies according to the datasheet (page 8). The
datasheet specifies the following available frequencies for continuous
mode: 1.5 Hz, 13 Hz, 25 Hz, and 50 Hz.

Also fix comments about the ODR to comply with datasheet.
Signed-off-by: default avatarTeodora Baluta <teodora.baluta@intel.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 53c8eccb
...@@ -84,10 +84,10 @@ ...@@ -84,10 +84,10 @@
#define MMC35240_OTP_START_ADDR 0x1B #define MMC35240_OTP_START_ADDR 0x1B
enum mmc35240_resolution { enum mmc35240_resolution {
MMC35240_16_BITS_SLOW = 0, /* 100 Hz */ MMC35240_16_BITS_SLOW = 0, /* 7.92 ms */
MMC35240_16_BITS_FAST, /* 200 Hz */ MMC35240_16_BITS_FAST, /* 4.08 ms */
MMC35240_14_BITS, /* 333 Hz */ MMC35240_14_BITS, /* 2.16 ms */
MMC35240_12_BITS, /* 666 Hz */ MMC35240_12_BITS, /* 1.20 ms */
}; };
enum mmc35240_axis { enum mmc35240_axis {
...@@ -100,22 +100,22 @@ static const struct { ...@@ -100,22 +100,22 @@ static const struct {
int sens[3]; /* sensitivity per X, Y, Z axis */ int sens[3]; /* sensitivity per X, Y, Z axis */
int nfo; /* null field output */ int nfo; /* null field output */
} mmc35240_props_table[] = { } mmc35240_props_table[] = {
/* 16 bits, 100Hz ODR */ /* 16 bits, 125Hz ODR */
{ {
{1024, 1024, 1024}, {1024, 1024, 1024},
32768, 32768,
}, },
/* 16 bits, 200Hz ODR */ /* 16 bits, 250Hz ODR */
{ {
{1024, 1024, 770}, {1024, 1024, 770},
32768, 32768,
}, },
/* 14 bits, 333Hz ODR */ /* 14 bits, 450Hz ODR */
{ {
{256, 256, 193}, {256, 256, 193},
8192, 8192,
}, },
/* 12 bits, 666Hz ODR */ /* 12 bits, 800Hz ODR */
{ {
{64, 64, 48}, {64, 64, 48},
2048, 2048,
...@@ -133,9 +133,15 @@ struct mmc35240_data { ...@@ -133,9 +133,15 @@ struct mmc35240_data {
int axis_scale[3]; int axis_scale[3];
}; };
static const int mmc35240_samp_freq[] = {100, 200, 333, 666}; static const struct {
int val;
int val2;
} mmc35240_samp_freq[] = { {1, 500000},
{13, 0},
{25, 0},
{50, 0} };
static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("100 200 333 666"); static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("1.5 13 25 50");
#define MMC35240_CHANNEL(_axis) { \ #define MMC35240_CHANNEL(_axis) { \
.type = IIO_MAGN, \ .type = IIO_MAGN, \
...@@ -168,7 +174,8 @@ static int mmc35240_get_samp_freq_index(struct mmc35240_data *data, ...@@ -168,7 +174,8 @@ static int mmc35240_get_samp_freq_index(struct mmc35240_data *data,
int i; int i;
for (i = 0; i < ARRAY_SIZE(mmc35240_samp_freq); i++) for (i = 0; i < ARRAY_SIZE(mmc35240_samp_freq); i++)
if (mmc35240_samp_freq[i] == val) if (mmc35240_samp_freq[i].val == val &&
mmc35240_samp_freq[i].val2 == val2)
return i; return i;
return -EINVAL; return -EINVAL;
} }
...@@ -378,9 +385,9 @@ static int mmc35240_read_raw(struct iio_dev *indio_dev, ...@@ -378,9 +385,9 @@ static int mmc35240_read_raw(struct iio_dev *indio_dev,
if (i < 0 || i >= ARRAY_SIZE(mmc35240_samp_freq)) if (i < 0 || i >= ARRAY_SIZE(mmc35240_samp_freq))
return -EINVAL; return -EINVAL;
*val = mmc35240_samp_freq[i]; *val = mmc35240_samp_freq[i].val;
*val2 = 0; *val2 = mmc35240_samp_freq[i].val2;
return IIO_VAL_INT; return IIO_VAL_INT_PLUS_MICRO;
default: default:
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment