Lines Matching refs:haptics

135 static int drv2667_set_waveform_freq(struct drv2667_data *haptics)  in drv2667_set_waveform_freq()  argument
144 freq = (haptics->frequency * 1000) / 78125; in drv2667_set_waveform_freq()
146 dev_err(&haptics->client->dev, in drv2667_set_waveform_freq()
151 error = regmap_read(haptics->regmap, DRV2667_PAGE, &read_buf); in drv2667_set_waveform_freq()
153 dev_err(&haptics->client->dev, in drv2667_set_waveform_freq()
159 haptics->page != read_buf) { in drv2667_set_waveform_freq()
160 error = regmap_write(haptics->regmap, in drv2667_set_waveform_freq()
161 DRV2667_PAGE, haptics->page); in drv2667_set_waveform_freq()
163 dev_err(&haptics->client->dev, in drv2667_set_waveform_freq()
169 error = regmap_write(haptics->regmap, DRV2667_RAM_FREQ, freq); in drv2667_set_waveform_freq()
171 dev_err(&haptics->client->dev, in drv2667_set_waveform_freq()
176 haptics->page != read_buf) { in drv2667_set_waveform_freq()
177 error = regmap_write(haptics->regmap, DRV2667_PAGE, read_buf); in drv2667_set_waveform_freq()
179 dev_err(&haptics->client->dev, in drv2667_set_waveform_freq()
190 struct drv2667_data *haptics = container_of(work, struct drv2667_data, work); in drv2667_worker() local
193 if (haptics->magnitude) { in drv2667_worker()
194 error = regmap_write(haptics->regmap, in drv2667_worker()
195 DRV2667_PAGE, haptics->page); in drv2667_worker()
197 dev_err(&haptics->client->dev, in drv2667_worker()
202 error = regmap_write(haptics->regmap, DRV2667_RAM_AMP, in drv2667_worker()
203 haptics->magnitude); in drv2667_worker()
205 dev_err(&haptics->client->dev, in drv2667_worker()
210 error = regmap_write(haptics->regmap, in drv2667_worker()
213 dev_err(&haptics->client->dev, in drv2667_worker()
218 error = regmap_write(haptics->regmap, in drv2667_worker()
221 dev_err(&haptics->client->dev, in drv2667_worker()
225 error = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2, in drv2667_worker()
228 dev_err(&haptics->client->dev, in drv2667_worker()
237 struct drv2667_data *haptics = input_get_drvdata(input); in drv2667_haptics_play() local
240 haptics->magnitude = effect->u.rumble.strong_magnitude; in drv2667_haptics_play()
242 haptics->magnitude = effect->u.rumble.weak_magnitude; in drv2667_haptics_play()
244 haptics->magnitude = 0; in drv2667_haptics_play()
246 schedule_work(&haptics->work); in drv2667_haptics_play()
253 struct drv2667_data *haptics = input_get_drvdata(input); in drv2667_close() local
256 cancel_work_sync(&haptics->work); in drv2667_close()
258 error = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2, in drv2667_close()
261 dev_err(&haptics->client->dev, in drv2667_close()
284 static int drv2667_init(struct drv2667_data *haptics) in drv2667_init() argument
289 haptics->frequency = 195; in drv2667_init()
290 haptics->page = DRV2667_PAGE_1; in drv2667_init()
292 error = regmap_register_patch(haptics->regmap, in drv2667_init()
296 dev_err(&haptics->client->dev, in drv2667_init()
302 error = regmap_write(haptics->regmap, DRV2667_PAGE, haptics->page); in drv2667_init()
304 dev_err(&haptics->client->dev, "Failed to set page: %d\n", in drv2667_init()
309 error = drv2667_set_waveform_freq(haptics); in drv2667_init()
313 error = regmap_register_patch(haptics->regmap, in drv2667_init()
317 dev_err(&haptics->client->dev, in drv2667_init()
323 error = regmap_write(haptics->regmap, DRV2667_PAGE, DRV2667_PAGE_0); in drv2667_init()
327 regmap_write(haptics->regmap, DRV2667_PAGE, DRV2667_PAGE_0); in drv2667_init()
345 struct drv2667_data *haptics; in drv2667_probe() local
348 haptics = devm_kzalloc(&client->dev, sizeof(*haptics), GFP_KERNEL); in drv2667_probe()
349 if (!haptics) in drv2667_probe()
352 haptics->regulator = devm_regulator_get(&client->dev, "vbat"); in drv2667_probe()
353 if (IS_ERR(haptics->regulator)) { in drv2667_probe()
354 error = PTR_ERR(haptics->regulator); in drv2667_probe()
360 haptics->input_dev = devm_input_allocate_device(&client->dev); in drv2667_probe()
361 if (!haptics->input_dev) { in drv2667_probe()
366 haptics->input_dev->name = "drv2667:haptics"; in drv2667_probe()
367 haptics->input_dev->dev.parent = client->dev.parent; in drv2667_probe()
368 haptics->input_dev->close = drv2667_close; in drv2667_probe()
369 input_set_drvdata(haptics->input_dev, haptics); in drv2667_probe()
370 input_set_capability(haptics->input_dev, EV_FF, FF_RUMBLE); in drv2667_probe()
372 error = input_ff_create_memless(haptics->input_dev, NULL, in drv2667_probe()
380 INIT_WORK(&haptics->work, drv2667_worker); in drv2667_probe()
382 haptics->client = client; in drv2667_probe()
383 i2c_set_clientdata(client, haptics); in drv2667_probe()
385 haptics->regmap = devm_regmap_init_i2c(client, &drv2667_regmap_config); in drv2667_probe()
386 if (IS_ERR(haptics->regmap)) { in drv2667_probe()
387 error = PTR_ERR(haptics->regmap); in drv2667_probe()
393 error = drv2667_init(haptics); in drv2667_probe()
399 error = input_register_device(haptics->input_dev); in drv2667_probe()
411 struct drv2667_data *haptics = dev_get_drvdata(dev); in drv2667_suspend() local
414 mutex_lock(&haptics->input_dev->mutex); in drv2667_suspend()
416 if (haptics->input_dev->users) { in drv2667_suspend()
417 ret = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2, in drv2667_suspend()
421 regulator_disable(haptics->regulator); in drv2667_suspend()
425 ret = regulator_disable(haptics->regulator); in drv2667_suspend()
428 regmap_update_bits(haptics->regmap, in drv2667_suspend()
434 mutex_unlock(&haptics->input_dev->mutex); in drv2667_suspend()
440 struct drv2667_data *haptics = dev_get_drvdata(dev); in drv2667_resume() local
443 mutex_lock(&haptics->input_dev->mutex); in drv2667_resume()
445 if (haptics->input_dev->users) { in drv2667_resume()
446 ret = regulator_enable(haptics->regulator); in drv2667_resume()
452 ret = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2, in drv2667_resume()
456 regulator_disable(haptics->regulator); in drv2667_resume()
463 mutex_unlock(&haptics->input_dev->mutex); in drv2667_resume()