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
@ -147,10 +147,11 @@ struct elants_data {
|
|||||||
u8 cmd_resp[HEADER_SIZE];
|
u8 cmd_resp[HEADER_SIZE];
|
||||||
struct completion cmd_done;
|
struct completion cmd_done;
|
||||||
|
|
||||||
u8 buf[MAX_PACKET_SIZE];
|
|
||||||
|
|
||||||
bool wake_irq_enabled;
|
bool wake_irq_enabled;
|
||||||
bool keep_power_in_suspend;
|
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,
|
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 i;
|
||||||
int len;
|
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) {
|
if (len < 0) {
|
||||||
dev_err(&client->dev, "%s: failed to read data: %d\n",
|
dev_err(&client->dev, "%s: failed to read data: %d\n",
|
||||||
__func__, len);
|
__func__, len);
|
||||||
|
Loading…
Reference in New Issue
Block a user