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 ...
This commit is contained in:
@@ -250,6 +250,7 @@ struct fsi_clk {
|
||||
|
||||
struct fsi_priv {
|
||||
void __iomem *base;
|
||||
phys_addr_t phys;
|
||||
struct fsi_master *master;
|
||||
|
||||
struct fsi_stream playback;
|
||||
@@ -1371,13 +1372,18 @@ static int fsi_dma_probe(struct fsi_priv *fsi, struct fsi_stream *io, struct dev
|
||||
shdma_chan_filter, (void *)io->dma_id,
|
||||
dev, is_play ? "tx" : "rx");
|
||||
if (io->chan) {
|
||||
struct dma_slave_config cfg;
|
||||
struct dma_slave_config cfg = {};
|
||||
int ret;
|
||||
|
||||
cfg.slave_id = io->dma_id;
|
||||
cfg.dst_addr = 0; /* use default addr */
|
||||
cfg.src_addr = 0; /* use default addr */
|
||||
cfg.direction = is_play ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
|
||||
if (is_play) {
|
||||
cfg.dst_addr = fsi->phys + REG_DODT;
|
||||
cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
cfg.direction = DMA_MEM_TO_DEV;
|
||||
} else {
|
||||
cfg.src_addr = fsi->phys + REG_DIDT;
|
||||
cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
cfg.direction = DMA_DEV_TO_MEM;
|
||||
}
|
||||
|
||||
ret = dmaengine_slave_config(io->chan, &cfg);
|
||||
if (ret < 0) {
|
||||
@@ -1974,6 +1980,7 @@ static int fsi_probe(struct platform_device *pdev)
|
||||
/* FSI A setting */
|
||||
fsi = &master->fsia;
|
||||
fsi->base = master->base;
|
||||
fsi->phys = res->start;
|
||||
fsi->master = master;
|
||||
fsi_port_info_init(fsi, &info.port_a);
|
||||
fsi_handler_init(fsi, &info.port_a);
|
||||
@@ -1986,6 +1993,7 @@ static int fsi_probe(struct platform_device *pdev)
|
||||
/* FSI B setting */
|
||||
fsi = &master->fsib;
|
||||
fsi->base = master->base + 0x40;
|
||||
fsi->phys = res->start + 0x40;
|
||||
fsi->master = master;
|
||||
fsi_port_info_init(fsi, &info.port_b);
|
||||
fsi_handler_init(fsi, &info.port_b);
|
||||
|
Reference in New Issue
Block a user