diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2016-09-07 16:54:00 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-09-12 15:03:49 -0400 |
commit | 96361fafbbfc8a07b4c7ec09d96d742ef68bfbad (patch) | |
tree | 618a6b7197fc4b0c44f66161fc8ca4a9387a5bfa | |
parent | d3152cf1c8cf3f75d8eb82ae399ea4b35a0df8d4 (diff) |
spi: fsl-espi: centralize populating struct spi_transfer
Better structure the code by population all elements of struct
spi_transfer in one place.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/spi/spi-fsl-espi.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c index 2bfaff64beb8..7fc9a2c66396 100644 --- a/drivers/spi/spi-fsl-espi.c +++ b/drivers/spi/spi-fsl-espi.c | |||
@@ -272,17 +272,8 @@ static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) | |||
272 | static int fsl_espi_do_trans(struct spi_message *m, struct spi_transfer *trans) | 272 | static int fsl_espi_do_trans(struct spi_message *m, struct spi_transfer *trans) |
273 | { | 273 | { |
274 | struct spi_device *spi = m->spi; | 274 | struct spi_device *spi = m->spi; |
275 | struct spi_transfer *t, *first; | ||
276 | int ret = 0; | 275 | int ret = 0; |
277 | 276 | ||
278 | first = list_first_entry(&m->transfers, struct spi_transfer, | ||
279 | transfer_list); | ||
280 | list_for_each_entry(t, &m->transfers, transfer_list) { | ||
281 | trans->speed_hz = t->speed_hz; | ||
282 | trans->bits_per_word = t->bits_per_word; | ||
283 | trans->delay_usecs = max(first->delay_usecs, t->delay_usecs); | ||
284 | } | ||
285 | |||
286 | fsl_espi_setup_transfer(spi, trans); | 277 | fsl_espi_setup_transfer(spi, trans); |
287 | 278 | ||
288 | if (trans->len) | 279 | if (trans->len) |
@@ -305,8 +296,6 @@ static int fsl_espi_trans(struct spi_message *m, struct spi_transfer *trans, | |||
305 | 296 | ||
306 | tx_only = fsl_espi_copy_to_buf(m, mspi); | 297 | tx_only = fsl_espi_copy_to_buf(m, mspi); |
307 | 298 | ||
308 | trans->tx_buf = mspi->local_buf; | ||
309 | trans->rx_buf = mspi->local_buf; | ||
310 | ret = fsl_espi_do_trans(m, trans); | 299 | ret = fsl_espi_do_trans(m, trans); |
311 | 300 | ||
312 | /* If there is at least one RX byte then copy it to rx_buff */ | 301 | /* If there is at least one RX byte then copy it to rx_buff */ |
@@ -319,8 +308,9 @@ static int fsl_espi_trans(struct spi_message *m, struct spi_transfer *trans, | |||
319 | static int fsl_espi_do_one_msg(struct spi_master *master, | 308 | static int fsl_espi_do_one_msg(struct spi_master *master, |
320 | struct spi_message *m) | 309 | struct spi_message *m) |
321 | { | 310 | { |
311 | struct mpc8xxx_spi *mspi = spi_master_get_devdata(m->spi->master); | ||
322 | u8 *rx_buf = NULL; | 312 | u8 *rx_buf = NULL; |
323 | unsigned int xfer_len = 0; | 313 | unsigned int delay_usecs = 0, xfer_len = 0; |
324 | struct spi_transfer *t, trans = {}; | 314 | struct spi_transfer *t, trans = {}; |
325 | int ret; | 315 | int ret; |
326 | 316 | ||
@@ -333,9 +323,19 @@ static int fsl_espi_do_one_msg(struct spi_master *master, | |||
333 | rx_buf = t->rx_buf; | 323 | rx_buf = t->rx_buf; |
334 | if ((t->tx_buf) || (t->rx_buf)) | 324 | if ((t->tx_buf) || (t->rx_buf)) |
335 | xfer_len += t->len; | 325 | xfer_len += t->len; |
326 | if (t->delay_usecs > delay_usecs) | ||
327 | delay_usecs = t->delay_usecs; | ||
336 | } | 328 | } |
337 | 329 | ||
330 | t = list_first_entry(&m->transfers, struct spi_transfer, | ||
331 | transfer_list); | ||
332 | |||
338 | trans.len = xfer_len; | 333 | trans.len = xfer_len; |
334 | trans.speed_hz = t->speed_hz; | ||
335 | trans.bits_per_word = t->bits_per_word; | ||
336 | trans.delay_usecs = delay_usecs; | ||
337 | trans.tx_buf = mspi->local_buf; | ||
338 | trans.rx_buf = mspi->local_buf; | ||
339 | 339 | ||
340 | ret = fsl_espi_trans(m, &trans, rx_buf); | 340 | ret = fsl_espi_trans(m, &trans, rx_buf); |
341 | 341 | ||