aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lis3lv02d_i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/lis3lv02d_i2c.c')
-rw-r--r--drivers/hwmon/lis3lv02d_i2c.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/hwmon/lis3lv02d_i2c.c b/drivers/hwmon/lis3lv02d_i2c.c
index c1e7420cf77d..0074809917a2 100644
--- a/drivers/hwmon/lis3lv02d_i2c.c
+++ b/drivers/hwmon/lis3lv02d_i2c.c
@@ -66,6 +66,14 @@ static inline s32 lis3_i2c_read(struct lis3lv02d *lis3, int reg, u8 *v)
66 return 0; 66 return 0;
67} 67}
68 68
69static inline s32 lis3_i2c_blockread(struct lis3lv02d *lis3, int reg, int len,
70 u8 *v)
71{
72 struct i2c_client *c = lis3->bus_priv;
73 reg |= (1 << 7); /* 7th bit enables address auto incrementation */
74 return i2c_smbus_read_i2c_block_data(c, reg, len, v);
75}
76
69static int lis3_i2c_init(struct lis3lv02d *lis3) 77static int lis3_i2c_init(struct lis3lv02d *lis3)
70{ 78{
71 u8 reg; 79 u8 reg;
@@ -102,6 +110,11 @@ static int __devinit lis3lv02d_i2c_probe(struct i2c_client *client,
102 if (pdata->driver_features & LIS3_USE_REGULATOR_CTRL) 110 if (pdata->driver_features & LIS3_USE_REGULATOR_CTRL)
103 lis3_dev.reg_ctrl = lis3_reg_ctrl; 111 lis3_dev.reg_ctrl = lis3_reg_ctrl;
104 112
113 if ((pdata->driver_features & LIS3_USE_BLOCK_READ) &&
114 (i2c_check_functionality(client->adapter,
115 I2C_FUNC_SMBUS_I2C_BLOCK)))
116 lis3_dev.blkread = lis3_i2c_blockread;
117
105 if (pdata->axis_x) 118 if (pdata->axis_x)
106 lis3lv02d_axis_map.x = pdata->axis_x; 119 lis3lv02d_axis_map.x = pdata->axis_x;
107 120