Lines Matching defs:bma150

22 #include <linux/bma150.h>
179 static int bma150_set_mode(struct bma150_data *bma150, u8 mode)
183 error = bma150_set_reg_bits(bma150->client, mode, BMA150_WAKE_UP_POS,
188 error = bma150_set_reg_bits(bma150->client, mode, BMA150_SLEEP_POS,
196 bma150->mode = mode;
200 static int bma150_soft_reset(struct bma150_data *bma150)
204 error = bma150_set_reg_bits(bma150->client, 1, BMA150_SW_RES_POS,
213 static int bma150_set_range(struct bma150_data *bma150, u8 range)
215 return bma150_set_reg_bits(bma150->client, range, BMA150_RANGE_POS,
219 static int bma150_set_bandwidth(struct bma150_data *bma150, u8 bw)
221 return bma150_set_reg_bits(bma150->client, bw, BMA150_BANDWIDTH_POS,
225 static int bma150_set_low_g_interrupt(struct bma150_data *bma150,
230 error = bma150_set_reg_bits(bma150->client, hyst,
236 error = bma150_write_byte(bma150->client, BMA150_LOW_G_DUR_REG, dur);
240 error = bma150_write_byte(bma150->client, BMA150_LOW_G_THRES_REG, thres);
244 return bma150_set_reg_bits(bma150->client, !!enable,
249 static int bma150_set_high_g_interrupt(struct bma150_data *bma150,
254 error = bma150_set_reg_bits(bma150->client, hyst,
260 error = bma150_write_byte(bma150->client,
265 error = bma150_write_byte(bma150->client,
270 return bma150_set_reg_bits(bma150->client, !!enable,
276 static int bma150_set_any_motion_interrupt(struct bma150_data *bma150,
281 error = bma150_set_reg_bits(bma150->client, dur,
288 error = bma150_write_byte(bma150->client,
293 error = bma150_set_reg_bits(bma150->client, !!enable,
299 return bma150_set_reg_bits(bma150->client, !!enable,
305 static void bma150_report_xyz(struct bma150_data *bma150)
311 ret = i2c_smbus_read_i2c_block_data(bma150->client,
324 input_report_abs(bma150->input, ABS_X, x);
325 input_report_abs(bma150->input, ABS_Y, y);
326 input_report_abs(bma150->input, ABS_Z, z);
327 input_sync(bma150->input);
339 struct bma150_data *bma150 = input_get_drvdata(input);
341 bma150_report_xyz(bma150);
346 struct bma150_data *bma150 = input_get_drvdata(input);
349 error = pm_runtime_get_sync(&bma150->client->dev);
357 if (bma150->mode != BMA150_MODE_NORMAL) {
358 error = bma150_set_mode(bma150, BMA150_MODE_NORMAL);
368 struct bma150_data *bma150 = input_get_drvdata(input);
370 pm_runtime_put_sync(&bma150->client->dev);
372 if (bma150->mode != BMA150_MODE_SLEEP)
373 bma150_set_mode(bma150, BMA150_MODE_SLEEP);
376 static int bma150_initialize(struct bma150_data *bma150,
381 error = bma150_soft_reset(bma150);
385 error = bma150_set_bandwidth(bma150, cfg->bandwidth);
389 error = bma150_set_range(bma150, cfg->range);
393 if (bma150->client->irq) {
394 error = bma150_set_any_motion_interrupt(bma150,
401 error = bma150_set_high_g_interrupt(bma150,
407 error = bma150_set_low_g_interrupt(bma150,
414 return bma150_set_mode(bma150, BMA150_MODE_SLEEP);
422 struct bma150_data *bma150;
438 bma150 = devm_kzalloc(&client->dev, sizeof(*bma150), GFP_KERNEL);
439 if (!bma150)
442 bma150->client = client;
459 error = bma150_initialize(bma150, cfg);
463 idev = devm_input_allocate_device(&bma150->client->dev);
467 input_set_drvdata(idev, bma150);
468 bma150->input = idev;
499 BMA150_DRIVER, bma150);
508 i2c_set_clientdata(client, bma150);
523 struct bma150_data *bma150 = i2c_get_clientdata(client);
525 return bma150_set_mode(bma150, BMA150_MODE_SLEEP);
531 struct bma150_data *bma150 = i2c_get_clientdata(client);
533 return bma150_set_mode(bma150, BMA150_MODE_NORMAL);
539 { "bma150", 0 },