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;
|
struct miscdevice miscdev;
|
||||||
|
|
||||||
int irq;
|
int irq;
|
||||||
|
int irq_gpio;
|
||||||
unsigned int reset;
|
unsigned int reset;
|
||||||
|
|
||||||
/* control flag from HAL */
|
/* control flag from HAL */
|
||||||
|
|
|
@ -248,6 +248,7 @@ static int stmvl53l0_cci_init(struct cci_data *data)
|
||||||
cci_client->retries = 3;
|
cci_client->retries = 3;
|
||||||
cci_client->id_map = 0;
|
cci_client->id_map = 0;
|
||||||
cci_client->cci_i2c_master = data->cci_master;
|
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);
|
rc = data->client->i2c_func_tbl->i2c_util(data->client, MSM_CCI_INIT);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
vl53l0_errmsg("%d: CCI Init failed\n", __LINE__);
|
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);
|
rc = stmvl53l0_get_dt_data(&pdev->dev, cci_object);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
vl53l0_errmsg("%d, failed rc %d\n", __LINE__, rc);
|
vl53l0_errmsg("%d, failed rc %d\n", __LINE__, rc);
|
||||||
|
kfree(vl53l0_data->client_object);
|
||||||
|
kfree(vl53l0_data);
|
||||||
return rc;
|
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;
|
cci_object->subdev_id = pdev->id;
|
||||||
|
|
||||||
/* Set device type as platform device */
|
/* 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;
|
data->power_up = 1;
|
||||||
|
usleep_range(3000, 3500);
|
||||||
*preset_flag = 1;
|
*preset_flag = 1;
|
||||||
vl53l0_dbgmsg("End\n");
|
vl53l0_dbgmsg("End\n");
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
#include "vl53l0_api.h"
|
#include "vl53l0_api.h"
|
||||||
#include "vl53l010_api.h"
|
#include "vl53l010_api.h"
|
||||||
|
|
||||||
/*#define USE_INT */
|
#define USE_INT
|
||||||
#define IRQ_NUM 59
|
|
||||||
/* #define DEBUG_TIME_LOG */
|
/* #define DEBUG_TIME_LOG */
|
||||||
#ifdef DEBUG_TIME_LOG
|
#ifdef DEBUG_TIME_LOG
|
||||||
struct timeval start_tv, stop_tv;
|
struct timeval start_tv, stop_tv;
|
||||||
|
@ -2668,12 +2668,12 @@ int stmvl53l0_setup(struct stmvl53l0_data *data)
|
||||||
|
|
||||||
#ifdef USE_INT
|
#ifdef USE_INT
|
||||||
/* init interrupt */
|
/* init interrupt */
|
||||||
gpio_request(IRQ_NUM, "vl53l0_gpio_int");
|
gpio_request(data->irq_gpio, "vl53l0_gpio_int");
|
||||||
gpio_direction_input(IRQ_NUM);
|
gpio_direction_input(data->irq_gpio);
|
||||||
irq = gpio_to_irq(IRQ_NUM);
|
irq = gpio_to_irq(data->irq_gpio);
|
||||||
if (irq < 0) {
|
if (irq < 0) {
|
||||||
vl53l0_errmsg("filed to map GPIO: %d to interrupt:%d\n",
|
vl53l0_errmsg("filed to map GPIO: %d to interrupt:%d\n",
|
||||||
IRQ_NUM, irq);
|
data->irq_gpio, irq);
|
||||||
} else {
|
} else {
|
||||||
vl53l0_dbgmsg("register_irq:%d\n", irq);
|
vl53l0_dbgmsg("register_irq:%d\n", irq);
|
||||||
/* IRQF_TRIGGER_FALLING- poliarity:0 IRQF_TRIGGER_RISNG -
|
/* IRQF_TRIGGER_FALLING- poliarity:0 IRQF_TRIGGER_RISNG -
|
||||||
|
|
Loading…
Add table
Reference in a new issue