mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
Merge "input: qcom-hv-haptics: use OL_TLRA if getting CL_TLRA failed"
This commit is contained in:
commit
70d4bf5f0c
1 changed files with 15 additions and 11 deletions
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/input.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/nvmem-consumer.h>
|
||||
#include <linux/of.h>
|
||||
|
|
@ -2196,11 +2197,14 @@ static int haptics_load_custom_effect(struct haptics_chip *chip,
|
|||
* Before allocating samples buffer, free the old sample
|
||||
* buffer first if it's not been freed.
|
||||
*/
|
||||
kfree(fifo->samples);
|
||||
kvfree(fifo->samples);
|
||||
fifo->samples = kcalloc(custom_data.length, sizeof(u8), GFP_KERNEL);
|
||||
if (!fifo->samples) {
|
||||
rc = -ENOMEM;
|
||||
goto unlock;
|
||||
fifo->samples = vmalloc(custom_data.length);
|
||||
if (!fifo->samples) {
|
||||
rc = -ENOMEM;
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
|
||||
if (copy_from_user(fifo->samples,
|
||||
|
|
@ -2245,7 +2249,7 @@ static int haptics_load_custom_effect(struct haptics_chip *chip,
|
|||
mutex_unlock(&chip->play.lock);
|
||||
return 0;
|
||||
cleanup:
|
||||
kfree(fifo->samples);
|
||||
kvfree(fifo->samples);
|
||||
fifo->samples = NULL;
|
||||
unlock:
|
||||
mutex_unlock(&chip->play.lock);
|
||||
|
|
@ -2438,7 +2442,7 @@ static int haptics_stop_fifo_play(struct haptics_chip *chip)
|
|||
return rc;
|
||||
|
||||
haptics_fifo_empty_irq_config(chip, false);
|
||||
kfree(chip->custom_effect->fifo->samples);
|
||||
kvfree(chip->custom_effect->fifo->samples);
|
||||
chip->custom_effect->fifo->samples = NULL;
|
||||
|
||||
atomic_set(&chip->play.fifo_status.is_busy, 0);
|
||||
|
|
@ -2717,15 +2721,15 @@ static int haptics_hw_init(struct haptics_chip *chip)
|
|||
return rc;
|
||||
|
||||
/* get calibrated close loop period */
|
||||
t_lra_us = chip->config.t_lra_us;
|
||||
rc = haptics_get_closeloop_lra_period(chip, true);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
if (!rc && chip->config.cl_t_lra_us != 0)
|
||||
t_lra_us = chip->config.cl_t_lra_us;
|
||||
else
|
||||
dev_warn(chip->dev, "get closeloop LRA period failed, rc=%d\n",
|
||||
rc);
|
||||
|
||||
/* Config T_LRA */
|
||||
t_lra_us = chip->config.t_lra_us;
|
||||
if (chip->config.cl_t_lra_us != 0)
|
||||
t_lra_us = chip->config.cl_t_lra_us;
|
||||
|
||||
rc = haptics_config_openloop_lra_period(chip, t_lra_us);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in a new issue