diff options
author | Chethan Krishna N <chethan.krishna@stericsson.com> | 2011-08-25 13:44:02 +0530 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:06:07 +0200 |
commit | de5507b7d332266e8fd44f2d0351342c13f1c09f (patch) | |
tree | a279534afa50afdeafe2b7374067a313038dcaa9 | |
parent | 3fda9d6fbd963bdc22cb8d040c59f09cf5513fb1 (diff) |
lsm303dlhc: Correct out register reading
Out register reading method for lsm303dlhc sensor
chip is corrected
ST-Ericsson ID: 356390
ST-Ericsson FOSS-OUT ID: NA
ST-Ericsson Linux next: NA
Change-Id: Ia1805ad094886a8d23a29148a9d0e3ba460a06f7
Signed-off-by: Chethan Krishna N <chethan.krishna@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/28688
Reviewed-by: QATEST
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
-rw-r--r-- | drivers/hwmon/Kconfig | 14 | ||||
-rw-r--r-- | drivers/hwmon/Makefile | 3 | ||||
-rw-r--r-- | drivers/hwmon/lsm303dlh_m.c | 11 | ||||
-rw-r--r-- | drivers/hwmon/lsm303dlhc_a.c | 2 |
4 files changed, 28 insertions, 2 deletions
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 72524d16630..cd1468b1b3a 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -710,6 +710,20 @@ config SENSORS_LSM303DLH_INPUT_DEVICE interrupts, need to be enabled only when input device support is required. +config SENSORS_LSM303DLHC + tristate "ST LSM303DLHC 3-axis accelerometer and 3-axis magnetometer" + depends on I2C + default n + help + This driver provides support for the LSM303DLHC chip which includes a + 3-axis accelerometer and a 3-axis magnetometer. + + This driver can also be built as modules. If so, the module for + accelerometer will be called lsm303dlhc_a and for magnetometer it will + be called lsm303dlh_m. + + Say Y here if you have a device containing lsm303dlhc chip. + config SENSORS_L3G4200D tristate "ST L3G4200D 3-axis gyroscope" depends on I2C diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile index adca284522b..e4a4b4b9edb 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile @@ -84,7 +84,8 @@ obj-$(CONFIG_SENSORS_LM93) += lm93.o obj-$(CONFIG_SENSORS_LM95241) += lm95241.o obj-$(CONFIG_SENSORS_LM95245) += lm95245.o obj-$(CONFIG_SENSORS_LTC4151) += ltc4151.o -obj-$(CONFIG_SENSORS_LSM303DLH) += lsm303dlh_a.o lsm303dlh_m.o lsm303dlhc_a.o +obj-$(CONFIG_SENSORS_LSM303DLH) += lsm303dlh_a.o lsm303dlh_m.o +obj-$(CONFIG_SENSORS_LSM303DLHC)+= lsm303dlhc_a.o obj-$(CONFIG_SENSORS_L3G4200D) += l3g4200d.o obj-$(CONFIG_SENSORS_LTC4215) += ltc4215.o obj-$(CONFIG_SENSORS_LTC4245) += ltc4245.o diff --git a/drivers/hwmon/lsm303dlh_m.c b/drivers/hwmon/lsm303dlh_m.c index 254f44d40c6..aa43d055e67 100644 --- a/drivers/hwmon/lsm303dlh_m.c +++ b/drivers/hwmon/lsm303dlh_m.c @@ -319,6 +319,7 @@ static ssize_t lsm303dlh_m_store_rate(struct device *dev, static int lsm303dlh_m_xyz_read(struct lsm303dlh_m_data *ddata) { unsigned char xyz_data[6]; + short temp; int ret = lsm303dlh_m_read_multi(ddata, OUT_X_M, 6, xyz_data, "OUT_X_M"); if (ret < 0) @@ -332,6 +333,16 @@ static int lsm303dlh_m_xyz_read(struct lsm303dlh_m_data *ddata) ddata->data[2] = (short) (((xyz_data[4]) << 8) | xyz_data[5]); +#ifdef SENSORS_LSM303DLHC + /* + * the out registers are in x, z and y order + * so swap y and z values + */ + temp = ddata->data[1]; + ddata->data[1] = ddata->data[2]; + ddata->data[2] = temp; +#endif + /* taking orientation of x,y,z axis into account*/ ddata->data[ddata->pdata.axis_map_x] = ddata->pdata.negative_x ? diff --git a/drivers/hwmon/lsm303dlhc_a.c b/drivers/hwmon/lsm303dlhc_a.c index 512d511ece4..175a111cc0a 100644 --- a/drivers/hwmon/lsm303dlhc_a.c +++ b/drivers/hwmon/lsm303dlhc_a.c @@ -51,7 +51,7 @@ #define SHIFT_ADJ_8G 2 /* ~3.9/16*/ #define SHIFT_ADJ_16G 1 /* ~3.9/16*/ -#define AXISDATA_REG 0x29 /* axis data */ +#define AXISDATA_REG 0x28 /* axis data */ /* lsm303dlh magnetometer registers */ #define IRA_REG_M 0x0A |