diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-24 12:49:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-24 12:49:37 -0400 |
commit | d6a4c0e5d3d433ef296f8f417e835329a834a256 (patch) | |
tree | a65de394ea1afeeccee9f84dc7e6cd21e2660639 /sound | |
parent | 474095e46cd14421821da3201a9fd6a4c070996b (diff) | |
parent | cdde0e61cf2d41123604c6c9d8f09ef5c23464ee (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.c | 18 |
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 | ||
251 | struct fsi_priv { | 251 | struct 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); |