Skip to content

Commit

Permalink
spi: spi-rspi: fix build error for the latest shdma driver
Browse files Browse the repository at this point in the history
Because the latest shdma driver changed, it caused build error in
the spi-rspi driver. This patch fixed the build error.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Shimoda, Yoshihiro authored and Mark Brown committed Oct 17, 2012
1 parent ddffeb8 commit 0243c53
Showing 1 changed file with 34 additions and 22 deletions.
56 changes: 34 additions & 22 deletions drivers/spi/spi-rspi.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,6 @@ struct rspi_data {
unsigned char spsr;

/* for dmaengine */
struct sh_dmae_slave dma_tx;
struct sh_dmae_slave dma_rx;
struct dma_chan *chan_tx;
struct dma_chan *chan_rx;
int irq;
Expand Down Expand Up @@ -663,42 +661,52 @@ static irqreturn_t rspi_irq(int irq, void *_sr)
return ret;
}

static bool rspi_filter(struct dma_chan *chan, void *filter_param)
{
chan->private = filter_param;
return true;
}

static void __devinit rspi_request_dma(struct rspi_data *rspi,
struct platform_device *pdev)
static int __devinit rspi_request_dma(struct rspi_data *rspi,
struct platform_device *pdev)
{
struct rspi_plat_data *rspi_pd = pdev->dev.platform_data;
dma_cap_mask_t mask;
struct dma_slave_config cfg;
int ret;

if (!rspi_pd)
return;
return 0; /* The driver assumes no error. */

rspi->dma_width_16bit = rspi_pd->dma_width_16bit;

/* If the module receives data by DMAC, it also needs TX DMAC */
if (rspi_pd->dma_rx_id && rspi_pd->dma_tx_id) {
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
rspi->dma_rx.slave_id = rspi_pd->dma_rx_id;
rspi->chan_rx = dma_request_channel(mask, rspi_filter,
&rspi->dma_rx);
if (rspi->chan_rx)
dev_info(&pdev->dev, "Use DMA when rx.\n");
rspi->chan_rx = dma_request_channel(mask, shdma_chan_filter,
(void *)rspi_pd->dma_rx_id);
if (rspi->chan_rx) {
cfg.slave_id = rspi_pd->dma_rx_id;
cfg.direction = DMA_DEV_TO_MEM;
ret = dmaengine_slave_config(rspi->chan_rx, &cfg);
if (!ret)
dev_info(&pdev->dev, "Use DMA when rx.\n");
else
return ret;
}
}
if (rspi_pd->dma_tx_id) {
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
rspi->dma_tx.slave_id = rspi_pd->dma_tx_id;
rspi->chan_tx = dma_request_channel(mask, rspi_filter,
&rspi->dma_tx);
if (rspi->chan_tx)
dev_info(&pdev->dev, "Use DMA when tx\n");
rspi->chan_tx = dma_request_channel(mask, shdma_chan_filter,
(void *)rspi_pd->dma_tx_id);
if (rspi->chan_tx) {
cfg.slave_id = rspi_pd->dma_tx_id;
cfg.direction = DMA_MEM_TO_DEV;
ret = dmaengine_slave_config(rspi->chan_tx, &cfg);
if (!ret)
dev_info(&pdev->dev, "Use DMA when tx\n");
else
return ret;
}
}

return 0;
}

static void __devexit rspi_release_dma(struct rspi_data *rspi)
Expand Down Expand Up @@ -788,7 +796,11 @@ static int __devinit rspi_probe(struct platform_device *pdev)
}

rspi->irq = irq;
rspi_request_dma(rspi, pdev);
ret = rspi_request_dma(rspi, pdev);
if (ret < 0) {
dev_err(&pdev->dev, "rspi_request_dma failed.\n");
goto error4;
}

ret = spi_register_master(master);
if (ret < 0) {
Expand Down

0 comments on commit 0243c53

Please sign in to comment.