diff options
author | sbrissen <sbrissen@hotmail.com> | 2013-06-21 07:40:19 -0400 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2013-06-25 17:05:03 +0200 |
commit | cb93f68cb9ab19d9647962568b4c895548a869e8 (patch) | |
tree | 489bbfb6351db1d685e81c3d8c9c118544b68be4 /drivers/sensor | |
parent | 5b3cb3ccc3df3b6106b5ae91f1ca77fcb1d99064 (diff) | |
download | kernel_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.c | 30 | ||||
-rw-r--r-- | drivers/sensor/sensors_core.c | 1 |
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[]) { |