aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sensor
diff options
context:
space:
mode:
authorsbrissen <sbrissen@hotmail.com>2013-06-21 07:40:19 -0400
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-25 17:05:03 +0200
commitcb93f68cb9ab19d9647962568b4c895548a869e8 (patch)
tree489bbfb6351db1d685e81c3d8c9c118544b68be4 /drivers/sensor
parent5b3cb3ccc3df3b6106b5ae91f1ca77fcb1d99064 (diff)
downloadkernel_samsung_smdk4412-cb93f68cb9ab19d9647962568b4c895548a869e8.zip
kernel_samsung_smdk4412-cb93f68cb9ab19d9647962568b4c895548a869e8.tar.gz
kernel_samsung_smdk4412-cb93f68cb9ab19d9647962568b4c895548a869e8.tar.bz2
smdk4412: add i925/p4noteltevzw support
Change-Id: I17d3befd6a6538c16db0675253927068a09085c6
Diffstat (limited to 'drivers/sensor')
-rw-r--r--drivers/sensor/lsm330dlc_accel.c30
-rw-r--r--drivers/sensor/sensors_core.c1
2 files changed, 23 insertions, 8 deletions
diff --git a/drivers/sensor/lsm330dlc_accel.c b/drivers/sensor/lsm330dlc_accel.c
index 5f228c7..430ef85 100644
--- a/drivers/sensor/lsm330dlc_accel.c
+++ b/drivers/sensor/lsm330dlc_accel.c
@@ -1045,15 +1045,25 @@ static int lsm330dlc_accel_probe(struct i2c_client *client,
{
struct lsm330dlc_accel_data *data;
struct accel_platform_data *pdata;
- int err = 0;
+ int err = 0, retry;
+ int probe_retry_max = 3;
accel_dbgmsg("is started\n");
- if (!i2c_check_functionality(client->adapter,
- I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
- I2C_FUNC_SMBUS_READ_I2C_BLOCK)) {
- pr_err("%s: i2c functionality check failed!\n", __func__);
- err = -ENODEV;
- goto exit;
+probe_retry:
+ for (retry = 0; retry < 5; retry++) {
+ if (!i2c_check_functionality(client->adapter,
+ I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
+ I2C_FUNC_SMBUS_READ_I2C_BLOCK)) {
+ pr_err("%s: i2c functionality failed!\n", __func__);
+
+ if (retry == 4) {
+ err = -ENODEV;
+ goto exit;
+ }
+ i2c_smbus_write_byte_data(client, CTRL_REG1, PM_OFF);
+ mdelay(2);
+ } else
+ break;
}
data = kzalloc(sizeof(struct lsm330dlc_accel_data), GFP_KERNEL);
@@ -1315,6 +1325,12 @@ err_misc_register:
err_read_reg:
kfree(data);
exit:
+ if (probe_retry_max > 0) {
+ pr_err("%s: Failed to probe..(%d try left)\n",
+ __func__, probe_retry_max);
+ probe_retry_max--;
+ goto probe_retry;
+ }
return err;
}
diff --git a/drivers/sensor/sensors_core.c b/drivers/sensor/sensors_core.c
index e003652..1813b99 100644
--- a/drivers/sensor/sensors_core.c
+++ b/drivers/sensor/sensors_core.c
@@ -26,7 +26,6 @@ struct class *sensors_class;
* sensors_classdev_register - create new sensor device in sensors_class.
* @dev: The device to register.
*/
-
static void set_sensor_attr(struct device *dev,
struct device_attribute *attributes[])
{