summaryrefslogtreecommitdiff
path: root/goodix_brl_spi.c
diff options
context:
space:
mode:
authorWendly Li <wendlyli@google.com>2022-01-17 17:31:14 +0000
committerWendly Li <wendlyli@google.com>2022-05-24 13:08:47 +0000
commit2066943eca0910f544389120ff8c4e503f2ccbc6 (patch)
tree0a1f3837bd98a945fa08a7b4fa906a893e62b2aa /goodix_brl_spi.c
parent4d5d4a97a95d7958ba0060212beadd3bb7adffb5 (diff)
downloadgoodix_touch-2066943eca0910f544389120ff8c4e503f2ccbc6.tar.gz
goodix: Enable DMA
Bug: 214118837 Test: Check DMA is enabled Change-Id: I3d02e9af8700914fa5eda6875a790cdb30510025 Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_brl_spi.c')
-rw-r--r--goodix_brl_spi.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/goodix_brl_spi.c b/goodix_brl_spi.c
index 1356e52..09fc9aa 100644
--- a/goodix_brl_spi.c
+++ b/goodix_brl_spi.c
@@ -121,6 +121,10 @@ static int goodix_spi_read(struct device *dev, unsigned int addr,
int ret = 0;
int buf_len = SPI_READ_PREFIX_LEN - 1 + len;
+ if (buf_len >= 64) {
+ buf_len = ALIGN(buf_len, 4);
+ }
+
if (buf_len <= SPI_PREALLOC_RX_BUF_SIZE &&
buf_len <= SPI_PREALLOC_TX_BUF_SIZE) {
rx_buf = goodix_spi_bus.rx_buf;
@@ -158,6 +162,7 @@ static int goodix_spi_read(struct device *dev, unsigned int addr,
xfers.rx_buf = rx_buf;
xfers.len = buf_len;
xfers.cs_change = 0;
+ xfers.bits_per_word = buf_len >= 64 ? 32 : 8;
spi_message_add_tail(&xfers, &spi_msg);
ret = spi_sync(spi, &spi_msg);
if (ret < 0) {
@@ -193,6 +198,10 @@ static int goodix_spi_write(struct device *dev, unsigned int addr,
int ret = 0;
int buf_len = SPI_WRITE_PREFIX_LEN + len;
+ if (buf_len >= 64) {
+ buf_len = ALIGN(buf_len, 4);
+ }
+
if (buf_len <= SPI_PREALLOC_TX_BUF_SIZE) {
tx_buf = goodix_spi_bus.tx_buf;
} else {
@@ -215,6 +224,7 @@ static int goodix_spi_write(struct device *dev, unsigned int addr,
xfers.tx_buf = tx_buf;
xfers.len = buf_len;
xfers.cs_change = 0;
+ xfers.bits_per_word = buf_len >= 64 ? 32 : 8;
spi_message_add_tail(&xfers, &spi_msg);
ret = spi_sync(spi, &spi_msg);
if (ret < 0)