ASoC: fsl-ssi: Use generic DMA bindings if possible

There may be some platforms using fsl-ssi that do not have a DMA driver
with generic DMA bindings. So this patch adds support for the generic
DMA bindings, while still accepting the old "fsl,dma-events" property if
"dmas" is not found.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Markus Pargmann 2013-07-27 13:31:54 +02:00 committed by Mark Brown
parent de623ece5b
commit 3a5e517bb2
2 changed files with 16 additions and 8 deletions

View File

@ -51,6 +51,10 @@ Optional properties:
filter the codec stream. This is necessary for some boards filter the codec stream. This is necessary for some boards
where an incompatible codec is connected to this SSI, e.g. where an incompatible codec is connected to this SSI, e.g.
on pca100 and pcm043. on pca100 and pcm043.
- dmas: Generic dma devicetree binding as described in
Documentation/devicetree/bindings/dma/dma.txt.
- dma-names: Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq
is not defined.
Child 'codec' node required properties: Child 'codec' node required properties:
- compatible: Compatible list, contains the name of the codec - compatible: Compatible list, contains the name of the codec

View File

@ -794,15 +794,19 @@ static int fsl_ssi_probe(struct platform_device *pdev)
&ssi_private->filter_data_tx; &ssi_private->filter_data_tx;
ssi_private->dma_params_rx.filter_data = ssi_private->dma_params_rx.filter_data =
&ssi_private->filter_data_rx; &ssi_private->filter_data_rx;
/* if (!of_property_read_bool(pdev->dev.of_node, "dmas") &&
* TODO: This is a temporary solution and should be changed ssi_private->use_dma) {
* to use generic DMA binding later when the helplers get in. /*
*/ * FIXME: This is a temporary solution until all
ret = of_property_read_u32_array(pdev->dev.of_node, * necessary dma drivers support the generic dma
* bindings.
*/
ret = of_property_read_u32_array(pdev->dev.of_node,
"fsl,ssi-dma-events", dma_events, 2); "fsl,ssi-dma-events", dma_events, 2);
if (ret && !ssi_private->use_dma) { if (ret && ssi_private->use_dma) {
dev_err(&pdev->dev, "could not get dma events\n"); dev_err(&pdev->dev, "could not get dma events but fsl-ssi is configured to use DMA\n");
goto error_clk; goto error_clk;
}
} }
shared = of_device_is_compatible(of_get_parent(np), shared = of_device_is_compatible(of_get_parent(np),