aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-24 12:49:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-24 12:49:37 -0400
commitd6a4c0e5d3d433ef296f8f417e835329a834a256 (patch)
treea65de394ea1afeeccee9f84dc7e6cd21e2660639 /sound
parent474095e46cd14421821da3201a9fd6a4c070996b (diff)
parentcdde0e61cf2d41123604c6c9d8f09ef5c23464ee (diff)
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul: - new drivers for: - Ingenic JZ4780 controller - APM X-Gene controller - Freescale RaidEngine device - Renesas USB Controller - remove device_alloc_chan_resources dummy handlers - sh driver cleanups for peri peri and related emmc and asoc patches as well - fixes and enhancements spread over the drivers * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (59 commits) dmaengine: dw: don't prompt for DW_DMAC_CORE dmaengine: shdmac: avoid unused variable warnings dmaengine: fix platform_no_drv_owner.cocci warnings dmaengine: pch_dma: fix memory leak on failure path in pch_dma_probe() dmaengine: at_xdmac: unlock spin lock before return dmaengine: xgene: devm_ioremap() returns NULL on error dmaengine: xgene: buffer overflow in xgene_dma_init_channels() dmaengine: usb-dmac: Fix dereferencing freed memory 'desc' dmaengine: sa11x0: report slave capabilities to upper layers dmaengine: vdma: Fix compilation warnings dmaengine: fsl_raid: statify fsl_re_chan_probe dmaengine: Driver support for FSL RaidEngine device. dmaengine: xgene_dma_init_ring_mngr() can be static Documentation: dma: Add documentation for the APM X-Gene SoC DMA device DTS binding arm64: dts: Add APM X-Gene SoC DMA device and DMA clock DTS nodes dmaengine: Add support for APM X-Gene SoC DMA engine driver dmaengine: usb-dmac: Add Renesas USB DMA Controller (USB-DMAC) driver dmaengine: renesas,usb-dmac: Add device tree bindings documentation dmaengine: edma: fixed wrongly initialized data parameter to the edma callback dmaengine: ste_dma40: fix implicit conversion ...
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/sh/fsi.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 0c2af21b0b82..142c066eaee2 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -250,6 +250,7 @@ struct fsi_clk {
250 250
251struct fsi_priv { 251struct fsi_priv {
252 void __iomem *base; 252 void __iomem *base;
253 phys_addr_t phys;
253 struct fsi_master *master; 254 struct fsi_master *master;
254 255
255 struct fsi_stream playback; 256 struct fsi_stream playback;
@@ -1371,13 +1372,18 @@ static int fsi_dma_probe(struct fsi_priv *fsi, struct fsi_stream *io, struct dev
1371 shdma_chan_filter, (void *)io->dma_id, 1372 shdma_chan_filter, (void *)io->dma_id,
1372 dev, is_play ? "tx" : "rx"); 1373 dev, is_play ? "tx" : "rx");
1373 if (io->chan) { 1374 if (io->chan) {
1374 struct dma_slave_config cfg; 1375 struct dma_slave_config cfg = {};
1375 int ret; 1376 int ret;
1376 1377
1377 cfg.slave_id = io->dma_id; 1378 if (is_play) {
1378 cfg.dst_addr = 0; /* use default addr */ 1379 cfg.dst_addr = fsi->phys + REG_DODT;
1379 cfg.src_addr = 0; /* use default addr */ 1380 cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
1380 cfg.direction = is_play ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM; 1381 cfg.direction = DMA_MEM_TO_DEV;
1382 } else {
1383 cfg.src_addr = fsi->phys + REG_DIDT;
1384 cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
1385 cfg.direction = DMA_DEV_TO_MEM;
1386 }
1381 1387
1382 ret = dmaengine_slave_config(io->chan, &cfg); 1388 ret = dmaengine_slave_config(io->chan, &cfg);
1383 if (ret < 0) { 1389 if (ret < 0) {
@@ -1974,6 +1980,7 @@ static int fsi_probe(struct platform_device *pdev)
1974 /* FSI A setting */ 1980 /* FSI A setting */
1975 fsi = &master->fsia; 1981 fsi = &master->fsia;
1976 fsi->base = master->base; 1982 fsi->base = master->base;
1983 fsi->phys = res->start;
1977 fsi->master = master; 1984 fsi->master = master;
1978 fsi_port_info_init(fsi, &info.port_a); 1985 fsi_port_info_init(fsi, &info.port_a);
1979 fsi_handler_init(fsi, &info.port_a); 1986 fsi_handler_init(fsi, &info.port_a);
@@ -1986,6 +1993,7 @@ static int fsi_probe(struct platform_device *pdev)
1986 /* FSI B setting */ 1993 /* FSI B setting */
1987 fsi = &master->fsib; 1994 fsi = &master->fsib;
1988 fsi->base = master->base + 0x40; 1995 fsi->base = master->base + 0x40;
1996 fsi->phys = res->start + 0x40;
1989 fsi->master = master; 1997 fsi->master = master;
1990 fsi_port_info_init(fsi, &info.port_b); 1998 fsi_port_info_init(fsi, &info.port_b);
1991 fsi_handler_init(fsi, &info.port_b); 1999 fsi_handler_init(fsi, &info.port_b);