Commit 626a96db authored by Mika Westerberg's avatar Mika Westerberg Committed by Grant Likely

spi/ep93xx: add DMA support

This patch adds DMA support for the EP93xx SPI driver. By default the DMA is
not enabled but it can be enabled by setting ep93xx_spi_info.use_dma to true
in board configuration file.

Note that the SPI driver still uses PIO for small transfers (<= 8 bytes) for
performance reasons.
Signed-off-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
Acked-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 71cebd70
...@@ -88,6 +88,16 @@ static void __init ts72xx_init_machine(void) ...@@ -88,6 +88,16 @@ static void __init ts72xx_init_machine(void)
ARRAY_SIZE(ts72xx_spi_devices)); ARRAY_SIZE(ts72xx_spi_devices));
} }
The driver can use DMA for the transfers also. In this case ts72xx_spi_info
becomes:
static struct ep93xx_spi_info ts72xx_spi_info = {
.num_chipselect = ARRAY_SIZE(ts72xx_spi_devices),
.use_dma = true;
};
Note that CONFIG_EP93XX_DMA should be enabled as well.
Thanks to Thanks to
========= =========
Martin Guy, H. Hartley Sweeten and others who helped me during development of Martin Guy, H. Hartley Sweeten and others who helped me during development of
......
...@@ -488,11 +488,15 @@ static struct resource ep93xx_spi_resources[] = { ...@@ -488,11 +488,15 @@ static struct resource ep93xx_spi_resources[] = {
}, },
}; };
static u64 ep93xx_spi_dma_mask = DMA_BIT_MASK(32);
static struct platform_device ep93xx_spi_device = { static struct platform_device ep93xx_spi_device = {
.name = "ep93xx-spi", .name = "ep93xx-spi",
.id = 0, .id = 0,
.dev = { .dev = {
.platform_data = &ep93xx_spi_master_data, .platform_data = &ep93xx_spi_master_data,
.coherent_dma_mask = DMA_BIT_MASK(32),
.dma_mask = &ep93xx_spi_dma_mask,
}, },
.num_resources = ARRAY_SIZE(ep93xx_spi_resources), .num_resources = ARRAY_SIZE(ep93xx_spi_resources),
.resource = ep93xx_spi_resources, .resource = ep93xx_spi_resources,
......
...@@ -7,9 +7,11 @@ struct spi_device; ...@@ -7,9 +7,11 @@ struct spi_device;
* struct ep93xx_spi_info - EP93xx specific SPI descriptor * struct ep93xx_spi_info - EP93xx specific SPI descriptor
* @num_chipselect: number of chip selects on this board, must be * @num_chipselect: number of chip selects on this board, must be
* at least one * at least one
* @use_dma: use DMA for the transfers
*/ */
struct ep93xx_spi_info { struct ep93xx_spi_info {
int num_chipselect; int num_chipselect;
bool use_dma;
}; };
/** /**
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment