diff options
Diffstat (limited to 'target/linux/omap/patches-3.12/403-ASoC-davinci-mcasp-Extract-DMA-channels-directly-fro.patch')
-rw-r--r-- | target/linux/omap/patches-3.12/403-ASoC-davinci-mcasp-Extract-DMA-channels-directly-fro.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/target/linux/omap/patches-3.12/403-ASoC-davinci-mcasp-Extract-DMA-channels-directly-fro.patch b/target/linux/omap/patches-3.12/403-ASoC-davinci-mcasp-Extract-DMA-channels-directly-fro.patch deleted file mode 100644 index c3b042e..0000000 --- a/target/linux/omap/patches-3.12/403-ASoC-davinci-mcasp-Extract-DMA-channels-directly-fro.patch +++ /dev/null @@ -1,128 +0,0 @@ -From ad5d3e5a1218a599ec02c81a3bd599acedeea00f Mon Sep 17 00:00:00 2001 -From: Jyri Sarha <jsarha@ti.com> -Date: Tue, 17 Sep 2013 12:09:30 +0300 -Subject: [PATCH 214/752] ASoC: davinci-mcasp: Extract DMA channels directly - from DT - -Extract DMA channels directly from DT as they can not be found from -platform resources anymore. This is a work-around until davinci audio -driver is updated to use dmaengine. - -Signed-off-by: Jyri Sarha <jsarha@ti.com> ---- - .../bindings/sound/davinci-mcasp-audio.txt | 5 +++ - include/linux/platform_data/davinci_asp.h | 2 + - sound/soc/davinci/davinci-mcasp.c | 47 +++++++++++++------- - 3 files changed, 39 insertions(+), 15 deletions(-) - ---- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt -+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt -@@ -18,6 +18,11 @@ Required properties: - - serial-dir : A list of serializer pin mode. The list number should be equal - to "num-serializer" parameter. Each entry is a number indication - serializer pin direction. (0 - INACTIVE, 1 - TX, 2 - RX) -+- dmas: two element list of DMA controller phandles and DMA request line -+ ordered pairs. -+- dma-names: identifier string for each DMA request line in the dmas property. -+ These strings correspond 1:1 with the ordered pairs in dmas. The dma -+ identifiers must be "rx" and "tx". - - Optional properties: - ---- a/include/linux/platform_data/davinci_asp.h -+++ b/include/linux/platform_data/davinci_asp.h -@@ -84,6 +84,8 @@ struct snd_platform_data { - u8 version; - u8 txnumevt; - u8 rxnumevt; -+ int tx_dma_channel; -+ int rx_dma_channel; - }; - - enum { ---- a/sound/soc/davinci/davinci-mcasp.c -+++ b/sound/soc/davinci/davinci-mcasp.c -@@ -1047,6 +1047,7 @@ static struct snd_platform_data *davinci - struct snd_platform_data *pdata = NULL; - const struct of_device_id *match = - of_match_device(mcasp_dt_ids, &pdev->dev); -+ struct of_phandle_args dma_spec; - - const u32 *of_serial_dir32; - u8 *of_serial_dir; -@@ -1109,6 +1110,28 @@ static struct snd_platform_data *davinci - pdata->serial_dir = of_serial_dir; - } - -+ ret = of_property_match_string(np, "dma-names", "tx"); -+ if (ret < 0) -+ goto nodata; -+ -+ ret = of_parse_phandle_with_args(np, "dmas", "#dma-cells", ret, -+ &dma_spec); -+ if (ret < 0) -+ goto nodata; -+ -+ pdata->tx_dma_channel = dma_spec.args[0]; -+ -+ ret = of_property_match_string(np, "dma-names", "rx"); -+ if (ret < 0) -+ goto nodata; -+ -+ ret = of_parse_phandle_with_args(np, "dmas", "#dma-cells", ret, -+ &dma_spec); -+ if (ret < 0) -+ goto nodata; -+ -+ pdata->rx_dma_channel = dma_spec.args[0]; -+ - ret = of_property_read_u32(np, "tx-num-evt", &val); - if (ret >= 0) - pdata->txnumevt = val; -@@ -1139,7 +1162,7 @@ nodata: - static int davinci_mcasp_probe(struct platform_device *pdev) - { - struct davinci_pcm_dma_params *dma_data; -- struct resource *mem, *ioarea, *res; -+ struct resource *mem, *ioarea, *res, *dma; - struct snd_platform_data *pdata; - struct davinci_audio_dev *dev; - int ret; -@@ -1213,15 +1236,11 @@ static int davinci_mcasp_probe(struct pl - dma_data->sram_size = pdata->sram_size_playback; - dma_data->dma_addr = dma->start + pdata->tx_dma_offset; - -- /* first TX, then RX */ - res = platform_get_resource(pdev, IORESOURCE_DMA, 0); -- if (!res) { -- dev_err(&pdev->dev, "no DMA resource\n"); -- ret = -ENODEV; -- goto err_release_clk; -- } -- -- dma_data->channel = res->start; -+ if (res) -+ dma_data->channel = res->start; -+ else -+ dma_data->channel = pdata->tx_dma_channel; - - dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE]; - dma_data->asp_chan_q = pdata->asp_chan_q; -@@ -1231,13 +1250,11 @@ static int davinci_mcasp_probe(struct pl - dma_data->dma_addr = dma->start + pdata->rx_dma_offset; - - res = platform_get_resource(pdev, IORESOURCE_DMA, 1); -- if (!res) { -- dev_err(&pdev->dev, "no DMA resource\n"); -- ret = -ENODEV; -- goto err_release_clk; -- } -+ if (res) -+ dma_data->channel = res->start; -+ else -+ dma_data->channel = pdata->rx_dma_channel; - -- dma_data->channel = res->start; - dev_set_drvdata(&pdev->dev, dev); - ret = snd_soc_register_component(&pdev->dev, &davinci_mcasp_component, - &davinci_mcasp_dai[pdata->op_mode], 1); |