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