Commit 2577394f authored by Vinod Koul's avatar Vinod Koul

Merge tag 'dmaengine_topic_slave_id_removal_5.17' into next

Merge the tag dmaengine_topic_slave_id_removal_5.17 into next. This
brings in the slave_id removal topic changes
parents d5aeba45 3c219644
...@@ -727,12 +727,6 @@ static int mmp_pdma_config_write(struct dma_chan *dchan, ...@@ -727,12 +727,6 @@ static int mmp_pdma_config_write(struct dma_chan *dchan,
chan->dir = direction; chan->dir = direction;
chan->dev_addr = addr; chan->dev_addr = addr;
/* FIXME: drivers should be ported over to use the filter
* function. Once that's done, the following two lines can
* be removed.
*/
if (cfg->slave_id)
chan->drcmr = cfg->slave_id;
return 0; return 0;
} }
......
...@@ -909,13 +909,6 @@ static void pxad_get_config(struct pxad_chan *chan, ...@@ -909,13 +909,6 @@ static void pxad_get_config(struct pxad_chan *chan,
*dcmd |= PXA_DCMD_BURST16; *dcmd |= PXA_DCMD_BURST16;
else if (maxburst == 32) else if (maxburst == 32)
*dcmd |= PXA_DCMD_BURST32; *dcmd |= PXA_DCMD_BURST32;
/* FIXME: drivers should be ported over to use the filter
* function. Once that's done, the following two lines can
* be removed.
*/
if (chan->cfg.slave_id)
chan->drcmr = chan->cfg.slave_id;
} }
static struct dma_async_tx_descriptor * static struct dma_async_tx_descriptor *
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dma/qcom_adm.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/io.h> #include <linux/io.h>
...@@ -140,6 +141,8 @@ struct adm_chan { ...@@ -140,6 +141,8 @@ struct adm_chan {
struct adm_async_desc *curr_txd; struct adm_async_desc *curr_txd;
struct dma_slave_config slave; struct dma_slave_config slave;
u32 crci;
u32 mux;
struct list_head node; struct list_head node;
int error; int error;
...@@ -379,8 +382,8 @@ static struct dma_async_tx_descriptor *adm_prep_slave_sg(struct dma_chan *chan, ...@@ -379,8 +382,8 @@ static struct dma_async_tx_descriptor *adm_prep_slave_sg(struct dma_chan *chan,
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
crci = achan->slave.slave_id & 0xf; crci = achan->crci & 0xf;
if (!crci || achan->slave.slave_id > 0x1f) { if (!crci || achan->crci > 0x1f) {
dev_err(adev->dev, "invalid crci value\n"); dev_err(adev->dev, "invalid crci value\n");
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
...@@ -403,9 +406,7 @@ static struct dma_async_tx_descriptor *adm_prep_slave_sg(struct dma_chan *chan, ...@@ -403,9 +406,7 @@ static struct dma_async_tx_descriptor *adm_prep_slave_sg(struct dma_chan *chan,
if (!async_desc) if (!async_desc)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
if (crci) async_desc->mux = achan->mux ? ADM_CRCI_CTL_MUX_SEL : 0;
async_desc->mux = achan->slave.slave_id & ADM_CRCI_MUX_SEL ?
ADM_CRCI_CTL_MUX_SEL : 0;
async_desc->crci = crci; async_desc->crci = crci;
async_desc->blk_size = blk_size; async_desc->blk_size = blk_size;
async_desc->dma_len = single_count * sizeof(struct adm_desc_hw_single) + async_desc->dma_len = single_count * sizeof(struct adm_desc_hw_single) +
...@@ -488,10 +489,13 @@ static int adm_terminate_all(struct dma_chan *chan) ...@@ -488,10 +489,13 @@ static int adm_terminate_all(struct dma_chan *chan)
static int adm_slave_config(struct dma_chan *chan, struct dma_slave_config *cfg) static int adm_slave_config(struct dma_chan *chan, struct dma_slave_config *cfg)
{ {
struct adm_chan *achan = to_adm_chan(chan); struct adm_chan *achan = to_adm_chan(chan);
struct qcom_adm_peripheral_config *config = cfg->peripheral_config;
unsigned long flag; unsigned long flag;
spin_lock_irqsave(&achan->vc.lock, flag); spin_lock_irqsave(&achan->vc.lock, flag);
memcpy(&achan->slave, cfg, sizeof(struct dma_slave_config)); memcpy(&achan->slave, cfg, sizeof(struct dma_slave_config));
if (cfg->peripheral_size == sizeof(config))
achan->crci = config->crci;
spin_unlock_irqrestore(&achan->vc.lock, flag); spin_unlock_irqrestore(&achan->vc.lock, flag);
return 0; return 0;
...@@ -694,6 +698,45 @@ static void adm_channel_init(struct adm_device *adev, struct adm_chan *achan, ...@@ -694,6 +698,45 @@ static void adm_channel_init(struct adm_device *adev, struct adm_chan *achan,
achan->vc.desc_free = adm_dma_free_desc; achan->vc.desc_free = adm_dma_free_desc;
} }
/**
* adm_dma_xlate
* @dma_spec: pointer to DMA specifier as found in the device tree
* @ofdma: pointer to DMA controller data
*
* This can use either 1-cell or 2-cell formats, the first cell
* identifies the slave device, while the optional second cell
* contains the crci value.
*
* Returns pointer to appropriate dma channel on success or NULL on error.
*/
static struct dma_chan *adm_dma_xlate(struct of_phandle_args *dma_spec,
struct of_dma *ofdma)
{
struct dma_device *dev = ofdma->of_dma_data;
struct dma_chan *chan, *candidate = NULL;
struct adm_chan *achan;
if (!dev || dma_spec->args_count > 2)
return NULL;
list_for_each_entry(chan, &dev->channels, device_node)
if (chan->chan_id == dma_spec->args[0]) {
candidate = chan;
break;
}
if (!candidate)
return NULL;
achan = to_adm_chan(candidate);
if (dma_spec->args_count == 2)
achan->crci = dma_spec->args[1];
else
achan->crci = 0;
return dma_get_slave_channel(candidate);
}
static int adm_dma_probe(struct platform_device *pdev) static int adm_dma_probe(struct platform_device *pdev)
{ {
struct adm_device *adev; struct adm_device *adev;
...@@ -838,8 +881,7 @@ static int adm_dma_probe(struct platform_device *pdev) ...@@ -838,8 +881,7 @@ static int adm_dma_probe(struct platform_device *pdev)
goto err_disable_clks; goto err_disable_clks;
} }
ret = of_dma_controller_register(pdev->dev.of_node, ret = of_dma_controller_register(pdev->dev.of_node, adm_dma_xlate,
of_dma_xlate_by_chan_id,
&adev->common); &adev->common);
if (ret) if (ret)
goto err_unregister_dma; goto err_unregister_dma;
......
...@@ -786,14 +786,6 @@ static int shdma_config(struct dma_chan *chan, ...@@ -786,14 +786,6 @@ static int shdma_config(struct dma_chan *chan,
if (!config) if (!config)
return -EINVAL; return -EINVAL;
/*
* overriding the slave_id through dma_slave_config is deprecated,
* but possibly some out-of-tree drivers still do it.
*/
if (WARN_ON_ONCE(config->slave_id &&
config->slave_id != schan->real_slave_id))
schan->real_slave_id = config->slave_id;
/* /*
* We could lock this, but you shouldn't be configuring the * We could lock this, but you shouldn't be configuring the
* channel, while using it... * channel, while using it...
......
...@@ -795,9 +795,6 @@ static int sprd_dma_fill_desc(struct dma_chan *chan, ...@@ -795,9 +795,6 @@ static int sprd_dma_fill_desc(struct dma_chan *chan,
return dst_datawidth; return dst_datawidth;
} }
if (slave_cfg->slave_id)
schan->dev_id = slave_cfg->slave_id;
hw->cfg = SPRD_DMA_DONOT_WAIT_BDONE << SPRD_DMA_WAIT_BDONE_OFFSET; hw->cfg = SPRD_DMA_DONOT_WAIT_BDONE << SPRD_DMA_WAIT_BDONE_OFFSET;
/* /*
......
...@@ -343,12 +343,6 @@ static int tegra_dma_slave_config(struct dma_chan *dc, ...@@ -343,12 +343,6 @@ static int tegra_dma_slave_config(struct dma_chan *dc,
} }
memcpy(&tdc->dma_sconfig, sconfig, sizeof(*sconfig)); memcpy(&tdc->dma_sconfig, sconfig, sizeof(*sconfig));
if (tdc->slave_id == TEGRA_APBDMA_SLAVE_ID_INVALID &&
sconfig->device_fc) {
if (sconfig->slave_id > TEGRA_APBDMA_CSR_REQ_SEL_MASK)
return -EINVAL;
tdc->slave_id = sconfig->slave_id;
}
tdc->config_init = true; tdc->config_init = true;
return 0; return 0;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/dma/xilinx_dpdma.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/dmapool.h> #include <linux/dmapool.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -1273,6 +1274,7 @@ static int xilinx_dpdma_config(struct dma_chan *dchan, ...@@ -1273,6 +1274,7 @@ static int xilinx_dpdma_config(struct dma_chan *dchan,
struct dma_slave_config *config) struct dma_slave_config *config)
{ {
struct xilinx_dpdma_chan *chan = to_xilinx_chan(dchan); struct xilinx_dpdma_chan *chan = to_xilinx_chan(dchan);
struct xilinx_dpdma_peripheral_config *pconfig;
unsigned long flags; unsigned long flags;
/* /*
...@@ -1282,15 +1284,18 @@ static int xilinx_dpdma_config(struct dma_chan *dchan, ...@@ -1282,15 +1284,18 @@ static int xilinx_dpdma_config(struct dma_chan *dchan,
* fixed both on the DPDMA side and on the DP controller side. * fixed both on the DPDMA side and on the DP controller side.
*/ */
spin_lock_irqsave(&chan->lock, flags);
/* /*
* Abuse the slave_id to indicate that the channel is part of a video * Use the peripheral_config to indicate that the channel is part
* group. * of a video group. This requires matching use of the custom
* structure in each driver.
*/ */
if (chan->id <= ZYNQMP_DPDMA_VIDEO2) pconfig = config->peripheral_config;
chan->video_group = config->slave_id != 0; if (WARN_ON(pconfig && config->peripheral_size != sizeof(*pconfig)))
return -EINVAL;
spin_lock_irqsave(&chan->lock, flags);
if (chan->id <= ZYNQMP_DPDMA_VIDEO2 && pconfig)
chan->video_group = pconfig->video_group;
spin_unlock_irqrestore(&chan->lock, flags); spin_unlock_irqrestore(&chan->lock, flags);
return 0; return 0;
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/dma/xilinx_dpdma.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -1058,14 +1059,18 @@ static void zynqmp_disp_layer_set_format(struct zynqmp_disp_layer *layer, ...@@ -1058,14 +1059,18 @@ static void zynqmp_disp_layer_set_format(struct zynqmp_disp_layer *layer,
zynqmp_disp_avbuf_set_format(layer->disp, layer, layer->disp_fmt); zynqmp_disp_avbuf_set_format(layer->disp, layer, layer->disp_fmt);
/* /*
* Set slave_id for each DMA channel to indicate they're part of a * Set pconfig for each DMA channel to indicate they're part of a
* video group. * video group.
*/ */
for (i = 0; i < info->num_planes; i++) { for (i = 0; i < info->num_planes; i++) {
struct zynqmp_disp_layer_dma *dma = &layer->dmas[i]; struct zynqmp_disp_layer_dma *dma = &layer->dmas[i];
struct xilinx_dpdma_peripheral_config pconfig = {
.video_group = true,
};
struct dma_slave_config config = { struct dma_slave_config config = {
.direction = DMA_MEM_TO_DEV, .direction = DMA_MEM_TO_DEV,
.slave_id = 1, .peripheral_config = &pconfig,
.peripheral_size = sizeof(pconfig),
}; };
dmaengine_slave_config(dma->chan, &config); dmaengine_slave_config(dma->chan, &config);
......
...@@ -1293,14 +1293,12 @@ static int bcm2835_add_host(struct bcm2835_host *host) ...@@ -1293,14 +1293,12 @@ static int bcm2835_add_host(struct bcm2835_host *host)
host->dma_cfg_tx.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; host->dma_cfg_tx.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
host->dma_cfg_tx.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; host->dma_cfg_tx.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
host->dma_cfg_tx.slave_id = 13; /* DREQ channel */
host->dma_cfg_tx.direction = DMA_MEM_TO_DEV; host->dma_cfg_tx.direction = DMA_MEM_TO_DEV;
host->dma_cfg_tx.src_addr = 0; host->dma_cfg_tx.src_addr = 0;
host->dma_cfg_tx.dst_addr = host->phys_addr + SDDATA; host->dma_cfg_tx.dst_addr = host->phys_addr + SDDATA;
host->dma_cfg_rx.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; host->dma_cfg_rx.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
host->dma_cfg_rx.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; host->dma_cfg_rx.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
host->dma_cfg_rx.slave_id = 13; /* DREQ channel */
host->dma_cfg_rx.direction = DMA_DEV_TO_MEM; host->dma_cfg_rx.direction = DMA_DEV_TO_MEM;
host->dma_cfg_rx.src_addr = host->phys_addr + SDDATA; host->dma_cfg_rx.src_addr = host->phys_addr + SDDATA;
host->dma_cfg_rx.dst_addr = 0; host->dma_cfg_rx.dst_addr = 0;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/dma/qcom_adm.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -952,6 +953,7 @@ static int prep_adm_dma_desc(struct qcom_nand_controller *nandc, bool read, ...@@ -952,6 +953,7 @@ static int prep_adm_dma_desc(struct qcom_nand_controller *nandc, bool read,
struct dma_async_tx_descriptor *dma_desc; struct dma_async_tx_descriptor *dma_desc;
struct scatterlist *sgl; struct scatterlist *sgl;
struct dma_slave_config slave_conf; struct dma_slave_config slave_conf;
struct qcom_adm_peripheral_config periph_conf = {};
enum dma_transfer_direction dir_eng; enum dma_transfer_direction dir_eng;
int ret; int ret;
...@@ -983,11 +985,19 @@ static int prep_adm_dma_desc(struct qcom_nand_controller *nandc, bool read, ...@@ -983,11 +985,19 @@ static int prep_adm_dma_desc(struct qcom_nand_controller *nandc, bool read,
if (read) { if (read) {
slave_conf.src_maxburst = 16; slave_conf.src_maxburst = 16;
slave_conf.src_addr = nandc->base_dma + reg_off; slave_conf.src_addr = nandc->base_dma + reg_off;
slave_conf.slave_id = nandc->data_crci; if (nandc->data_crci) {
periph_conf.crci = nandc->data_crci;
slave_conf.peripheral_config = &periph_conf;
slave_conf.peripheral_size = sizeof(periph_conf);
}
} else { } else {
slave_conf.dst_maxburst = 16; slave_conf.dst_maxburst = 16;
slave_conf.dst_addr = nandc->base_dma + reg_off; slave_conf.dst_addr = nandc->base_dma + reg_off;
slave_conf.slave_id = nandc->cmd_crci; if (nandc->cmd_crci) {
periph_conf.crci = nandc->cmd_crci;
slave_conf.peripheral_config = &periph_conf;
slave_conf.peripheral_size = sizeof(periph_conf);
}
} }
ret = dmaengine_slave_config(nandc->chan, &slave_conf); ret = dmaengine_slave_config(nandc->chan, &slave_conf);
......
...@@ -370,7 +370,6 @@ static int pic32_spi_dma_config(struct pic32_spi *pic32s, u32 dma_width) ...@@ -370,7 +370,6 @@ static int pic32_spi_dma_config(struct pic32_spi *pic32s, u32 dma_width)
cfg.src_addr_width = dma_width; cfg.src_addr_width = dma_width;
cfg.dst_addr_width = dma_width; cfg.dst_addr_width = dma_width;
/* tx channel */ /* tx channel */
cfg.slave_id = pic32s->tx_irq;
cfg.direction = DMA_MEM_TO_DEV; cfg.direction = DMA_MEM_TO_DEV;
ret = dmaengine_slave_config(master->dma_tx, &cfg); ret = dmaengine_slave_config(master->dma_tx, &cfg);
if (ret) { if (ret) {
...@@ -378,7 +377,6 @@ static int pic32_spi_dma_config(struct pic32_spi *pic32s, u32 dma_width) ...@@ -378,7 +377,6 @@ static int pic32_spi_dma_config(struct pic32_spi *pic32s, u32 dma_width)
return ret; return ret;
} }
/* rx channel */ /* rx channel */
cfg.slave_id = pic32s->rx_irq;
cfg.direction = DMA_DEV_TO_MEM; cfg.direction = DMA_DEV_TO_MEM;
ret = dmaengine_slave_config(master->dma_rx, &cfg); ret = dmaengine_slave_config(master->dma_rx, &cfg);
if (ret) if (ret)
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/dma/qcom_adm.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -290,6 +291,7 @@ static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base) ...@@ -290,6 +291,7 @@ static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base)
{ {
struct device *dev = msm_port->uart.dev; struct device *dev = msm_port->uart.dev;
struct dma_slave_config conf; struct dma_slave_config conf;
struct qcom_adm_peripheral_config periph_conf = {};
struct msm_dma *dma; struct msm_dma *dma;
u32 crci = 0; u32 crci = 0;
int ret; int ret;
...@@ -308,7 +310,11 @@ static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base) ...@@ -308,7 +310,11 @@ static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base)
conf.device_fc = true; conf.device_fc = true;
conf.dst_addr = base + UARTDM_TF; conf.dst_addr = base + UARTDM_TF;
conf.dst_maxburst = UARTDM_BURST_SIZE; conf.dst_maxburst = UARTDM_BURST_SIZE;
conf.slave_id = crci; if (crci) {
conf.peripheral_config = &periph_conf;
conf.peripheral_size = sizeof(periph_conf);
periph_conf.crci = crci;
}
ret = dmaengine_slave_config(dma->chan, &conf); ret = dmaengine_slave_config(dma->chan, &conf);
if (ret) if (ret)
...@@ -333,6 +339,7 @@ static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base) ...@@ -333,6 +339,7 @@ static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base)
{ {
struct device *dev = msm_port->uart.dev; struct device *dev = msm_port->uart.dev;
struct dma_slave_config conf; struct dma_slave_config conf;
struct qcom_adm_peripheral_config periph_conf = {};
struct msm_dma *dma; struct msm_dma *dma;
u32 crci = 0; u32 crci = 0;
int ret; int ret;
...@@ -355,7 +362,11 @@ static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base) ...@@ -355,7 +362,11 @@ static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base)
conf.device_fc = true; conf.device_fc = true;
conf.src_addr = base + UARTDM_RF; conf.src_addr = base + UARTDM_RF;
conf.src_maxburst = UARTDM_BURST_SIZE; conf.src_maxburst = UARTDM_BURST_SIZE;
conf.slave_id = crci; if (crci) {
conf.peripheral_config = &periph_conf;
conf.peripheral_size = sizeof(periph_conf);
periph_conf.crci = crci;
}
ret = dmaengine_slave_config(dma->chan, &conf); ret = dmaengine_slave_config(dma->chan, &conf);
if (ret) if (ret)
......
// SPDX-License-Identifier: GPL-2.0-only
#ifndef __LINUX_DMA_QCOM_ADM_H
#define __LINUX_DMA_QCOM_ADM_H
#include <linux/types.h>
struct qcom_adm_peripheral_config {
u32 crci;
u32 mux;
};
#endif /* __LINUX_DMA_QCOM_ADM_H */
// SPDX-License-Identifier: GPL-2.0
#ifndef __LINUX_DMA_XILINX_DPDMA_H
#define __LINUX_DMA_XILINX_DPDMA_H
#include <linux/types.h>
struct xilinx_dpdma_peripheral_config {
bool video_group;
};
#endif /* __LINUX_DMA_XILINX_DPDMA_H */
...@@ -419,9 +419,6 @@ enum dma_slave_buswidth { ...@@ -419,9 +419,6 @@ enum dma_slave_buswidth {
* @device_fc: Flow Controller Settings. Only valid for slave channels. Fill * @device_fc: Flow Controller Settings. Only valid for slave channels. Fill
* with 'true' if peripheral should be flow controller. Direction will be * with 'true' if peripheral should be flow controller. Direction will be
* selected at Runtime. * selected at Runtime.
* @slave_id: Slave requester id. Only valid for slave channels. The dma
* slave peripheral will have unique id as dma requester which need to be
* pass as slave config.
* @peripheral_config: peripheral configuration for programming peripheral * @peripheral_config: peripheral configuration for programming peripheral
* for dmaengine transfer * for dmaengine transfer
* @peripheral_size: peripheral configuration buffer size * @peripheral_size: peripheral configuration buffer size
...@@ -449,7 +446,6 @@ struct dma_slave_config { ...@@ -449,7 +446,6 @@ struct dma_slave_config {
u32 src_port_window_size; u32 src_port_window_size;
u32 dst_port_window_size; u32 dst_port_window_size;
bool device_fc; bool device_fc;
unsigned int slave_id;
void *peripheral_config; void *peripheral_config;
size_t peripheral_size; size_t peripheral_size;
}; };
......
...@@ -60,7 +60,6 @@ struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream) ...@@ -60,7 +60,6 @@ struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream)
* @maxburst: Maximum number of words(note: words, as in units of the * @maxburst: Maximum number of words(note: words, as in units of the
* src_addr_width member, not bytes) that can be send to or received from the * src_addr_width member, not bytes) that can be send to or received from the
* DAI in one burst. * DAI in one burst.
* @slave_id: Slave requester id for the DMA channel.
* @filter_data: Custom DMA channel filter data, this will usually be used when * @filter_data: Custom DMA channel filter data, this will usually be used when
* requesting the DMA channel. * requesting the DMA channel.
* @chan_name: Custom channel name to use when requesting DMA channel. * @chan_name: Custom channel name to use when requesting DMA channel.
...@@ -74,7 +73,6 @@ struct snd_dmaengine_dai_dma_data { ...@@ -74,7 +73,6 @@ struct snd_dmaengine_dai_dma_data {
dma_addr_t addr; dma_addr_t addr;
enum dma_slave_buswidth addr_width; enum dma_slave_buswidth addr_width;
u32 maxburst; u32 maxburst;
unsigned int slave_id;
void *filter_data; void *filter_data;
const char *chan_name; const char *chan_name;
unsigned int fifo_size; unsigned int fifo_size;
......
...@@ -91,8 +91,8 @@ EXPORT_SYMBOL_GPL(snd_hwparams_to_dma_slave_config); ...@@ -91,8 +91,8 @@ EXPORT_SYMBOL_GPL(snd_hwparams_to_dma_slave_config);
* @dma_data: DAI DMA data * @dma_data: DAI DMA data
* @slave_config: DMA slave configuration * @slave_config: DMA slave configuration
* *
* Initializes the {dst,src}_addr, {dst,src}_maxburst, {dst,src}_addr_width and * Initializes the {dst,src}_addr, {dst,src}_maxburst, {dst,src}_addr_width
* slave_id fields of the DMA slave config from the same fields of the DAI DMA * fields of the DMA slave config from the same fields of the DAI DMA
* data struct. The src and dst fields will be initialized depending on the * data struct. The src and dst fields will be initialized depending on the
* direction of the substream. If the substream is a playback stream the dst * direction of the substream. If the substream is a playback stream the dst
* fields will be initialized, if it is a capture stream the src fields will be * fields will be initialized, if it is a capture stream the src fields will be
...@@ -124,7 +124,6 @@ void snd_dmaengine_pcm_set_config_from_dai_data( ...@@ -124,7 +124,6 @@ void snd_dmaengine_pcm_set_config_from_dai_data(
slave_config->src_addr_width = dma_data->addr_width; slave_config->src_addr_width = dma_data->addr_width;
} }
slave_config->slave_id = dma_data->slave_id;
slave_config->peripheral_config = dma_data->peripheral_config; slave_config->peripheral_config = dma_data->peripheral_config;
slave_config->peripheral_size = dma_data->peripheral_size; slave_config->peripheral_size = dma_data->peripheral_size;
} }
......
...@@ -290,7 +290,6 @@ static int tegra20_spdif_platform_probe(struct platform_device *pdev) ...@@ -290,7 +290,6 @@ static int tegra20_spdif_platform_probe(struct platform_device *pdev)
spdif->playback_dma_data.addr = mem->start + TEGRA20_SPDIF_DATA_OUT; spdif->playback_dma_data.addr = mem->start + TEGRA20_SPDIF_DATA_OUT;
spdif->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; spdif->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
spdif->playback_dma_data.maxburst = 4; spdif->playback_dma_data.maxburst = 4;
spdif->playback_dma_data.slave_id = dmareq->start;
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment