diff options
| author | Olof Johansson <olof@lixom.net> | 2012-09-20 19:57:38 -0700 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-09-20 19:57:38 -0700 | 
| commit | 32dec75349da4e68b53f099ce3a96469cdc334d6 (patch) | |
| tree | 96aca7914b07697668ec716a3f80fb8c82e7a971 /drivers/spi/spi-tegra.c | |
| parent | 740418ef19fd7def7b9c333435d4ca1dce28cc42 (diff) | |
| parent | 9891e3240543c45176b1298164418b61e8909ed0 (diff) | |
| download | olio-linux-3.10-32dec75349da4e68b53f099ce3a96469cdc334d6.tar.xz olio-linux-3.10-32dec75349da4e68b53f099ce3a96469cdc334d6.zip  | |
Merge tag 'tegra-for-3.7-dmaengine' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra into next/cleanup
ARM: tegra: switch to dmaengine
The Tegra code-base has contained both a legacy DMA and a dmaengine
driver since v3.6-rcX. This series flips Tegra's defconfig to enable
dmaengine rather than the legacy driver, and removes the legacy driver
and all client code.
* tag 'tegra-for-3.7-dmaengine' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra:
  ASoC: tegra: remove support of legacy DMA driver based access
  spi: tegra: remove support of legacy DMA driver based access
  ARM: tegra: apbio: remove support of legacy DMA driver based access
  ARM: tegra: dma: remove legacy APB DMA driver
  ARM: tegra: config: enable dmaengine based APB DMA driver
  + sync to 3.6-rc6
Diffstat (limited to 'drivers/spi/spi-tegra.c')
| -rw-r--r-- | drivers/spi/spi-tegra.c | 55 | 
1 files changed, 1 insertions, 54 deletions
diff --git a/drivers/spi/spi-tegra.c b/drivers/spi/spi-tegra.c index ef52c1c6f5c..488d9b6e9cb 100644 --- a/drivers/spi/spi-tegra.c +++ b/drivers/spi/spi-tegra.c @@ -164,23 +164,15 @@ struct spi_tegra_data {  	 * for the generic case.  	 */  	int			dma_req_len; -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	struct tegra_dma_req	rx_dma_req; -	struct tegra_dma_channel *rx_dma; -#else  	struct dma_chan		*rx_dma;  	struct dma_slave_config	sconfig;  	struct dma_async_tx_descriptor	*rx_dma_desc;  	dma_cookie_t		rx_cookie; -#endif  	u32			*rx_bb;  	dma_addr_t		rx_bb_phys;  }; -#if !defined(CONFIG_TEGRA_SYSTEM_DMA)  static void tegra_spi_rx_dma_complete(void *args); -#endif -  static inline unsigned long spi_tegra_readl(struct spi_tegra_data *tspi,  					    unsigned long reg)  { @@ -204,10 +196,6 @@ static void spi_tegra_go(struct spi_tegra_data *tspi)  	val &= ~SLINK_DMA_BLOCK_SIZE(~0) & ~SLINK_DMA_EN;  	val |= SLINK_DMA_BLOCK_SIZE(tspi->dma_req_len / 4 - 1);  	spi_tegra_writel(tspi, val, SLINK_DMA_CTL); -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	tspi->rx_dma_req.size = tspi->dma_req_len; -	tegra_dma_enqueue_req(tspi->rx_dma, &tspi->rx_dma_req); -#else  	tspi->rx_dma_desc = dmaengine_prep_slave_single(tspi->rx_dma,  				tspi->rx_bb_phys, tspi->dma_req_len,  				DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT); @@ -219,7 +207,6 @@ static void spi_tegra_go(struct spi_tegra_data *tspi)  	tspi->rx_dma_desc->callback_param = tspi;  	tspi->rx_cookie = dmaengine_submit(tspi->rx_dma_desc);  	dma_async_issue_pending(tspi->rx_dma); -#endif  	val |= SLINK_DMA_EN;  	spi_tegra_writel(tspi, val, SLINK_DMA_CTL); @@ -405,19 +392,12 @@ static void handle_spi_rx_dma_complete(struct spi_tegra_data *tspi)  	spin_unlock_irqrestore(&tspi->lock, flags);  } -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -static void tegra_spi_rx_dma_complete(struct tegra_dma_req *req) -{ -	struct spi_tegra_data *tspi = req->dev; -	handle_spi_rx_dma_complete(tspi); -} -#else +  static void tegra_spi_rx_dma_complete(void *args)  {  	struct spi_tegra_data *tspi = args;  	handle_spi_rx_dma_complete(tspi);  } -#endif  static int spi_tegra_setup(struct spi_device *spi)  { @@ -509,9 +489,7 @@ static int __devinit spi_tegra_probe(struct platform_device *pdev)  	struct spi_tegra_data	*tspi;  	struct resource		*r;  	int ret; -#if !defined(CONFIG_TEGRA_SYSTEM_DMA)  	dma_cap_mask_t mask; -#endif  	master = spi_alloc_master(&pdev->dev, sizeof *tspi);  	if (master == NULL) { @@ -563,14 +541,6 @@ static int __devinit spi_tegra_probe(struct platform_device *pdev)  	INIT_LIST_HEAD(&tspi->queue); -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	tspi->rx_dma = tegra_dma_allocate_channel(TEGRA_DMA_MODE_ONESHOT); -	if (!tspi->rx_dma) { -		dev_err(&pdev->dev, "can not allocate rx dma channel\n"); -		ret = -ENODEV; -		goto err3; -	} -#else  	dma_cap_zero(mask);  	dma_cap_set(DMA_SLAVE, mask);  	tspi->rx_dma = dma_request_channel(mask, NULL, NULL); @@ -580,8 +550,6 @@ static int __devinit spi_tegra_probe(struct platform_device *pdev)  		goto err3;  	} -#endif -  	tspi->rx_bb = dma_alloc_coherent(&pdev->dev, sizeof(u32) * BB_LEN,  					 &tspi->rx_bb_phys, GFP_KERNEL);  	if (!tspi->rx_bb) { @@ -590,17 +558,6 @@ static int __devinit spi_tegra_probe(struct platform_device *pdev)  		goto err4;  	} -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	tspi->rx_dma_req.complete = tegra_spi_rx_dma_complete; -	tspi->rx_dma_req.to_memory = 1; -	tspi->rx_dma_req.dest_addr = tspi->rx_bb_phys; -	tspi->rx_dma_req.dest_bus_width = 32; -	tspi->rx_dma_req.source_addr = tspi->phys + SLINK_RX_FIFO; -	tspi->rx_dma_req.source_bus_width = 32; -	tspi->rx_dma_req.source_wrap = 4; -	tspi->rx_dma_req.req_sel = spi_tegra_req_sels[pdev->id]; -	tspi->rx_dma_req.dev = tspi; -#else  	/* Dmaengine Dma slave config */  	tspi->sconfig.src_addr = tspi->phys + SLINK_RX_FIFO;  	tspi->sconfig.dst_addr = tspi->phys + SLINK_RX_FIFO; @@ -616,7 +573,6 @@ static int __devinit spi_tegra_probe(struct platform_device *pdev)  			ret);  		goto err4;  	} -#endif  	master->dev.of_node = pdev->dev.of_node;  	ret = spi_register_master(master); @@ -630,11 +586,7 @@ err5:  	dma_free_coherent(&pdev->dev, sizeof(u32) * BB_LEN,  			  tspi->rx_bb, tspi->rx_bb_phys);  err4: -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	tegra_dma_free_channel(tspi->rx_dma); -#else  	dma_release_channel(tspi->rx_dma); -#endif  err3:  	clk_put(tspi->clk);  err2: @@ -656,12 +608,7 @@ static int __devexit spi_tegra_remove(struct platform_device *pdev)  	tspi = spi_master_get_devdata(master);  	spi_unregister_master(master); -#if defined(CONFIG_TEGRA_SYSTEM_DMA) -	tegra_dma_free_channel(tspi->rx_dma); -#else  	dma_release_channel(tspi->rx_dma); -#endif -  	dma_free_coherent(&pdev->dev, sizeof(u32) * BB_LEN,  			  tspi->rx_bb, tspi->rx_bb_phys);  |