All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ASoC: davinci-mcasp: Fixes for 3.20
@ 2015-02-02 12:38 Peter Ujfalusi
  2015-02-02 12:38 ` [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared Peter Ujfalusi
  2015-02-02 12:38 ` [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support Peter Ujfalusi
  0 siblings, 2 replies; 5+ messages in thread
From: Peter Ujfalusi @ 2015-02-02 12:38 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Liam Girdwood, daniel

Hi,

While doing the conversion of davinci DAI drivers to use edma-pcm I have noticed
couple of issues with the driver regarding to old daVinci device support which
resulted in the following two patch.

Some SoC uses shared IRQ line for all McASP instances
There are SoCs where a given McASP instance only supports DIT mode. Currently
the arch code feeds dummy resource in place of RX (which is not available). With
the second patch this is not going to be needed anymore.

If it is not too late for 3.20..

regards,
Peter
---
Peter Ujfalusi (2):
  ASoC: davicni-mcasp: Mark the common irq line as shared
  ASoC: davinci-mcasp: Fix DIT only McASP instance support

 sound/soc/davinci/davinci-mcasp.c | 75 +++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 34 deletions(-)

-- 
2.2.2

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared
  2015-02-02 12:38 [PATCH 0/2] ASoC: davinci-mcasp: Fixes for 3.20 Peter Ujfalusi
@ 2015-02-02 12:38 ` Peter Ujfalusi
  2015-02-02 18:32   ` Mark Brown
  2015-02-02 12:38 ` [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support Peter Ujfalusi
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Ujfalusi @ 2015-02-02 12:38 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Liam Girdwood, daniel

On DA830 devices McASP0,1 and 2 shares a single combined interrupt request
line.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 sound/soc/davinci/davinci-mcasp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index 95eef582331b..a5e4fe0359ce 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -1461,7 +1461,8 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
 					  dev_name(&pdev->dev));
 		ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
 						davinci_mcasp_common_irq_handler,
-						IRQF_ONESHOT, irq_name, mcasp);
+						IRQF_ONESHOT | IRQF_SHARED,
+						irq_name, mcasp);
 		if (ret) {
 			dev_err(&pdev->dev, "common IRQ request failed\n");
 			goto err;
-- 
2.2.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support
  2015-02-02 12:38 [PATCH 0/2] ASoC: davinci-mcasp: Fixes for 3.20 Peter Ujfalusi
  2015-02-02 12:38 ` [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared Peter Ujfalusi
@ 2015-02-02 12:38 ` Peter Ujfalusi
  2015-02-02 18:33   ` Mark Brown
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Ujfalusi @ 2015-02-02 12:38 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Liam Girdwood, daniel

One of the McASP instances in DM646x line of DMSoC only supports DIT mode.
This means that the given IP does not have support for rx and all the rx
related resources are missing, like irq and DMA request.
The driver should not fail if any or all  of the RX resource is missing
when the op_mode is set to DIT mode.
Since RX is not possible in DIT mode, we can just ignore the rx resources
when the McASP is used in DIT mode.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 sound/soc/davinci/davinci-mcasp.c | 72 +++++++++++++++++++++------------------
 1 file changed, 39 insertions(+), 33 deletions(-)

diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index a5e4fe0359ce..de3b155a5011 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -1327,16 +1327,19 @@ static struct davinci_mcasp_pdata *davinci_mcasp_set_pdata_from_of(
 
 	pdata->tx_dma_channel = dma_spec.args[0];
 
-	ret = of_property_match_string(np, "dma-names", "rx");
-	if (ret < 0)
-		goto nodata;
+	/* RX is not valid in DIT mode */
+	if (pdata->op_mode != DAVINCI_MCASP_DIT_MODE) {
+		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;
+		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];
+		pdata->rx_dma_channel = dma_spec.args[0];
+	}
 
 	ret = of_property_read_u32(np, "tx-num-evt", &val);
 	if (ret >= 0)
@@ -1532,19 +1535,34 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
 	else
 		dma_data->filter_data = &dma_params->channel;
 
-	dma_params = &mcasp->dma_params[SNDRV_PCM_STREAM_CAPTURE];
-	dma_data = &mcasp->dma_data[SNDRV_PCM_STREAM_CAPTURE];
-	dma_params->asp_chan_q = pdata->asp_chan_q;
-	dma_params->ram_chan_q = pdata->ram_chan_q;
-	dma_params->sram_pool = pdata->sram_pool;
-	dma_params->sram_size = pdata->sram_size_capture;
-	if (dat)
-		dma_params->dma_addr = dat->start;
-	else
-		dma_params->dma_addr = mem->start + pdata->rx_dma_offset;
-
-	/* Unconditional dmaengine stuff */
-	dma_data->addr = dma_params->dma_addr;
+	/* RX is not valid in DIT mode */
+	if (mcasp->op_mode != DAVINCI_MCASP_DIT_MODE) {
+		dma_params = &mcasp->dma_params[SNDRV_PCM_STREAM_CAPTURE];
+		dma_data = &mcasp->dma_data[SNDRV_PCM_STREAM_CAPTURE];
+		dma_params->asp_chan_q = pdata->asp_chan_q;
+		dma_params->ram_chan_q = pdata->ram_chan_q;
+		dma_params->sram_pool = pdata->sram_pool;
+		dma_params->sram_size = pdata->sram_size_capture;
+		if (dat)
+			dma_params->dma_addr = dat->start;
+		else
+			dma_params->dma_addr = mem->start + pdata->rx_dma_offset;
+
+		/* Unconditional dmaengine stuff */
+		dma_data->addr = dma_params->dma_addr;
+
+		res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+		if (res)
+			dma_params->channel = res->start;
+		else
+			dma_params->channel = pdata->rx_dma_channel;
+
+		/* dmaengine filter data for DT and non-DT boot */
+		if (pdev->dev.of_node)
+			dma_data->filter_data = "rx";
+		else
+			dma_data->filter_data = &dma_params->channel;
+	}
 
 	if (mcasp->version < MCASP_VERSION_3) {
 		mcasp->fifo_base = DAVINCI_MCASP_V2_AFIFO_BASE;
@@ -1554,18 +1572,6 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
 		mcasp->fifo_base = DAVINCI_MCASP_V3_AFIFO_BASE;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
-	if (res)
-		dma_params->channel = res->start;
-	else
-		dma_params->channel = pdata->rx_dma_channel;
-
-	/* dmaengine filter data for DT and non-DT boot */
-	if (pdev->dev.of_node)
-		dma_data->filter_data = "rx";
-	else
-		dma_data->filter_data = &dma_params->channel;
-
 	dev_set_drvdata(&pdev->dev, mcasp);
 
 	mcasp_reparent_fck(pdev);
-- 
2.2.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared
  2015-02-02 12:38 ` [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared Peter Ujfalusi
@ 2015-02-02 18:32   ` Mark Brown
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2015-02-02 18:32 UTC (permalink / raw)
  To: Peter Ujfalusi; +Cc: alsa-devel, Liam Girdwood, daniel


[-- Attachment #1.1: Type: text/plain, Size: 167 bytes --]

On Mon, Feb 02, 2015 at 02:38:32PM +0200, Peter Ujfalusi wrote:
> On DA830 devices McASP0,1 and 2 shares a single combined interrupt request
> line.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support
  2015-02-02 12:38 ` [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support Peter Ujfalusi
@ 2015-02-02 18:33   ` Mark Brown
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2015-02-02 18:33 UTC (permalink / raw)
  To: Peter Ujfalusi; +Cc: alsa-devel, Liam Girdwood, daniel


[-- Attachment #1.1: Type: text/plain, Size: 293 bytes --]

On Mon, Feb 02, 2015 at 02:38:33PM +0200, Peter Ujfalusi wrote:
> One of the McASP instances in DM646x line of DMSoC only supports DIT mode.
> This means that the given IP does not have support for rx and all the rx
> related resources are missing, like irq and DMA request.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-02-02 18:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-02 12:38 [PATCH 0/2] ASoC: davinci-mcasp: Fixes for 3.20 Peter Ujfalusi
2015-02-02 12:38 ` [PATCH 1/2] ASoC: davicni-mcasp: Mark the common irq line as shared Peter Ujfalusi
2015-02-02 18:32   ` Mark Brown
2015-02-02 12:38 ` [PATCH 2/2] ASoC: davinci-mcasp: Fix DIT only McASP instance support Peter Ujfalusi
2015-02-02 18:33   ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.