Lines Matching refs:haptics

225 static int aw86927_wait_enter_standby(struct aw86927_data *haptics)  in aw86927_wait_enter_standby()  argument
230 err = regmap_read_poll_timeout(haptics->regmap, AW86927_GLBRD5_REG, reg_val, in aw86927_wait_enter_standby()
236 dev_err(haptics->dev, "did not enter standby: %d\n", err); in aw86927_wait_enter_standby()
242 static int aw86927_play_mode(struct aw86927_data *haptics, u8 play_mode) in aw86927_play_mode() argument
249 err = regmap_update_bits(haptics->regmap, in aw86927_play_mode()
257 err = regmap_update_bits(haptics->regmap, in aw86927_play_mode()
268 err = regmap_update_bits(haptics->regmap, in aw86927_play_mode()
276 err = regmap_update_bits(haptics->regmap, in aw86927_play_mode()
284 err = regmap_update_bits(haptics->regmap, in aw86927_play_mode()
298 static int aw86927_stop(struct aw86927_data *haptics) in aw86927_stop() argument
302 err = regmap_write(haptics->regmap, AW86927_PLAYCFG4_REG, AW86927_PLAYCFG4_STOP); in aw86927_stop()
304 dev_err(haptics->dev, "Failed to stop playback: %d\n", err); in aw86927_stop()
308 err = aw86927_wait_enter_standby(haptics); in aw86927_stop()
310 dev_err(haptics->dev, "Failed to enter standby, trying to force it\n"); in aw86927_stop()
311 err = aw86927_play_mode(haptics, AW86927_STANDBY_MODE); in aw86927_stop()
321 struct aw86927_data *haptics = input_get_drvdata(dev); in aw86927_haptics_play() local
329 if (haptics->running && level) in aw86927_haptics_play()
332 haptics->running = level; in aw86927_haptics_play()
333 schedule_work(&haptics->play_work); in aw86927_haptics_play()
338 static int aw86927_play_sine(struct aw86927_data *haptics) in aw86927_play_sine() argument
342 err = aw86927_stop(haptics); in aw86927_play_sine()
346 err = aw86927_play_mode(haptics, AW86927_RAM_MODE); in aw86927_play_sine()
350 err = regmap_update_bits(haptics->regmap, AW86927_PLAYCFG3_REG, in aw86927_play_sine()
358 err = regmap_update_bits(haptics->regmap, AW86927_WAVCFG1_REG, in aw86927_play_sine()
365 err = regmap_update_bits(haptics->regmap, AW86927_WAVCFG2_REG, in aw86927_play_sine()
371 err = regmap_update_bits(haptics->regmap, in aw86927_play_sine()
380 err = regmap_write(haptics->regmap, AW86927_PLAYCFG2_REG, 0x7c); in aw86927_play_sine()
385 err = regmap_write(haptics->regmap, AW86927_PLAYCFG4_REG, AW86927_PLAYCFG4_GO); in aw86927_play_sine()
394 struct aw86927_data *haptics = input_get_drvdata(input); in aw86927_close() local
395 struct device *dev = &haptics->client->dev; in aw86927_close()
398 cancel_work_sync(&haptics->play_work); in aw86927_close()
400 err = aw86927_stop(haptics); in aw86927_close()
407 struct aw86927_data *haptics = in aw86927_haptics_play_work() local
409 struct device *dev = &haptics->client->dev; in aw86927_haptics_play_work()
412 if (haptics->running) in aw86927_haptics_play_work()
413 err = aw86927_play_sine(haptics); in aw86927_haptics_play_work()
415 err = aw86927_stop(haptics); in aw86927_haptics_play_work()
421 static void aw86927_hw_reset(struct aw86927_data *haptics) in aw86927_hw_reset() argument
424 gpiod_set_value_cansleep(haptics->reset_gpio, 1); in aw86927_hw_reset()
428 gpiod_set_value_cansleep(haptics->reset_gpio, 0); in aw86927_hw_reset()
433 static int aw86927_haptic_init(struct aw86927_data *haptics) in aw86927_haptic_init() argument
437 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
446 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
454 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
459 err = regmap_write(haptics->regmap, AW86927_ANACFG11_REG, 0x0f); in aw86927_haptic_init()
463 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
471 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
479 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
487 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
492 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
499 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
506 err = regmap_update_bits(haptics->regmap, AW86927_CONTCFG10_REG, in aw86927_haptic_init()
513 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
520 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
528 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
536 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
543 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
550 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
555 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
563 err = regmap_write(haptics->regmap, in aw86927_haptic_init()
568 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
576 err = regmap_update_bits(haptics->regmap, in aw86927_haptic_init()
587 static int aw86927_ram_init(struct aw86927_data *haptics) in aw86927_ram_init() argument
591 err = aw86927_wait_enter_standby(haptics); in aw86927_ram_init()
596 err = regmap_update_bits(haptics->regmap, in aw86927_ram_init()
603 err = regmap_write(haptics->regmap, in aw86927_ram_init()
608 err = regmap_write(haptics->regmap, in aw86927_ram_init()
614 err = regmap_write(haptics->regmap, in aw86927_ram_init()
619 err = regmap_write(haptics->regmap, in aw86927_ram_init()
625 err = regmap_noinc_write(haptics->regmap, AW86927_RAMDATA_REG, in aw86927_ram_init()
631 err = regmap_noinc_write(haptics->regmap, AW86927_RAMDATA_REG, in aw86927_ram_init()
636 err = regmap_update_bits(haptics->regmap, in aw86927_ram_init()
644 err = regmap_update_bits(haptics->regmap, in aw86927_ram_init()
654 err = regmap_update_bits(haptics->regmap, in aw86927_ram_init()
663 err = regmap_update_bits(haptics->regmap, in aw86927_ram_init()
676 struct aw86927_data *haptics = data; in aw86927_irq() local
677 struct device *dev = &haptics->client->dev; in aw86927_irq()
681 err = regmap_read(haptics->regmap, AW86927_SYSINT_REG, &reg_val); in aw86927_irq()
708 static int aw86927_detect(struct aw86927_data *haptics) in aw86927_detect() argument
714 err = regmap_bulk_read(haptics->regmap, AW86927_CHIPIDH_REG, &read_buf, 2); in aw86927_detect()
716 return dev_err_probe(haptics->dev, err, "Failed to read CHIPID registers\n"); in aw86927_detect()
721 dev_err(haptics->dev, "Unexpected CHIPID value 0x%x\n", chip_id); in aw86927_detect()
730 struct aw86927_data *haptics; in aw86927_probe() local
733 haptics = devm_kzalloc(&client->dev, sizeof(struct aw86927_data), GFP_KERNEL); in aw86927_probe()
734 if (!haptics) in aw86927_probe()
737 haptics->dev = &client->dev; in aw86927_probe()
738 haptics->client = client; in aw86927_probe()
740 i2c_set_clientdata(client, haptics); in aw86927_probe()
742 haptics->regmap = devm_regmap_init_i2c(client, &aw86927_regmap_config); in aw86927_probe()
743 if (IS_ERR(haptics->regmap)) in aw86927_probe()
744 return dev_err_probe(haptics->dev, PTR_ERR(haptics->regmap), in aw86927_probe()
747 haptics->input_dev = devm_input_allocate_device(haptics->dev); in aw86927_probe()
748 if (!haptics->input_dev) in aw86927_probe()
751 haptics->reset_gpio = devm_gpiod_get(haptics->dev, "reset", GPIOD_OUT_HIGH); in aw86927_probe()
752 if (IS_ERR(haptics->reset_gpio)) in aw86927_probe()
753 return dev_err_probe(haptics->dev, PTR_ERR(haptics->reset_gpio), in aw86927_probe()
757 aw86927_hw_reset(haptics); in aw86927_probe()
760 err = regmap_write(haptics->regmap, AW86927_RSTCFG_REG, AW86927_RSTCFG_SOFTRST); in aw86927_probe()
762 return dev_err_probe(haptics->dev, err, "Failed Software reset\n"); in aw86927_probe()
767 err = aw86927_detect(haptics); in aw86927_probe()
769 return dev_err_probe(haptics->dev, err, "Failed to find chip\n"); in aw86927_probe()
772 err = regmap_write(haptics->regmap, AW86927_SYSCTRL4_REG, in aw86927_probe()
778 return dev_err_probe(haptics->dev, err, "Failed to configure interrupt modes\n"); in aw86927_probe()
780 err = regmap_write(haptics->regmap, AW86927_SYSINTM_REG, in aw86927_probe()
786 return dev_err_probe(haptics->dev, err, "Failed to configure interrupt masks\n"); in aw86927_probe()
788 err = devm_request_threaded_irq(haptics->dev, client->irq, NULL, in aw86927_probe()
789 aw86927_irq, IRQF_ONESHOT, NULL, haptics); in aw86927_probe()
791 return dev_err_probe(haptics->dev, err, "Failed to request threaded irq\n"); in aw86927_probe()
793 INIT_WORK(&haptics->play_work, aw86927_haptics_play_work); in aw86927_probe()
795 haptics->input_dev->name = "aw86927-haptics"; in aw86927_probe()
796 haptics->input_dev->close = aw86927_close; in aw86927_probe()
798 input_set_drvdata(haptics->input_dev, haptics); in aw86927_probe()
799 input_set_capability(haptics->input_dev, EV_FF, FF_RUMBLE); in aw86927_probe()
801 err = input_ff_create_memless(haptics->input_dev, NULL, aw86927_haptics_play); in aw86927_probe()
803 return dev_err_probe(haptics->dev, err, "Failed to create FF dev\n"); in aw86927_probe()
806 err = aw86927_play_mode(haptics, AW86927_STANDBY_MODE); in aw86927_probe()
808 return dev_err_probe(haptics->dev, err, in aw86927_probe()
811 err = aw86927_haptic_init(haptics); in aw86927_probe()
813 return dev_err_probe(haptics->dev, err, "Haptic init failed\n"); in aw86927_probe()
816 err = aw86927_ram_init(haptics); in aw86927_probe()
818 return dev_err_probe(haptics->dev, err, "Failed to init aw86927 sram\n"); in aw86927_probe()
820 err = input_register_device(haptics->input_dev); in aw86927_probe()
822 return dev_err_probe(haptics->dev, err, "Failed to register input device\n"); in aw86927_probe()