diff options
Diffstat (limited to 'drivers/hwmon/lis3lv02d_i2c.c')
-rw-r--r-- | drivers/hwmon/lis3lv02d_i2c.c | 13 |
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 | ||
69 | static 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 | |||
69 | static int lis3_i2c_init(struct lis3lv02d *lis3) | 77 | static 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 | ||