Input: stm: optimize the laser sensor driver
Enable laser sensor IRQ mode and change I2C speed 400K to improve laser performance and quality. Change-Id: I2b2b8ca964e6b031ceacff674104f9ae75f7ee0f Signed-off-by: Wei Ding <weiding@codeaurora.org>
This commit is contained in:
parent
687a4eb82b
commit
16b008e215
3 changed files with 21 additions and 6 deletions
|
@ -131,6 +131,7 @@ struct stmvl53l0_data {
|
|||
struct miscdevice miscdev;
|
||||
|
||||
int irq;
|
||||
int irq_gpio;
|
||||
unsigned int reset;
|
||||
|
||||
/* control flag from HAL */
|
||||
|
|
|
@ -248,6 +248,7 @@ static int stmvl53l0_cci_init(struct cci_data *data)
|
|||
cci_client->retries = 3;
|
||||
cci_client->id_map = 0;
|
||||
cci_client->cci_i2c_master = data->cci_master;
|
||||
cci_client->i2c_freq_mode = I2C_FAST_MODE;
|
||||
rc = data->client->i2c_func_tbl->i2c_util(data->client, MSM_CCI_INIT);
|
||||
if (rc < 0) {
|
||||
vl53l0_errmsg("%d: CCI Init failed\n", __LINE__);
|
||||
|
@ -295,8 +296,20 @@ static int32_t stmvl53l0_platform_probe(struct platform_device *pdev)
|
|||
rc = stmvl53l0_get_dt_data(&pdev->dev, cci_object);
|
||||
if (rc < 0) {
|
||||
vl53l0_errmsg("%d, failed rc %d\n", __LINE__, rc);
|
||||
kfree(vl53l0_data->client_object);
|
||||
kfree(vl53l0_data);
|
||||
return rc;
|
||||
}
|
||||
vl53l0_data->irq_gpio = of_get_named_gpio_flags(pdev->dev.of_node,
|
||||
"stm,irq-gpio", 0, NULL);
|
||||
|
||||
if (!gpio_is_valid(vl53l0_data->irq_gpio)) {
|
||||
vl53l0_errmsg("%d failed get irq gpio", __LINE__);
|
||||
kfree(vl53l0_data->client_object);
|
||||
kfree(vl53l0_data);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
cci_object->subdev_id = pdev->id;
|
||||
|
||||
/* Set device type as platform device */
|
||||
|
@ -418,6 +431,7 @@ int stmvl53l0_power_up_cci(void *cci_object, unsigned int *preset_flag)
|
|||
}
|
||||
}
|
||||
data->power_up = 1;
|
||||
usleep_range(3000, 3500);
|
||||
*preset_flag = 1;
|
||||
vl53l0_dbgmsg("End\n");
|
||||
|
||||
|
|
|
@ -38,8 +38,8 @@
|
|||
#include "vl53l0_api.h"
|
||||
#include "vl53l010_api.h"
|
||||
|
||||
/*#define USE_INT */
|
||||
#define IRQ_NUM 59
|
||||
#define USE_INT
|
||||
|
||||
/* #define DEBUG_TIME_LOG */
|
||||
#ifdef DEBUG_TIME_LOG
|
||||
struct timeval start_tv, stop_tv;
|
||||
|
@ -2668,12 +2668,12 @@ int stmvl53l0_setup(struct stmvl53l0_data *data)
|
|||
|
||||
#ifdef USE_INT
|
||||
/* init interrupt */
|
||||
gpio_request(IRQ_NUM, "vl53l0_gpio_int");
|
||||
gpio_direction_input(IRQ_NUM);
|
||||
irq = gpio_to_irq(IRQ_NUM);
|
||||
gpio_request(data->irq_gpio, "vl53l0_gpio_int");
|
||||
gpio_direction_input(data->irq_gpio);
|
||||
irq = gpio_to_irq(data->irq_gpio);
|
||||
if (irq < 0) {
|
||||
vl53l0_errmsg("filed to map GPIO: %d to interrupt:%d\n",
|
||||
IRQ_NUM, irq);
|
||||
data->irq_gpio, irq);
|
||||
} else {
|
||||
vl53l0_dbgmsg("register_irq:%d\n", irq);
|
||||
/* IRQF_TRIGGER_FALLING- poliarity:0 IRQF_TRIGGER_RISNG -
|
||||
|
|
Loading…
Add table
Reference in a new issue