|
@@ -6,7 +6,7 @@
|
|
|
* Daniel Kurtz <djkurtz@chromium.org>
|
|
|
* Benson Leung <bleung@chromium.org>
|
|
|
*
|
|
|
- * Copyright (C) 2011-2012 Cypress Semiconductor, Inc.
|
|
|
+ * Copyright (C) 2011-2014 Cypress Semiconductor, Inc.
|
|
|
* Copyright (C) 2011-2012 Google, Inc.
|
|
|
*
|
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
@@ -421,8 +421,8 @@ static ssize_t cyapa_read_block(struct cyapa *cyapa, u8 cmd_idx, u8 *values)
|
|
|
*/
|
|
|
static int cyapa_get_state(struct cyapa *cyapa)
|
|
|
{
|
|
|
- int ret;
|
|
|
u8 status[BL_STATUS_SIZE];
|
|
|
+ int error;
|
|
|
|
|
|
cyapa->state = CYAPA_STATE_NO_DEVICE;
|
|
|
|
|
@@ -432,18 +432,18 @@ static int cyapa_get_state(struct cyapa *cyapa)
|
|
|
* If the device is in operation mode, this will be the DATA regs.
|
|
|
*
|
|
|
*/
|
|
|
- ret = cyapa_i2c_reg_read_block(cyapa, BL_HEAD_OFFSET, BL_STATUS_SIZE,
|
|
|
- status);
|
|
|
+ error = cyapa_i2c_reg_read_block(cyapa, BL_HEAD_OFFSET, BL_STATUS_SIZE,
|
|
|
+ status);
|
|
|
|
|
|
/*
|
|
|
* On smbus systems in OP mode, the i2c_reg_read will fail with
|
|
|
* -ETIMEDOUT. In this case, try again using the smbus equivalent
|
|
|
* command. This should return a BL_HEAD indicating CYAPA_STATE_OP.
|
|
|
*/
|
|
|
- if (cyapa->smbus && (ret == -ETIMEDOUT || ret == -ENXIO))
|
|
|
- ret = cyapa_read_block(cyapa, CYAPA_CMD_BL_STATUS, status);
|
|
|
+ if (cyapa->smbus && (error == -ETIMEDOUT || error == -ENXIO))
|
|
|
+ error = cyapa_read_block(cyapa, CYAPA_CMD_BL_STATUS, status);
|
|
|
|
|
|
- if (ret != BL_STATUS_SIZE)
|
|
|
+ if (error != BL_STATUS_SIZE)
|
|
|
goto error;
|
|
|
|
|
|
if ((status[REG_OP_STATUS] & OP_STATUS_SRC) == OP_STATUS_SRC) {
|
|
@@ -453,7 +453,7 @@ static int cyapa_get_state(struct cyapa *cyapa)
|
|
|
cyapa->state = CYAPA_STATE_OP;
|
|
|
break;
|
|
|
default:
|
|
|
- ret = -EAGAIN;
|
|
|
+ error = -EAGAIN;
|
|
|
goto error;
|
|
|
}
|
|
|
} else {
|
|
@@ -467,7 +467,7 @@ static int cyapa_get_state(struct cyapa *cyapa)
|
|
|
|
|
|
return 0;
|
|
|
error:
|
|
|
- return (ret < 0) ? ret : -EAGAIN;
|
|
|
+ return (error < 0) ? error : -EAGAIN;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -486,31 +486,31 @@ error:
|
|
|
*/
|
|
|
static int cyapa_poll_state(struct cyapa *cyapa, unsigned int timeout)
|
|
|
{
|
|
|
- int ret;
|
|
|
+ int error;
|
|
|
int tries = timeout / 100;
|
|
|
|
|
|
- ret = cyapa_get_state(cyapa);
|
|
|
- while ((ret || cyapa->state >= CYAPA_STATE_BL_BUSY) && tries--) {
|
|
|
+ error = cyapa_get_state(cyapa);
|
|
|
+ while ((error || cyapa->state >= CYAPA_STATE_BL_BUSY) && tries--) {
|
|
|
msleep(100);
|
|
|
- ret = cyapa_get_state(cyapa);
|
|
|
+ error = cyapa_get_state(cyapa);
|
|
|
}
|
|
|
- return (ret == -EAGAIN || ret == -ETIMEDOUT) ? -ETIMEDOUT : ret;
|
|
|
+ return (error == -EAGAIN || error == -ETIMEDOUT) ? -ETIMEDOUT : error;
|
|
|
}
|
|
|
|
|
|
static int cyapa_bl_deactivate(struct cyapa *cyapa)
|
|
|
{
|
|
|
- int ret;
|
|
|
+ int error;
|
|
|
|
|
|
- ret = cyapa_i2c_reg_write_block(cyapa, 0, sizeof(bl_deactivate),
|
|
|
- bl_deactivate);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_i2c_reg_write_block(cyapa, 0, sizeof(bl_deactivate),
|
|
|
+ bl_deactivate);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
|
|
|
/* wait for bootloader to switch to idle state; should take < 100ms */
|
|
|
msleep(100);
|
|
|
- ret = cyapa_poll_state(cyapa, 500);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_poll_state(cyapa, 500);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
if (cyapa->state != CYAPA_STATE_BL_IDLE)
|
|
|
return -EAGAIN;
|
|
|
return 0;
|
|
@@ -531,11 +531,11 @@ static int cyapa_bl_deactivate(struct cyapa *cyapa)
|
|
|
*/
|
|
|
static int cyapa_bl_exit(struct cyapa *cyapa)
|
|
|
{
|
|
|
- int ret;
|
|
|
+ int error;
|
|
|
|
|
|
- ret = cyapa_i2c_reg_write_block(cyapa, 0, sizeof(bl_exit), bl_exit);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_i2c_reg_write_block(cyapa, 0, sizeof(bl_exit), bl_exit);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
|
|
|
/*
|
|
|
* Wait for bootloader to exit, and operation mode to start.
|
|
@@ -547,9 +547,9 @@ static int cyapa_bl_exit(struct cyapa *cyapa)
|
|
|
* updated to new firmware, it must first calibrate its sensors, which
|
|
|
* can take up to an additional 2 seconds.
|
|
|
*/
|
|
|
- ret = cyapa_poll_state(cyapa, 2000);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_poll_state(cyapa, 2000);
|
|
|
+ if (error < 0)
|
|
|
+ return error;
|
|
|
if (cyapa->state != CYAPA_STATE_OP)
|
|
|
return -EAGAIN;
|
|
|
|
|
@@ -639,28 +639,28 @@ static int cyapa_check_is_operational(struct cyapa *cyapa)
|
|
|
{
|
|
|
struct device *dev = &cyapa->client->dev;
|
|
|
static const char unique_str[] = "CYTRA";
|
|
|
- int ret;
|
|
|
+ int error;
|
|
|
|
|
|
- ret = cyapa_poll_state(cyapa, 2000);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_poll_state(cyapa, 2000);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
switch (cyapa->state) {
|
|
|
case CYAPA_STATE_BL_ACTIVE:
|
|
|
- ret = cyapa_bl_deactivate(cyapa);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
+ error = cyapa_bl_deactivate(cyapa);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
|
|
|
/* Fallthrough state */
|
|
|
case CYAPA_STATE_BL_IDLE:
|
|
|
- ret = cyapa_bl_exit(cyapa);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
+ error = cyapa_bl_exit(cyapa);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
|
|
|
/* Fallthrough state */
|
|
|
case CYAPA_STATE_OP:
|
|
|
- ret = cyapa_get_query_data(cyapa);
|
|
|
- if (ret < 0)
|
|
|
- return ret;
|
|
|
+ error = cyapa_get_query_data(cyapa);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
|
|
|
/* only support firmware protocol gen3 */
|
|
|
if (cyapa->gen != CYAPA_GEN3) {
|
|
@@ -790,7 +790,7 @@ static int cyapa_create_input_dev(struct cyapa *cyapa)
|
|
|
|
|
|
input = devm_input_allocate_device(dev);
|
|
|
if (!input) {
|
|
|
- dev_err(dev, "allocate memory for input device failed\n");
|
|
|
+ dev_err(dev, "failed to allocate memory for input device.\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -798,7 +798,7 @@ static int cyapa_create_input_dev(struct cyapa *cyapa)
|
|
|
input->phys = cyapa->phys;
|
|
|
input->id.bustype = BUS_I2C;
|
|
|
input->id.version = 1;
|
|
|
- input->id.product = 0; /* means any product in eventcomm. */
|
|
|
+ input->id.product = 0; /* Means any product in eventcomm. */
|
|
|
input->dev.parent = &cyapa->client->dev;
|
|
|
|
|
|
input->open = cyapa_open;
|
|
@@ -808,7 +808,7 @@ static int cyapa_create_input_dev(struct cyapa *cyapa)
|
|
|
|
|
|
__set_bit(EV_ABS, input->evbit);
|
|
|
|
|
|
- /* finger position */
|
|
|
+ /* Finger position */
|
|
|
input_set_abs_params(input, ABS_MT_POSITION_X, 0, cyapa->max_abs_x, 0,
|
|
|
0);
|
|
|
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cyapa->max_abs_y, 0,
|
|
@@ -830,7 +830,7 @@ static int cyapa_create_input_dev(struct cyapa *cyapa)
|
|
|
if (cyapa->btn_capability == CAPABILITY_LEFT_BTN_MASK)
|
|
|
__set_bit(INPUT_PROP_BUTTONPAD, input->propbit);
|
|
|
|
|
|
- /* handle pointer emulation and unused slots in core */
|
|
|
+ /* Handle pointer emulation and unused slots in core */
|
|
|
error = input_mt_init_slots(input, CYAPA_MAX_MT_SLOTS,
|
|
|
INPUT_MT_POINTER | INPUT_MT_DROP_UNUSED);
|
|
|
if (error) {
|
|
@@ -894,7 +894,7 @@ static int cyapa_probe(struct i2c_client *client,
|
|
|
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
|
|
"cyapa", cyapa);
|
|
|
if (error) {
|
|
|
- dev_err(dev, "IRQ request failed: %d\n, ", error);
|
|
|
+ dev_err(dev, "failed to request threaded irq: %d\n", error);
|
|
|
return error;
|
|
|
}
|
|
|
|