|
@@ -84,10 +84,10 @@
|
|
|
#define MMC35240_OTP_START_ADDR 0x1B
|
|
|
|
|
|
enum mmc35240_resolution {
|
|
|
- MMC35240_16_BITS_SLOW = 0, /* 100 Hz */
|
|
|
- MMC35240_16_BITS_FAST, /* 200 Hz */
|
|
|
- MMC35240_14_BITS, /* 333 Hz */
|
|
|
- MMC35240_12_BITS, /* 666 Hz */
|
|
|
+ MMC35240_16_BITS_SLOW = 0, /* 7.92 ms */
|
|
|
+ MMC35240_16_BITS_FAST, /* 4.08 ms */
|
|
|
+ MMC35240_14_BITS, /* 2.16 ms */
|
|
|
+ MMC35240_12_BITS, /* 1.20 ms */
|
|
|
};
|
|
|
|
|
|
enum mmc35240_axis {
|
|
@@ -100,22 +100,22 @@ static const struct {
|
|
|
int sens[3]; /* sensitivity per X, Y, Z axis */
|
|
|
int nfo; /* null field output */
|
|
|
} mmc35240_props_table[] = {
|
|
|
- /* 16 bits, 100Hz ODR */
|
|
|
+ /* 16 bits, 125Hz ODR */
|
|
|
{
|
|
|
{1024, 1024, 1024},
|
|
|
32768,
|
|
|
},
|
|
|
- /* 16 bits, 200Hz ODR */
|
|
|
+ /* 16 bits, 250Hz ODR */
|
|
|
{
|
|
|
{1024, 1024, 770},
|
|
|
32768,
|
|
|
},
|
|
|
- /* 14 bits, 333Hz ODR */
|
|
|
+ /* 14 bits, 450Hz ODR */
|
|
|
{
|
|
|
{256, 256, 193},
|
|
|
8192,
|
|
|
},
|
|
|
- /* 12 bits, 666Hz ODR */
|
|
|
+ /* 12 bits, 800Hz ODR */
|
|
|
{
|
|
|
{64, 64, 48},
|
|
|
2048,
|
|
@@ -133,9 +133,15 @@ struct mmc35240_data {
|
|
|
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) { \
|
|
|
.type = IIO_MAGN, \
|
|
@@ -168,7 +174,8 @@ static int mmc35240_get_samp_freq_index(struct mmc35240_data *data,
|
|
|
int 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 -EINVAL;
|
|
|
}
|
|
@@ -378,9 +385,9 @@ static int mmc35240_read_raw(struct iio_dev *indio_dev,
|
|
|
if (i < 0 || i >= ARRAY_SIZE(mmc35240_samp_freq))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- *val = mmc35240_samp_freq[i];
|
|
|
- *val2 = 0;
|
|
|
- return IIO_VAL_INT;
|
|
|
+ *val = mmc35240_samp_freq[i].val;
|
|
|
+ *val2 = mmc35240_samp_freq[i].val2;
|
|
|
+ return IIO_VAL_INT_PLUS_MICRO;
|
|
|
default:
|
|
|
return -EINVAL;
|
|
|
}
|