Lines Matching defs:haptics

3  * DRV2667 haptics driver family
129 static int drv2667_set_waveform_freq(struct drv2667_data *haptics)
138 freq = (haptics->frequency * 1000) / 78125;
140 dev_err(&haptics->client->dev,
145 error = regmap_read(haptics->regmap, DRV2667_PAGE, &read_buf);
147 dev_err(&haptics->client->dev,
153 haptics->page != read_buf) {
154 error = regmap_write(haptics->regmap,
155 DRV2667_PAGE, haptics->page);
157 dev_err(&haptics->client->dev,
163 error = regmap_write(haptics->regmap, DRV2667_RAM_FREQ, freq);
165 dev_err(&haptics->client->dev,
170 haptics->page != read_buf) {
171 error = regmap_write(haptics->regmap, DRV2667_PAGE, read_buf);
173 dev_err(&haptics->client->dev,
184 struct drv2667_data *haptics = container_of(work, struct drv2667_data, work);
187 if (haptics->magnitude) {
188 error = regmap_write(haptics->regmap,
189 DRV2667_PAGE, haptics->page);
191 dev_err(&haptics->client->dev,
196 error = regmap_write(haptics->regmap, DRV2667_RAM_AMP,
197 haptics->magnitude);
199 dev_err(&haptics->client->dev,
204 error = regmap_write(haptics->regmap,
207 dev_err(&haptics->client->dev,
212 error = regmap_write(haptics->regmap,
215 dev_err(&haptics->client->dev,
219 error = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2,
222 dev_err(&haptics->client->dev,
231 struct drv2667_data *haptics = input_get_drvdata(input);
234 haptics->magnitude = effect->u.rumble.strong_magnitude;
236 haptics->magnitude = effect->u.rumble.weak_magnitude;
238 haptics->magnitude = 0;
240 schedule_work(&haptics->work);
247 struct drv2667_data *haptics = input_get_drvdata(input);
250 cancel_work_sync(&haptics->work);
252 error = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2,
255 dev_err(&haptics->client->dev,
278 static int drv2667_init(struct drv2667_data *haptics)
283 haptics->frequency = 195;
284 haptics->page = DRV2667_PAGE_1;
286 error = regmap_register_patch(haptics->regmap,
290 dev_err(&haptics->client->dev,
296 error = regmap_write(haptics->regmap, DRV2667_PAGE, haptics->page);
298 dev_err(&haptics->client->dev, "Failed to set page: %d\n",
303 error = drv2667_set_waveform_freq(haptics);
307 error = regmap_register_patch(haptics->regmap,
311 dev_err(&haptics->client->dev,
317 error = regmap_write(haptics->regmap, DRV2667_PAGE, DRV2667_PAGE_0);
321 regmap_write(haptics->regmap, DRV2667_PAGE, DRV2667_PAGE_0);
338 struct drv2667_data *haptics;
341 haptics = devm_kzalloc(&client->dev, sizeof(*haptics), GFP_KERNEL);
342 if (!haptics)
345 haptics->regulator = devm_regulator_get(&client->dev, "vbat");
346 if (IS_ERR(haptics->regulator)) {
347 error = PTR_ERR(haptics->regulator);
353 haptics->input_dev = devm_input_allocate_device(&client->dev);
354 if (!haptics->input_dev) {
359 haptics->input_dev->name = "drv2667:haptics";
360 haptics->input_dev->dev.parent = client->dev.parent;
361 haptics->input_dev->close = drv2667_close;
362 input_set_drvdata(haptics->input_dev, haptics);
363 input_set_capability(haptics->input_dev, EV_FF, FF_RUMBLE);
365 error = input_ff_create_memless(haptics->input_dev, NULL,
373 INIT_WORK(&haptics->work, drv2667_worker);
375 haptics->client = client;
376 i2c_set_clientdata(client, haptics);
378 haptics->regmap = devm_regmap_init_i2c(client, &drv2667_regmap_config);
379 if (IS_ERR(haptics->regmap)) {
380 error = PTR_ERR(haptics->regmap);
386 error = drv2667_init(haptics);
392 error = input_register_device(haptics->input_dev);
404 struct drv2667_data *haptics = dev_get_drvdata(dev);
407 mutex_lock(&haptics->input_dev->mutex);
409 if (input_device_enabled(haptics->input_dev)) {
410 ret = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2,
414 regulator_disable(haptics->regulator);
418 ret = regulator_disable(haptics->regulator);
421 regmap_update_bits(haptics->regmap,
427 mutex_unlock(&haptics->input_dev->mutex);
433 struct drv2667_data *haptics = dev_get_drvdata(dev);
436 mutex_lock(&haptics->input_dev->mutex);
438 if (input_device_enabled(haptics->input_dev)) {
439 ret = regulator_enable(haptics->regulator);
445 ret = regmap_update_bits(haptics->regmap, DRV2667_CTRL_2,
449 regulator_disable(haptics->regulator);
456 mutex_unlock(&haptics->input_dev->mutex);
479 .name = "drv2667-haptics",
487 MODULE_DESCRIPTION("TI DRV2667 haptics driver");