spi: omap2-mcspi: Move bytes per word calculation to the function

Introduce mcspi_bytes_per_word function as replacement for the next code
fragment:

int c = (word_len <= 8)  ? 1 :
	(word_len <= 16) ? 2 :
	/* word_len <= 32 */ 4;

This code used 2 times in current driver code and will be used 2 times in
the next FIFO buffer support patch. Replace it with inline function with clear
name to improve code legibility.

Signed-off-by: Illia Smyrnov <illia.smyrnov@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Illia Smyrnov 2013-06-14 19:12:07 +03:00 committed by Mark Brown
parent 0514dd76ea
commit 56cd5c1578
1 changed files with 13 additions and 6 deletions

View File

@ -186,6 +186,16 @@ static inline void mcspi_write_chconf0(const struct spi_device *spi, u32 val)
mcspi_read_cs_reg(spi, OMAP2_MCSPI_CHCONF0); mcspi_read_cs_reg(spi, OMAP2_MCSPI_CHCONF0);
} }
static inline int mcspi_bytes_per_word(int word_len)
{
if (word_len <= 8)
return 1;
else if (word_len <= 16)
return 2;
else /* word_len <= 32 */
return 4;
}
static void omap2_mcspi_set_dma_req(const struct spi_device *spi, static void omap2_mcspi_set_dma_req(const struct spi_device *spi,
int is_read, int enable) int is_read, int enable)
{ {
@ -432,10 +442,9 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
else /* word_len <= 32 */ else /* word_len <= 32 */
((u32 *)xfer->rx_buf)[elements++] = w; ((u32 *)xfer->rx_buf)[elements++] = w;
} else { } else {
int bytes_per_word = mcspi_bytes_per_word(word_len);
dev_err(&spi->dev, "DMA RX penultimate word empty"); dev_err(&spi->dev, "DMA RX penultimate word empty");
count -= (word_len <= 8) ? 2 : count -= (bytes_per_word << 1);
(word_len <= 16) ? 4 :
/* word_len <= 32 */ 8;
omap2_mcspi_set_enable(spi, 1); omap2_mcspi_set_enable(spi, 1);
return count; return count;
} }
@ -453,9 +462,7 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
((u32 *)xfer->rx_buf)[elements] = w; ((u32 *)xfer->rx_buf)[elements] = w;
} else { } else {
dev_err(&spi->dev, "DMA RX last word empty"); dev_err(&spi->dev, "DMA RX last word empty");
count -= (word_len <= 8) ? 1 : count -= mcspi_bytes_per_word(word_len);
(word_len <= 16) ? 2 :
/* word_len <= 32 */ 4;
} }
omap2_mcspi_set_enable(spi, 1); omap2_mcspi_set_enable(spi, 1);
return count; return count;