Input: cyttsp - add missing handshake
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>
This commit is contained in:
		
					parent
					
						
							
								d2983cdb48
							
						
					
				
			
			
				commit
				
					
						fbd5e77e65
					
				
			
		
					 1 changed files with 20 additions and 6 deletions
				
			
		| 
						 | 
					@ -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);
 | 
						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)
 | 
					static int cyttsp_load_bl_regs(struct cyttsp *ts)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	memset(&ts->bl_data, 0, sizeof(ts->bl_data));
 | 
						memset(&ts->bl_data, 0, sizeof(ts->bl_data));
 | 
				
			||||||
| 
						 | 
					@ -167,6 +176,10 @@ static int cyttsp_set_operational_mode(struct cyttsp *ts)
 | 
				
			||||||
	if (error)
 | 
						if (error)
 | 
				
			||||||
		return error;
 | 
							return error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						error = cyttsp_handshake(ts);
 | 
				
			||||||
 | 
						if (error)
 | 
				
			||||||
 | 
							return error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ts->xy_data.act_dist == CY_ACT_DIST_DFLT ? -EIO : 0;
 | 
						return ts->xy_data.act_dist == CY_ACT_DIST_DFLT ? -EIO : 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,6 +201,10 @@ static int cyttsp_set_sysinfo_mode(struct cyttsp *ts)
 | 
				
			||||||
	if (error)
 | 
						if (error)
 | 
				
			||||||
		return error;
 | 
							return error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						error = cyttsp_handshake(ts);
 | 
				
			||||||
 | 
						if (error)
 | 
				
			||||||
 | 
							return error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!ts->sysinfo_data.tts_verh && !ts->sysinfo_data.tts_verl)
 | 
						if (!ts->sysinfo_data.tts_verh && !ts->sysinfo_data.tts_verl)
 | 
				
			||||||
		return -EIO;
 | 
							return -EIO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -344,12 +361,9 @@ static irqreturn_t cyttsp_irq(int irq, void *handle)
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* provide flow control handshake */
 | 
						/* provide flow control handshake */
 | 
				
			||||||
	if (ts->pdata->use_hndshk) {
 | 
						error = cyttsp_handshake(ts);
 | 
				
			||||||
		error = ttsp_send_command(ts,
 | 
					 | 
				
			||||||
				ts->xy_data.hst_mode ^ CY_HNDSHK_BIT);
 | 
					 | 
				
			||||||
	if (error)
 | 
						if (error)
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unlikely(ts->state == CY_IDLE_STATE))
 | 
						if (unlikely(ts->state == CY_IDLE_STATE))
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue