aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Shields <keepcalm444@gmail.com>2016-03-03 19:44:58 +1100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-03-18 01:51:05 +0100
commit6d0a82cfcb5f62bdf40cedeba519b9aeb5fc70c4 (patch)
tree3e707a2101cabde401b432e2a1fe92754ab5d0bb
parentdedc1eefd0eff49c445853d94fda90d9dd130138 (diff)
downloadkernel_samsung_smdk4412-6d0a82cfcb5f62bdf40cedeba519b9aeb5fc70c4.zip
kernel_samsung_smdk4412-6d0a82cfcb5f62bdf40cedeba519b9aeb5fc70c4.tar.gz
kernel_samsung_smdk4412-6d0a82cfcb5f62bdf40cedeba519b9aeb5fc70c4.tar.bz2
sensor: lsm330dlc: allow exposing in /dev/input
don't make /dev/accelerometer mutually exclusive with /dev/input, though Change-Id: I576bb751bb1c590af97b1c60b6a1ca94a9539b81
-rw-r--r--drivers/sensor/Kconfig10
-rw-r--r--drivers/sensor/lsm330dlc_accel.c15
2 files changed, 18 insertions, 7 deletions
diff --git a/drivers/sensor/Kconfig b/drivers/sensor/Kconfig
index 36464eb..fddd251 100644
--- a/drivers/sensor/Kconfig
+++ b/drivers/sensor/Kconfig
@@ -155,6 +155,16 @@ config SENSORS_LSM330DLC
help
Driver for STMicro LSM330DLC
+config SENSORS_LSM330DLC_USE_INPUT_DEV
+ depends on SENSORS_LSM330DLC
+ bool "LSM330DLC - expose device in /dev/input"
+ default n
+ help
+ Samsung blob sensor HALs expect LSM330DLC to be exposed via /dev/accelerometer
+ Writing a custom sensor HAL is probably easier if the accelerometer is exposed
+ in the same place as the rest of the sensors. Note that enabling this will not
+ disable /dev/accelerometer
+
config SENSORS_LPS331
tristate "STMicro LPS331 driver"
default n
diff --git a/drivers/sensor/lsm330dlc_accel.c b/drivers/sensor/lsm330dlc_accel.c
index 430ef85..f25a883 100644
--- a/drivers/sensor/lsm330dlc_accel.c
+++ b/drivers/sensor/lsm330dlc_accel.c
@@ -42,7 +42,11 @@
#undef DEBUG_ODR
#undef DEBUG_REACTIVE_ALERT
/* It will be used, when google fusion is enabled. */
+#ifdef CONFIG_SENSORS_LSM330DLC_USE_INPUT_DEV
+#define USES_INPUT_DEV 1
+#else
#undef USES_INPUT_DEV
+#endif
#define VENDOR "STM"
#define CHIP_ID "LSM330"
@@ -1130,7 +1134,7 @@ probe_retry:
pr_err("%s: could not create sysfs group\n", __func__);
goto err_create_sysfs;
}
-#else
+#endif
/* sensor HAL expects to find /dev/accelerometer */
data->lsm330dlc_accel_device.minor = MISC_DYNAMIC_MINOR;
data->lsm330dlc_accel_device.name = ACC_DEV_NAME;
@@ -1141,7 +1145,6 @@ probe_retry:
pr_err("%s: misc_register failed\n", __FILE__);
goto err_misc_register;
}
-#endif
#ifdef USES_MOVEMENT_RECOGNITION
data->movement_recog_flag = OFF;
@@ -1315,11 +1318,10 @@ err_create_sysfs:
input_unregister_device(data->input_dev);
err_input_allocate:
destroy_workqueue(data->work_queue);
-err_create_workqueue:
-#else
+#endif
misc_deregister(&data->lsm330dlc_accel_device);
err_misc_register:
-#endif
+err_create_workqueue:
mutex_destroy(&data->read_lock);
mutex_destroy(&data->write_lock);
err_read_reg:
@@ -1373,9 +1375,8 @@ static int lsm330dlc_accel_remove(struct i2c_client *client)
sysfs_remove_group(&data->input_dev->dev.kobj,
&lsm330dlc_attribute_group);
input_unregister_device(data->input_dev);
-#else
- misc_deregister(&data->lsm330dlc_accel_device);
#endif
+ misc_deregister(&data->lsm330dlc_accel_device);
mutex_destroy(&data->read_lock);
mutex_destroy(&data->write_lock);
kfree(data);