projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.14.25' into backport/v3.14.24-ltsi-rc1+v3.14.25/snapshot-merge.wip
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
drivers
/
spi
/
spi-s3c64xx.c
diff --git
a/drivers/spi/spi-s3c64xx.c
b/drivers/spi/spi-s3c64xx.c
index
ae907dd
..
c717b2b
100644
(file)
--- a/
drivers/spi/spi-s3c64xx.c
+++ b/
drivers/spi/spi-s3c64xx.c
@@
-381,7
+381,7
@@
static void s3c64xx_spi_dma_stop(struct s3c64xx_spi_driver_data *sdd,
#else
static void prepare_dma(struct s3c64xx_spi_dma_data *dma,
#else
static void prepare_dma(struct s3c64xx_spi_dma_data *dma,
-
unsigned len, dma_addr_t buf
)
+
struct sg_table *sgt
)
{
struct s3c64xx_spi_driver_data *sdd;
struct dma_slave_config config;
{
struct s3c64xx_spi_driver_data *sdd;
struct dma_slave_config config;
@@
-407,8
+407,8
@@
static void prepare_dma(struct s3c64xx_spi_dma_data *dma,
dmaengine_slave_config(dma->ch, &config);
}
dmaengine_slave_config(dma->ch, &config);
}
- desc = dmaengine_prep_slave_s
ingle(dma->ch, buf, len
,
-
dma->direction, DMA_PREP_INTERRUPT);
+ desc = dmaengine_prep_slave_s
g(dma->ch, sgt->sgl, sgt->nents
,
+ dma->direction, DMA_PREP_INTERRUPT);
desc->callback = s3c64xx_spi_dmacb;
desc->callback_param = dma;
desc->callback = s3c64xx_spi_dmacb;
desc->callback_param = dma;
@@
-515,7
+515,11
@@
static void enable_datapath(struct s3c64xx_spi_driver_data *sdd,
chcfg |= S3C64XX_SPI_CH_TXCH_ON;
if (dma_mode) {
modecfg |= S3C64XX_SPI_MODE_TXDMA_ON;
chcfg |= S3C64XX_SPI_CH_TXCH_ON;
if (dma_mode) {
modecfg |= S3C64XX_SPI_MODE_TXDMA_ON;
+#ifndef CONFIG_S3C_DMA
+ prepare_dma(&sdd->tx_dma, &xfer->tx_sg);
+#else
prepare_dma(&sdd->tx_dma, xfer->len, xfer->tx_dma);
prepare_dma(&sdd->tx_dma, xfer->len, xfer->tx_dma);
+#endif
} else {
switch (sdd->cur_bpw) {
case 32:
} else {
switch (sdd->cur_bpw) {
case 32:
@@
-547,7
+551,11
@@
static void enable_datapath(struct s3c64xx_spi_driver_data *sdd,
writel(((xfer->len * 8 / sdd->cur_bpw) & 0xffff)
| S3C64XX_SPI_PACKET_CNT_EN,
regs + S3C64XX_SPI_PACKET_CNT);
writel(((xfer->len * 8 / sdd->cur_bpw) & 0xffff)
| S3C64XX_SPI_PACKET_CNT_EN,
regs + S3C64XX_SPI_PACKET_CNT);
+#ifndef CONFIG_S3C_DMA
+ prepare_dma(&sdd->rx_dma, &xfer->rx_sg);
+#else
prepare_dma(&sdd->rx_dma, xfer->len, xfer->rx_dma);
prepare_dma(&sdd->rx_dma, xfer->len, xfer->rx_dma);
+#endif
}
}
}
}