Merge "Input: stm: optimize the laser sensor driver"

This commit is contained in:
Linux Build Service Account 2017-04-05 04:05:36 -07:00 committed by Gerrit - the friendly Code Review server
commit 078448a790
3 changed files with 21 additions and 6 deletions

View file

@ -131,6 +131,7 @@ struct stmvl53l0_data {
struct miscdevice miscdev;
int irq;
int irq_gpio;
unsigned int reset;
/* control flag from HAL */

View file

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

View file

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