diff options
author | Dominik Sliwa <dominik.sliwa@toradex.com> | 2017-10-03 17:22:39 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2017-10-05 01:11:17 +0200 |
commit | 4213685bf8731c17a1faa6fe75cace0fd337e353 (patch) | |
tree | f32d7a3f1ec827303d06db833c8fea0169bd5a71 /drivers/mfd/apalis-tk1-k20.c | |
parent | 4162e8426c79448239da03cd2ab8b951d2b49e32 (diff) |
mfd: apalis-tk1-k20: support for 0.10 k20 fw
Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Diffstat (limited to 'drivers/mfd/apalis-tk1-k20.c')
-rw-r--r-- | drivers/mfd/apalis-tk1-k20.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/mfd/apalis-tk1-k20.c b/drivers/mfd/apalis-tk1-k20.c index e2d59462530a..2727365b0d0f 100644 --- a/drivers/mfd/apalis-tk1-k20.c +++ b/drivers/mfd/apalis-tk1-k20.c @@ -26,7 +26,8 @@ #include <linux/delay.h> #include "apalis-tk1-k20-ezp.h" - +#define CONFIG_EXPERIMENTAL_K20_HSMODE +#define APALIS_TK1_K20_MAX_MSG 4 static const struct spi_device_id apalis_tk1_k20_device_ids[] = { { .name = "apalis-tk1-k20", @@ -161,16 +162,18 @@ static int apalis_tk1_k20_spi_write(void *context, const void *data, struct device *dev = context; struct spi_device *spi = to_spi_device(dev); uint8_t out_data[APALIS_TK1_K20_MAX_BULK]; + uint8_t in_data[APALIS_TK1_K20_MAX_BULK]; int ret; #ifdef CONFIG_EXPERIMENTAL_K20_HSMODE - struct spi_device *spi = to_spi_device(dev); + struct spi_message m; struct spi_transfer t = { .tx_buf = out_data, - .rx_buf = NULL, + .rx_buf = in_data, .cs_change = 0, - .delay_usecs = 2, + .delay_usecs = 0, }; - struct spi_transfer ts[APALIS_TK1_K20_MAX_BULK / APALIS_TK1_K20_MAX_MSG]; + struct spi_transfer ts[(APALIS_TK1_K20_MAX_BULK / + APALIS_TK1_K20_MAX_MSG) + 1]; int i = 0; #endif @@ -182,11 +185,6 @@ static int apalis_tk1_k20_spi_write(void *context, const void *data, out_data[2] = ((uint8_t *)data)[1]; ret = spi_write(spi, out_data, 3); #ifdef CONFIG_EXPERIMENTAL_K20_HSMODE - } else if (count == 2) { - out_data[0] = APALIS_TK1_K20_BULK_WRITE_INST; - out_data[1] = count - 1; - memcpy(&out_data[2], data, count); - ret = spi_write(spi, out_data, 4); } else if ( (count > 2 ) && (count < APALIS_TK1_K20_MAX_BULK)) { spi_message_init(&m); @@ -204,12 +202,11 @@ static int apalis_tk1_k20_spi_write(void *context, const void *data, ts[i].len = (count - 2 - (4 * i) >= 4) ? 4 : (count - 2 - (4 * i)); ts[i].cs_change = 0; - ts[i].delay_usecs = 2; + ts[i].delay_usecs = 0; spi_message_add_tail(&ts[i], &m); } ret = spi_sync(spi, &m); - } #endif } else { dev_err(dev, "Apalis TK1 K20 MFD Invalid write count = %d\n", |