iio: imu: nvi: Fix coverity
Erik Lilliebjerg [Wed, 28 Dec 2016 13:41:15 +0000 (06:41 -0700)]
- Fix bad shift.
- Fix uninitialized scalar variable.

Coverity ID: 38965
Coverity ID: 38966
Coverity ID: 38967
Coverity ID: 38968
Coverity ID: 38969
Coverity ID: 38971

Bug 200192580

Change-Id: I2a972f00a7097f61c943ad035dc23d50f9f8e2e7
Signed-off-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-on: http://git-master/r/1277691
(cherry picked from commit 2f8d063e538089007d6b0c5234cce1229620ece0)
Reviewed-on: http://git-master/r/1281938
Reviewed-by: Akhilesh Khumbum <akhumbum@nvidia.com>
Tested-by: Robert Collins <rcollins@nvidia.com>
Reviewed-by: Robert Collins <rcollins@nvidia.com>

drivers/iio/imu/nvi_mpu/nvi.c
drivers/iio/imu/nvi_mpu/nvi_dmp_icm.c

index 62fa901..905f765 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "nvi.h"
 
-#define NVI_DRIVER_VERSION             (337)
+#define NVI_DRIVER_VERSION             (340)
 #define NVI_VENDOR                     "Invensense"
 #define NVI_NAME                       "mpu6xxx"
 #define NVI_NAME_MPU6050               "mpu6050"
@@ -318,7 +318,7 @@ int nvi_i2c_write_rc(struct nvi_state *st, const struct nvi_br *br, u32 val,
        rc_bank = br->bank;
        rc_bank <<= 7; /* registers only go to 0x7F */
        rc_bank |= br->reg;
-       rc_msk = ((1 << len) - 1) << (rc_bank % 64);
+       rc_msk = ((1ULL << len) - 1) << (rc_bank % 64);
        rc_bank /= 64;
        val |= br->dflt;
        wr = st->rc_dis;
@@ -411,7 +411,7 @@ int nvi_i2c_wr_rc(struct nvi_state *st, const struct nvi_br *br,
        rc_bank = br->bank;
        rc_bank <<= 7; /* registers only go to 0x7F */
        rc_bank |= br->reg;
-       rc_msk = 1 << (rc_bank % 64);
+       rc_msk = 1ULL << (rc_bank % 64);
        rc_bank /= 64;
        wr = st->rc_dis;
        if (!wr) {
index a76a791..a34ef0a 100644 (file)
@@ -880,8 +880,7 @@ static int nvi_dmp_period(struct nvi_state *st, u32 *out_ctl,
        unsigned int src;
        unsigned int i;
        unsigned int j;
-       int ret;
-       int ret_t = 0;
+       int ret = 0;
 
        /* sensor enabled = sensor enabled by HAL (irq_msk)
         * sensor active = sensor on as dependency to another sensor
@@ -968,7 +967,7 @@ static int nvi_dmp_period(struct nvi_state *st, u32 *out_ctl,
                if (period_us_req[src] < st->src[src].period_us_min)
                        period_us_req[src] = st->src[src].period_us_min;
                st->src[src].period_us_req = period_us_req[src];
-               ret_t |= st->hal->src[src].fn_period(st);
+               ret |= st->hal->src[src].fn_period(st);
        }
 
        /* now set each DMP device's ODR based on their period */
@@ -1033,22 +1032,22 @@ static int nvi_dmp_period(struct nvi_state *st, u32 *out_ctl,
                        st->aux.port[dd->aux_port].odr = odr_cfg;
                else
                        st->snsr[dd->dev].odr = odr_cfg;
-               ret_t |= nvi_mem_wr_be(st, dd->odr_cntr, 2, 0);
-               ret_t |= nvi_mem_wr_be(st, dd->odr_cfg, 2, odr_cfg);
-               ret_t |= nvi_mem_wr_be(st, dd->odr_cntr, 2, 0);
+               ret |= nvi_mem_wr_be(st, dd->odr_cntr, 2, 0);
+               ret |= nvi_mem_wr_be(st, dd->odr_cfg, 2, odr_cfg);
+               ret |= nvi_mem_wr_be(st, dd->odr_cntr, 2, 0);
        }
 
        if (j < ARRAY_SIZE(nvi_dmp_devs))
                int_ctl |= nvi_dmp_devs[j].int_ctl;
        if (irq_msk & (1 << DEV_STP))
                int_ctl |= PED_STEPDET_SET;
-       ret_t |= nvi_mem_wr_be_mc(st, DATA_INTR_CTL, 2, int_ctl,
-                                 &st->mc.icm.data_intr_ctl);
+       ret |= nvi_mem_wr_be_mc(st, DATA_INTR_CTL, 2, int_ctl,
+                               &st->mc.icm.data_intr_ctl);
        /* WAR: DMPRATE_CNTR only runs off of SRC_ACC.  If SRC_ACC is off then
         * timestamps will switch to realtime when DMPRATE_CNTR doesn't tick.
         */
        st->src[SRC_DMP].period_us_src = st->src[SRC_ACC].period_us_src;
-       return ret_t;
+       return ret;
 }
 
 static int nvi_dmp_irq(struct nvi_state *st, unsigned int en_msk)