27 #include <linux/module.h>
28 #include <linux/kernel.h>
31 #include <linux/i2c.h>
40 #define DRV_NAME "lis3lv02d_i2c"
42 static const char reg_vdd[] =
"Vdd";
43 static const char reg_vdd_io[] =
"Vdd_IO";
73 static inline s32 lis3_i2c_blockread(
struct lis3lv02d *lis3,
int reg,
int len,
81 static int lis3_i2c_init(
struct lis3lv02d *lis3)
135 (i2c_check_functionality(client->
adapter,
137 lis3_dev.blkread = lis3_i2c_blockread;
140 lis3lv02d_axis_map.
x = pdata->
axis_x;
143 lis3lv02d_axis_map.
y = pdata->
axis_y;
146 lis3lv02d_axis_map.
z = pdata->
axis_z;
155 lis3_dev.regulators[0].supply = reg_vdd;
156 lis3_dev.regulators[1].supply = reg_vdd_io;
172 i2c_set_clientdata(client, &
lis3_dev);
196 struct lis3lv02d *lis3 = i2c_get_clientdata(client);
210 #ifdef CONFIG_PM_SLEEP
211 static int lis3lv02d_i2c_suspend(
struct device *
dev)
214 struct lis3lv02d *lis3 = i2c_get_clientdata(client);
216 if (!lis3->
pdata || !lis3->
pdata->wakeup_flags)
221 static int lis3lv02d_i2c_resume(
struct device *dev)
224 struct lis3lv02d *lis3 = i2c_get_clientdata(client);
231 if (!lis3->
pdata || !lis3->
pdata->wakeup_flags ||
232 pm_runtime_suspended(dev))
239 #ifdef CONFIG_PM_RUNTIME
240 static int lis3_i2c_runtime_suspend(
struct device *dev)
243 struct lis3lv02d *lis3 = i2c_get_clientdata(client);
249 static int lis3_i2c_runtime_resume(
struct device *dev)
252 struct lis3lv02d *lis3 = i2c_get_clientdata(client);
267 static const struct dev_pm_ops lis3_pm_ops = {
269 lis3lv02d_i2c_resume)
271 lis3_i2c_runtime_resume,
282 .probe = lis3lv02d_i2c_probe,
284 .id_table = lis3lv02d_id,