Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00f73f97 authored by Stephen Boyd's avatar Stephen Boyd Committed by Dmitry Torokhov
Browse files

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: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent dde27443
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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);