summaryrefslogtreecommitdiff
path: root/drivers/misc/m4sensorhub_mpu9150.c
diff options
context:
space:
mode:
authorAmit Jain <ajain@motorola.com>2014-02-04 17:17:29 -0600
committerJames Wylder <jwylder@motorola.com>2014-03-05 17:47:16 -0600
commit7cacb373c712e8049a70003667053034d2bc4a36 (patch)
treef81cf406fd471ae626765d7cef452541a77d36d2 /drivers/misc/m4sensorhub_mpu9150.c
parent7c71ebeec80ad6b0e2911b744e12138badc1455f (diff)
downloadolio-linux-3.10-7cacb373c712e8049a70003667053034d2bc4a36.tar.xz
olio-linux-3.10-7cacb373c712e8049a70003667053034d2bc4a36.zip
IKXCLOCK-175: Compass support in kernel
Change-Id: I340440f0e3c316d18f9480b19905b904538ce7cd Reviewed-on: http://gerrit.pcs.mot.com/608265 SLTApproved: Slta Waiver <sltawvr@motorola.com> Tested-by: Jira Key <jirakey@motorola.com> Reviewed-by: Sajid Dalvi <fsd017@motorola.com> Submit-Approved: Jira Key <jirakey@motorola.com>
Diffstat (limited to 'drivers/misc/m4sensorhub_mpu9150.c')
-rw-r--r--drivers/misc/m4sensorhub_mpu9150.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/drivers/misc/m4sensorhub_mpu9150.c b/drivers/misc/m4sensorhub_mpu9150.c
index f4a934f0f91..6cc7a838081 100644
--- a/drivers/misc/m4sensorhub_mpu9150.c
+++ b/drivers/misc/m4sensorhub_mpu9150.c
@@ -150,15 +150,13 @@ static void m4_report_mpu9150_inputevent(
input_sync(mpu9150_client_data->input_dev);
break;
case TYPE_COMPASS:
- input_report_abs(mpu9150_client_data->input_dev, ABS_COMPASS_X,
+ input_report_rel(mpu9150_client_data->input_dev, REL_X,
mpu9150_client_data->compass_data.cx);
- input_report_abs(mpu9150_client_data->input_dev, ABS_COMPASS_Y,
+ input_report_rel(mpu9150_client_data->input_dev, REL_Y,
mpu9150_client_data->compass_data.cy);
- input_report_abs(mpu9150_client_data->input_dev, ABS_COMPASS_Z,
+ input_report_rel(mpu9150_client_data->input_dev, REL_Z,
mpu9150_client_data->compass_data.cz);
- input_report_abs(mpu9150_client_data->input_dev,
- ABS_COMPASS_ACCURACY,
- mpu9150_client_data->compass_data.ca);
+ /* TODO : accuracy needs to be sent out through sysfs*/
input_sync(mpu9150_client_data->input_dev);
break;
case TYPE_FUSION:
@@ -430,9 +428,28 @@ static ssize_t m4_mpu9150_write_gyro_setdelay(struct device *dev,
static DEVICE_ATTR(gyro_setdelay, 0222, NULL, m4_mpu9150_write_gyro_setdelay);
+static ssize_t m4_mpu9150_write_compass_setdelay(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ int scanresult;
+
+ sscanf(buf, "%d", &scanresult);
+
+ m4_set_mpu9150_delay(misc_mpu9150_data, scanresult, TYPE_COMPASS);
+ mpu9150_irq_enable_disable(misc_mpu9150_data, TYPE_COMPASS,
+ SENSOR_IRQ_ENABLE);
+
+ return count;
+}
+
+static DEVICE_ATTR(compass_setdelay, 0222, NULL,
+ m4_mpu9150_write_compass_setdelay);
+
static struct attribute *mpu9150_control_attributes[] = {
&dev_attr_accel_setdelay.attr,
&dev_attr_gyro_setdelay.attr,
+ &dev_attr_compass_setdelay.attr,
NULL
};
@@ -925,14 +942,6 @@ static int mpu9150_client_probe(struct platform_device *pdev)
set_bit(EV_ABS, mpu9150_client_data->input_dev->evbit);
set_bit(EV_REL, mpu9150_client_data->input_dev->evbit);
input_set_abs_params(mpu9150_client_data->input_dev,
- ABS_COMPASS_X, -2147483647, 2147483647, 0, 0);
- input_set_abs_params(mpu9150_client_data->input_dev,
- ABS_COMPASS_Y, -2147483647, 2147483647, 0, 0);
- input_set_abs_params(mpu9150_client_data->input_dev,
- ABS_COMPASS_Z, -2147483647, 2147483647, 0, 0);
- input_set_abs_params(mpu9150_client_data->input_dev,
- ABS_COMPASS_ACCURACY, -128, 127, 0, 0);
- input_set_abs_params(mpu9150_client_data->input_dev,
ABS_X, -2147483647, 2147483647, 0, 0);
input_set_abs_params(mpu9150_client_data->input_dev,
ABS_Y, -2147483647, 2147483647, 0, 0);