From: David Jander Date: Fri, 8 Oct 2010 09:24:01 +0000 (+0200) Subject: spi/imx: Support different fifo sizes X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6ff554e06869e970e6ef2c4d44ea43315917d22c;p=linux-beck.git spi/imx: Support different fifo sizes The i.MX51 ECSPI has a fifo size of 64 entries instead of 8 entries as found on the other cspi bus devices. Cc: Jason Wang Signed-off-by: David Jander Signed-off-by: Sascha Hauer Signed-off-by: Uwe Kleine-König Acked-by: Grant Likely Signed-off-by: Sascha Hauer --- diff --git a/drivers/spi/spi_imx.c b/drivers/spi/spi_imx.c index 6bab2cfd93c1..55a38e2c6c13 100644 --- a/drivers/spi/spi_imx.c +++ b/drivers/spi/spi_imx.c @@ -77,6 +77,7 @@ struct spi_imx_devtype_data { void (*trigger)(struct spi_imx_data *); int (*rx_available)(struct spi_imx_data *); void (*reset)(struct spi_imx_data *); + unsigned int fifosize; }; struct spi_imx_data { @@ -541,6 +542,7 @@ static struct spi_imx_devtype_data spi_imx_devtype_data[] __devinitdata = { .trigger = mx1_trigger, .rx_available = mx1_rx_available, .reset = mx1_reset, + .fifosize = 8, }, #endif #ifdef CONFIG_SPI_IMX_VER_0_0 @@ -550,6 +552,7 @@ static struct spi_imx_devtype_data spi_imx_devtype_data[] __devinitdata = { .trigger = mx27_trigger, .rx_available = mx27_rx_available, .reset = spi_imx0_0_reset, + .fifosize = 8, }, #endif #ifdef CONFIG_SPI_IMX_VER_0_4 @@ -559,6 +562,7 @@ static struct spi_imx_devtype_data spi_imx_devtype_data[] __devinitdata = { .trigger = mx31_trigger, .rx_available = mx31_rx_available, .reset = spi_imx0_4_reset, + .fifosize = 8, }, #endif #ifdef CONFIG_SPI_IMX_VER_0_7 @@ -568,6 +572,7 @@ static struct spi_imx_devtype_data spi_imx_devtype_data[] __devinitdata = { .trigger = mx31_trigger, .rx_available = mx31_rx_available, .reset = spi_imx0_4_reset, + .fifosize = 8, }, #endif #ifdef CONFIG_SPI_IMX_VER_2_3 @@ -577,6 +582,7 @@ static struct spi_imx_devtype_data spi_imx_devtype_data[] __devinitdata = { .trigger = spi_imx2_3_trigger, .rx_available = spi_imx2_3_rx_available, .reset = spi_imx2_3_reset, + .fifosize = 64, }, #endif }; @@ -596,7 +602,7 @@ static void spi_imx_chipselect(struct spi_device *spi, int is_active) static void spi_imx_push(struct spi_imx_data *spi_imx) { - while (spi_imx->txfifo < 8) { + while (spi_imx->txfifo < spi_imx->devtype_data.fifosize) { if (!spi_imx->count) break; spi_imx->tx(spi_imx);