mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branch 'late/kirkwood' into late/soc
Merge in the late Kirkwood branch with the OMAP late branch for upstream submission. Final contents described in shared tag. Fixup remove/change conflicts in arch/arm/mach-omap2/devices.c and drivers/spi/spi-omap2-mcspi.c. Signed-off-by: Olof Johansson <[email protected]>
This commit is contained in:
commit
54d69df584
1353 changed files with 29862 additions and 31311 deletions
|
|
@ -366,7 +366,7 @@ config SPI_STMP3XXX
|
|||
|
||||
config SPI_TEGRA
|
||||
tristate "Nvidia Tegra SPI controller"
|
||||
depends on ARCH_TEGRA && (TEGRA_SYSTEM_DMA || TEGRA20_APB_DMA)
|
||||
depends on ARCH_TEGRA && TEGRA20_APB_DMA
|
||||
help
|
||||
SPI driver for NVidia Tegra SoCs
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include <linux/spi/spi_bitbang.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <mach/spi.h>
|
||||
#include <linux/platform_data/spi-davinci.h>
|
||||
#include <mach/edma.h>
|
||||
|
||||
#define SPI_NO_RESOURCE ((resource_size_t)-1)
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
#include <linux/scatterlist.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <mach/dma.h>
|
||||
#include <mach/ep93xx_spi.h>
|
||||
#include <linux/platform_data/dma-ep93xx.h>
|
||||
#include <linux/platform_data/spi-ep93xx.h>
|
||||
|
||||
#define SSPCR0 0x0000
|
||||
#define SSPCR0_MODE_SHIFT 6
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
#include <linux/of_gpio.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
|
||||
#include <mach/spi.h>
|
||||
#include <linux/platform_data/spi-imx.h>
|
||||
|
||||
#define DRIVER_NAME "spi_imx"
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/spi_bitbang.h>
|
||||
|
||||
#include <mach/nuc900_spi.h>
|
||||
#include <linux/platform_data/spi-nuc900.h>
|
||||
|
||||
/* usi registers offset */
|
||||
#define USI_CNT 0x00
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <plat/mux.h>
|
||||
#include <mach/mux.h>
|
||||
|
||||
#include <mach/omap7xx.h> /* OMAP7XX_IO_CONF registers */
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <plat/mcspi.h>
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
|
||||
#define OMAP2_MCSPI_MAX_FREQ 48000000
|
||||
#define SPI_AUTOSUSPEND_TIMEOUT 2000
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
#include <linux/of_gpio.h>
|
||||
|
||||
#include <mach/dma.h>
|
||||
#include <plat/s3c64xx-spi.h>
|
||||
#include <linux/platform_data/spi-s3c64xx.h>
|
||||
|
||||
#define MAX_SPI_PORTS 3
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue