forked from mirrors/linux
		
	Input: elants_i2c - use DMA safe i2c when possible
To avoid bounce buffer when an i2c controller decides to use DMA for a transaction, let's make out buffer that we use for reads DMA-safe and let the master know that DMAing into it is safe. Signed-off-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
		
							parent
							
								
									dde2744321
								
							
						
					
					
						commit
						00f73f9752
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -147,10 +147,11 @@ struct elants_data {
 | 
			
		|||
	u8 cmd_resp[HEADER_SIZE];
 | 
			
		||||
	struct completion cmd_done;
 | 
			
		||||
 | 
			
		||||
	u8 buf[MAX_PACKET_SIZE];
 | 
			
		||||
 | 
			
		||||
	bool wake_irq_enabled;
 | 
			
		||||
	bool keep_power_in_suspend;
 | 
			
		||||
 | 
			
		||||
	/* Must be last to be used for DMA operations */
 | 
			
		||||
	u8 buf[MAX_PACKET_SIZE] ____cacheline_aligned;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int elants_i2c_send(struct i2c_client *client,
 | 
			
		||||
| 
						 | 
				
			
			@ -863,7 +864,7 @@ static irqreturn_t elants_i2c_irq(int irq, void *_dev)
 | 
			
		|||
	int i;
 | 
			
		||||
	int len;
 | 
			
		||||
 | 
			
		||||
	len = i2c_master_recv(client, ts->buf, sizeof(ts->buf));
 | 
			
		||||
	len = i2c_master_recv_dmasafe(client, ts->buf, sizeof(ts->buf));
 | 
			
		||||
	if (len < 0) {
 | 
			
		||||
		dev_err(&client->dev, "%s: failed to read data: %d\n",
 | 
			
		||||
			__func__, len);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue