summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/m4sensorhub_mpu9150.c37
-rw-r--r--include/uapi/linux/input.h22
2 files changed, 23 insertions, 36 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);
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index a6d1dd642e7..4316b97d1d3 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -842,29 +842,7 @@ struct input_keymap_entry {
/* MSP (sensor) related events */
-#define ABS_STEPCOUNT 0x40
-#define ABS_ACTIVITY 0x41
-#define ABS_SPEED 0x42
-#define ABS_CADENCE 0x43
#define ABS_ALTITUDE 0x44
-#define ABS_PRESSURE_PASCAL 0x45
-#define ABS_ASCENT 0x46
-#define ABS_DESCENT 0x47
-#define ABS_INCLINATION 0x48
-#define ABS_STEPLENGTH 0x49
-#define ABS_3D_TAP_TAP 0x4a
-#define ABS_HEADING 0x4b
-#define ABS_TEMPERATURE 0x4c
-#define ABS_MSP_LATITUDE 0x4d
-#define ABS_MSP_LONGITUDE 0x4e
-#define ABS_MSP_HEADING 0x4f
-#define ABS_MSP_ACCURACY 0x50
-
-#define ABS_COMPASS_X 0x51
-#define ABS_COMPASS_Y 0x52
-#define ABS_COMPASS_Z 0x53
-#define ABS_COMPASS_ACCURACY 0x54
-
#define ABS_TILTSCROLL 0x55
/* TODO TEMP !!! CHeck IKXCLOCK-100 */