Skip to content

Commit

Permalink
Input: cyttsp - add missing handshake
Browse files Browse the repository at this point in the history
For the devices that has blocking with timeout communication, these
extra handshakes will prevent one timeout delay in startup sequence

Tested-by: Ferruh Yigit <fery@cypress.com> on TMA300-DVK
Signed-off-by: Ferruh Yigit <fery@cypress.com>
Acked-by: Javier Martinez Canillas <javier@dowhile0.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Ferruh Yigit authored and Dmitry Torokhov committed Jun 6, 2013
1 parent d2983cd commit fbd5e77
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions drivers/input/touchscreen/cyttsp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,15 @@ static int ttsp_send_command(struct cyttsp *ts, u8 cmd)
return ttsp_write_block_data(ts, CY_REG_BASE, sizeof(cmd), &cmd);
}

static int cyttsp_handshake(struct cyttsp *ts)
{
if (ts->pdata->use_hndshk)
return ttsp_send_command(ts,
ts->xy_data.hst_mode ^ CY_HNDSHK_BIT);

return 0;
}

static int cyttsp_load_bl_regs(struct cyttsp *ts)
{
memset(&ts->bl_data, 0, sizeof(ts->bl_data));
Expand Down Expand Up @@ -167,6 +176,10 @@ static int cyttsp_set_operational_mode(struct cyttsp *ts)
if (error)
return error;

error = cyttsp_handshake(ts);
if (error)
return error;

return ts->xy_data.act_dist == CY_ACT_DIST_DFLT ? -EIO : 0;
}

Expand All @@ -188,6 +201,10 @@ static int cyttsp_set_sysinfo_mode(struct cyttsp *ts)
if (error)
return error;

error = cyttsp_handshake(ts);
if (error)
return error;

if (!ts->sysinfo_data.tts_verh && !ts->sysinfo_data.tts_verl)
return -EIO;

Expand Down Expand Up @@ -344,12 +361,9 @@ static irqreturn_t cyttsp_irq(int irq, void *handle)
goto out;

/* provide flow control handshake */
if (ts->pdata->use_hndshk) {
error = ttsp_send_command(ts,
ts->xy_data.hst_mode ^ CY_HNDSHK_BIT);
if (error)
goto out;
}
error = cyttsp_handshake(ts);
if (error)
goto out;

if (unlikely(ts->state == CY_IDLE_STATE))
goto out;
Expand Down

0 comments on commit fbd5e77

Please sign in to comment.