From a2de5b1711b14c9c55190d608d179d043fba72e7 Mon Sep 17 00:00:00 2001 From: "Kappel, LaurentX" Date: Wed, 9 May 2012 01:51:07 -0700 Subject: [PATCH] Revert "hwmon/lis3dh: make read/write of the range sys entry consistent" 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 This reverts commit f4d80d5486d0665895f93f03b4da4e4c1193a51e Change-Id: Id2c0a7085e6a0502c20c03b84177b0230cc45ff0 Reviewed-on: http://android.intel.com:8080/47943 Reviewed-by: Kappel, LaurentX Tested-by: Kappel, LaurentX --- .../intel-mid/device_libs/platform_lis3dh.c | 1 - drivers/hwmon/lis3dh_acc.c | 48 +++++++++++----------- include/linux/input/lis3dh.h | 7 ++++ 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/arch/x86/platform/intel-mid/device_libs/platform_lis3dh.c b/arch/x86/platform/intel-mid/device_libs/platform_lis3dh.c index 463deea..4dcae97 100644 --- a/arch/x86/platform/intel-mid/device_libs/platform_lis3dh.c +++ b/arch/x86/platform/intel-mid/device_libs/platform_lis3dh.c @@ -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; diff --git a/drivers/hwmon/lis3dh_acc.c b/drivers/hwmon/lis3dh_acc.c index e37409a..3fdcf4d 100644 --- a/drivers/hwmon/lis3dh_acc.c +++ b/drivers/hwmon/lis3dh_acc.c @@ -74,13 +74,6 @@ #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; diff --git a/include/linux/input/lis3dh.h b/include/linux/input/lis3dh.h index 87b61a1..49a7498 100644 --- a/include/linux/input/lis3dh.h +++ b/include/linux/input/lis3dh.h @@ -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, -- 2.7.4