Revert "hwmon/lis3dh: make read/write of the range sys entry consistent"
authorKappel, LaurentX <laurentx.kappel@intel.com>
Wed, 9 May 2012 08:51:07 +0000 (01:51 -0700)
committerKappel, LaurentX <laurentx.kappel@intel.com>
Wed, 9 May 2012 09:07:53 +0000 (02:07 -0700)
BZ: 34712

The range sys entry uses different values for reading and writing.
This commit changes that to use the same values.

Old-Change-Id: If7a017f5fa22a6955e7e08814eb29521ead9544e
Signed-off-by: Wang Zhifeng <zhifeng.wang@intel.com>
This reverts commit f4d80d5486d0665895f93f03b4da4e4c1193a51e
Change-Id: Id2c0a7085e6a0502c20c03b84177b0230cc45ff0
Reviewed-on: http://android.intel.com:8080/47943
Reviewed-by: Kappel, LaurentX <laurentx.kappel@intel.com>
Tested-by: Kappel, LaurentX <laurentx.kappel@intel.com>
arch/x86/platform/intel-mid/device_libs/platform_lis3dh.c
drivers/hwmon/lis3dh_acc.c
include/linux/input/lis3dh.h

index 463deea..4dcae97 100644 (file)
@@ -21,7 +21,6 @@ void *lis3dh_platform_data(void *info)
        static struct lis3dh_acc_platform_data lis3dh_pdata;
 
        lis3dh_pdata.poll_interval = 200;
-       lis3dh_pdata.g_range = 2;
        lis3dh_pdata.negate_x = 1;
        lis3dh_pdata.negate_y = 0;
        lis3dh_pdata.negate_z = 0;
index e37409a..3fdcf4d 100644 (file)
 #define SENSITIVITY_8G         4       /**     mg/LSB  */
 #define SENSITIVITY_16G                12      /**     mg/LSB  */
 
-/* Accelerometer Sensor Full Scale */
-#define LIS3DH_ACC_FS_MASK             0x30
-#define LIS3DH_ACC_G_2G                0x00
-#define LIS3DH_ACC_G_4G                0x10
-#define LIS3DH_ACC_G_8G                0x20
-#define LIS3DH_ACC_G_16G               0x30
-
 /* Accelerometer Sensor Operating Mode */
 #define LIS3DH_ACC_ENABLE      0x01
 #define LIS3DH_ACC_DISABLE     0x00
@@ -362,23 +355,18 @@ int lis3dh_acc_update_g_range(struct lis3dh_acc_data *acc, u8 new_g_range)
        u8 init_val;
        u8 new_val;
        u8 mask = LIS3DH_ACC_FS_MASK | HIGH_RESOLUTION;
-       u8 fs_bits = 0;
 
        switch (new_g_range) {
-       case 2:
-               fs_bits = LIS3DH_ACC_G_2G;
+       case LIS3DH_ACC_G_2G:
                sensitivity = SENSITIVITY_2G;
                break;
-       case 4:
-               fs_bits = LIS3DH_ACC_G_4G;
+       case LIS3DH_ACC_G_4G:
                sensitivity = SENSITIVITY_4G;
                break;
-       case 8:
-               fs_bits = LIS3DH_ACC_G_8G;
+       case LIS3DH_ACC_G_8G:
                sensitivity = SENSITIVITY_8G;
                break;
-       case 16:
-               fs_bits = LIS3DH_ACC_G_16G;
+       case LIS3DH_ACC_G_16G:
                sensitivity = SENSITIVITY_16G;
                break;
        default:
@@ -394,7 +382,7 @@ int lis3dh_acc_update_g_range(struct lis3dh_acc_data *acc, u8 new_g_range)
                goto error;
        init_val = buf;
        acc->resume_state[RES_CTRL_REG4] = init_val;
-       new_val = fs_bits | HIGH_RESOLUTION;
+       new_val = new_g_range | HIGH_RESOLUTION;
        updated_val = ((mask & new_val) | ((~mask) & init_val));
        buf = updated_val;
        err = lis3dh_acc_i2c_write(acc, CTRL_REG4, &buf, 1);
@@ -652,10 +640,24 @@ static ssize_t attr_get_range(struct device *dev,
 {
        char val;
        struct lis3dh_acc_data *acc = dev_get_drvdata(dev);
-       char range;
+       char range = 2;
 
        mutex_lock(&acc->lock);
-       range = acc->pdata->g_range ;
+       val = acc->pdata->g_range ;
+       switch (val) {
+       case LIS3DH_ACC_G_2G:
+               range = 2;
+               break;
+       case LIS3DH_ACC_G_4G:
+               range = 4;
+               break;
+       case LIS3DH_ACC_G_8G:
+               range = 8;
+               break;
+       case LIS3DH_ACC_G_16G:
+               range = 16;
+               break;
+       }
        mutex_unlock(&acc->lock);
        return sprintf(buf, "%d\n", range);
 }
@@ -670,13 +672,9 @@ static ssize_t attr_set_range(struct device *dev,
        if (strict_strtoul(buf, 10, &val))
                return -EINVAL;
 
-       if (val != 2 && val != 4 && val != 8 && val != 16)
-               return -EINVAL;
-
-
        mutex_lock(&acc->lock);
-       acc->pdata->g_range = (u8) val;
-       lis3dh_acc_update_g_range(acc, acc->pdata->g_range);
+       acc->pdata->g_range = val;
+       lis3dh_acc_update_g_range(acc, val);
        mutex_unlock(&acc->lock);
 
        return size;
index 87b61a1..49a7498 100644 (file)
@@ -61,6 +61,13 @@ Revision 1-0-7 26/11/2010
 /*   Accelerometer defines section              */
 /************************************************/
 
+/* Accelerometer Sensor Full Scale */
+#define LIS3DH_ACC_FS_MASK             0x30
+#define LIS3DH_ACC_G_2G                0x00
+#define LIS3DH_ACC_G_4G                0x10
+#define LIS3DH_ACC_G_8G                0x20
+#define LIS3DH_ACC_G_16G               0x30
+
 /* supported accelerometer model */
 enum acc_model {
        MODEL_LIS3DH,