lkml.org 
[lkml]   [2015]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] iio: magnetometer: mmc35240: fix available sampling frequencies
    Date
    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: Teodora Baluta <teodora.baluta@intel.com>
    ---
    drivers/iio/magnetometer/mmc35240.c | 35 +++++++++++++++++++++--------------
    1 file changed, 21 insertions(+), 14 deletions(-)

    diff --git a/drivers/iio/magnetometer/mmc35240.c b/drivers/iio/magnetometer/mmc35240.c
    index e89b059..36a4b53 100644
    --- a/drivers/iio/magnetometer/mmc35240.c
    +++ b/drivers/iio/magnetometer/mmc35240.c
    @@ -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;
    }
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-06-29 15:01    [W:3.163 / U:0.940 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site