mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 02:39:48 +00:00
Merge remote-tracking branch 'asoc/fix/omap' into asoc-linus
This commit is contained in:
commit
39c36ad00b
4 changed files with 39 additions and 44 deletions
|
@ -1012,28 +1012,33 @@ int omap_mcbsp_init(struct platform_device *pdev)
|
|||
}
|
||||
}
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx");
|
||||
if (!res) {
|
||||
dev_err(&pdev->dev, "invalid rx DMA channel\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
/* RX DMA request number, and port address configuration */
|
||||
mcbsp->dma_req[1] = res->start;
|
||||
mcbsp->dma_data[1].filter_data = &mcbsp->dma_req[1];
|
||||
mcbsp->dma_data[1].addr = omap_mcbsp_dma_reg_params(mcbsp, 1);
|
||||
mcbsp->dma_data[1].maxburst = 4;
|
||||
if (!pdev->dev.of_node) {
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx");
|
||||
if (!res) {
|
||||
dev_err(&pdev->dev, "invalid tx DMA channel\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
mcbsp->dma_req[0] = res->start;
|
||||
mcbsp->dma_data[0].filter_data = &mcbsp->dma_req[0];
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx");
|
||||
if (!res) {
|
||||
dev_err(&pdev->dev, "invalid tx DMA channel\n");
|
||||
return -ENODEV;
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx");
|
||||
if (!res) {
|
||||
dev_err(&pdev->dev, "invalid rx DMA channel\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
mcbsp->dma_req[1] = res->start;
|
||||
mcbsp->dma_data[1].filter_data = &mcbsp->dma_req[1];
|
||||
} else {
|
||||
mcbsp->dma_data[0].filter_data = "tx";
|
||||
mcbsp->dma_data[1].filter_data = "rx";
|
||||
}
|
||||
/* TX DMA request number, and port address configuration */
|
||||
mcbsp->dma_req[0] = res->start;
|
||||
mcbsp->dma_data[0].filter_data = &mcbsp->dma_req[0];
|
||||
|
||||
mcbsp->dma_data[0].addr = omap_mcbsp_dma_reg_params(mcbsp, 0);
|
||||
mcbsp->dma_data[0].maxburst = 4;
|
||||
|
||||
mcbsp->dma_data[1].addr = omap_mcbsp_dma_reg_params(mcbsp, 1);
|
||||
mcbsp->dma_data[1].maxburst = 4;
|
||||
|
||||
mcbsp->fclk = clk_get(&pdev->dev, "fck");
|
||||
if (IS_ERR(mcbsp->fclk)) {
|
||||
ret = PTR_ERR(mcbsp->fclk);
|
||||
|
|
|
@ -57,7 +57,6 @@ struct omap_dmic {
|
|||
struct mutex mutex;
|
||||
|
||||
struct snd_dmaengine_dai_dma_data dma_data;
|
||||
unsigned int dma_req;
|
||||
};
|
||||
|
||||
static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val)
|
||||
|
@ -478,15 +477,7 @@ static int asoc_dmic_probe(struct platform_device *pdev)
|
|||
}
|
||||
dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG;
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
|
||||
if (!res) {
|
||||
dev_err(dmic->dev, "invalid dma resource\n");
|
||||
ret = -ENODEV;
|
||||
goto err_put_clk;
|
||||
}
|
||||
|
||||
dmic->dma_req = res->start;
|
||||
dmic->dma_data.filter_data = &dmic->dma_req;
|
||||
dmic->dma_data.filter_data = "up_link";
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu");
|
||||
if (!res) {
|
||||
|
|
|
@ -66,7 +66,6 @@ struct omap_mcpdm {
|
|||
bool restart;
|
||||
|
||||
struct snd_dmaengine_dai_dma_data dma_data[2];
|
||||
unsigned int dma_req[2];
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -477,19 +476,8 @@ static int asoc_mcpdm_probe(struct platform_device *pdev)
|
|||
mcpdm->dma_data[0].addr = res->start + MCPDM_REG_DN_DATA;
|
||||
mcpdm->dma_data[1].addr = res->start + MCPDM_REG_UP_DATA;
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "dn_link");
|
||||
if (!res)
|
||||
return -ENODEV;
|
||||
|
||||
mcpdm->dma_req[0] = res->start;
|
||||
mcpdm->dma_data[0].filter_data = &mcpdm->dma_req[0];
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "up_link");
|
||||
if (!res)
|
||||
return -ENODEV;
|
||||
|
||||
mcpdm->dma_req[1] = res->start;
|
||||
mcpdm->dma_data[1].filter_data = &mcpdm->dma_req[1];
|
||||
mcpdm->dma_data[0].filter_data = "dn_link";
|
||||
mcpdm->dma_data[1].filter_data = "up_link";
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu");
|
||||
if (res == NULL)
|
||||
|
|
|
@ -113,14 +113,25 @@ static int omap_pcm_open(struct snd_pcm_substream *substream)
|
|||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_dmaengine_dai_dma_data *dma_data;
|
||||
int ret;
|
||||
|
||||
snd_soc_set_runtime_hwparams(substream, &omap_pcm_hardware);
|
||||
|
||||
dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
|
||||
|
||||
return snd_dmaengine_pcm_open_request_chan(substream,
|
||||
omap_dma_filter_fn,
|
||||
dma_data->filter_data);
|
||||
/* DT boot: filter_data is the DMA name */
|
||||
if (rtd->cpu_dai->dev->of_node) {
|
||||
struct dma_chan *chan;
|
||||
|
||||
chan = dma_request_slave_channel(rtd->cpu_dai->dev,
|
||||
dma_data->filter_data);
|
||||
ret = snd_dmaengine_pcm_open(substream, chan);
|
||||
} else {
|
||||
ret = snd_dmaengine_pcm_open_request_chan(substream,
|
||||
omap_dma_filter_fn,
|
||||
dma_data->filter_data);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int omap_pcm_mmap(struct snd_pcm_substream *substream,
|
||||
|
|
Loading…
Reference in a new issue