diff options
| -rw-r--r-- | drivers/misc/m4sensorhub_mpu9150.c | 37 | ||||
| -rw-r--r-- | include/uapi/linux/input.h | 22 |
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 */ |