Merge "input: qcom-hv-haptics: use OL_TLRA if getting CL_TLRA failed"

This commit is contained in:
qctecmdr 2021-11-09 04:04:06 -08:00 • committed by Gerrit - the friendly Code Review server
commit 70d4bf5f0c

View file

@ -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;