diff options
author | Markus Pargmann <mpa@pengutronix.de> | 2014-04-28 06:54:46 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-05-20 18:02:38 -0400 |
commit | ed0f1604e93c686d8151c5a9bcbe36a2986caf40 (patch) | |
tree | 5ee53016c7f40bf86efd96b2d77b3eaf4328b678 | |
parent | 49da09e26577702516e946ecd537f50b87533315 (diff) |
ASoC: fsl-ssi: Remove useless DMA code
Simplify dma DT property handling. fsl,ssi-dma-events is not used
anymore. It passes invalid data to imx_pcm_dma_params_init_data() which
copies some data into an imx dma struct. This struct is never used in
imx-dma or imx-sdma because of generic OF DMA handling. The
"fsl,ssi-dma-events" is not used anywhere in dts files.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 40 |
1 files changed, 3 insertions, 37 deletions
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 418c64629ee7..8072926d605a 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
@@ -168,8 +168,6 @@ struct fsl_ssi_private { | |||
168 | struct clk *clk; | 168 | struct clk *clk; |
169 | struct snd_dmaengine_dai_dma_data dma_params_tx; | 169 | struct snd_dmaengine_dai_dma_data dma_params_tx; |
170 | struct snd_dmaengine_dai_dma_data dma_params_rx; | 170 | struct snd_dmaengine_dai_dma_data dma_params_rx; |
171 | struct imx_dma_data filter_data_tx; | ||
172 | struct imx_dma_data filter_data_rx; | ||
173 | struct imx_pcm_fiq_params fiq_params; | 171 | struct imx_pcm_fiq_params fiq_params; |
174 | /* Register values for rx/tx configuration */ | 172 | /* Register values for rx/tx configuration */ |
175 | struct fsl_ssi_rxtx_reg_val rxtx_reg_val; | 173 | struct fsl_ssi_rxtx_reg_val rxtx_reg_val; |
@@ -996,8 +994,7 @@ static int fsl_ssi_imx_probe(struct platform_device *pdev, | |||
996 | struct fsl_ssi_private *ssi_private) | 994 | struct fsl_ssi_private *ssi_private) |
997 | { | 995 | { |
998 | struct device_node *np = pdev->dev.of_node; | 996 | struct device_node *np = pdev->dev.of_node; |
999 | u32 dma_events[2], dmas[4]; | 997 | u32 dmas[4]; |
1000 | bool shared; | ||
1001 | int ret; | 998 | int ret; |
1002 | 999 | ||
1003 | ssi_private->clk = devm_clk_get(&pdev->dev, NULL); | 1000 | ssi_private->clk = devm_clk_get(&pdev->dev, NULL); |
@@ -1033,26 +1030,9 @@ static int fsl_ssi_imx_probe(struct platform_device *pdev, | |||
1033 | offsetof(struct ccsr_ssi, stx0); | 1030 | offsetof(struct ccsr_ssi, stx0); |
1034 | ssi_private->dma_params_rx.addr = ssi_private->ssi_phys + | 1031 | ssi_private->dma_params_rx.addr = ssi_private->ssi_phys + |
1035 | offsetof(struct ccsr_ssi, srx0); | 1032 | offsetof(struct ccsr_ssi, srx0); |
1036 | ssi_private->dma_params_tx.filter_data = &ssi_private->filter_data_tx; | ||
1037 | ssi_private->dma_params_rx.filter_data = &ssi_private->filter_data_rx; | ||
1038 | 1033 | ||
1039 | if (!of_property_read_bool(pdev->dev.of_node, "dmas") && | 1034 | ret = !of_property_read_u32_array(np, "dmas", dmas, 4); |
1040 | ssi_private->use_dma) { | 1035 | if (ssi_private->use_dma && !ret && dmas[2] == IMX_DMATYPE_SSI_DUAL) { |
1041 | /* | ||
1042 | * FIXME: This is a temporary solution until all | ||
1043 | * necessary dma drivers support the generic dma | ||
1044 | * bindings. | ||
1045 | */ | ||
1046 | ret = of_property_read_u32_array(pdev->dev.of_node, | ||
1047 | "fsl,ssi-dma-events", dma_events, 2); | ||
1048 | if (ret && ssi_private->use_dma) { | ||
1049 | dev_err(&pdev->dev, "could not get dma events but fsl-ssi is configured to use DMA\n"); | ||
1050 | goto error_dma_events; | ||
1051 | } | ||
1052 | } | ||
1053 | /* Should this be merge with the above? */ | ||
1054 | if (!of_property_read_u32_array(pdev->dev.of_node, "dmas", dmas, 4) | ||
1055 | && dmas[2] == IMX_DMATYPE_SSI_DUAL) { | ||
1056 | ssi_private->use_dual_fifo = true; | 1036 | ssi_private->use_dual_fifo = true; |
1057 | /* When using dual fifo mode, we need to keep watermark | 1037 | /* When using dual fifo mode, we need to keep watermark |
1058 | * as even numbers due to dma script limitation. | 1038 | * as even numbers due to dma script limitation. |
@@ -1061,21 +1041,7 @@ static int fsl_ssi_imx_probe(struct platform_device *pdev, | |||
1061 | ssi_private->dma_params_rx.maxburst &= ~0x1; | 1041 | ssi_private->dma_params_rx.maxburst &= ~0x1; |
1062 | } | 1042 | } |
1063 | 1043 | ||
1064 | shared = of_device_is_compatible(of_get_parent(np), "fsl,spba-bus"); | ||
1065 | |||
1066 | imx_pcm_dma_params_init_data(&ssi_private->filter_data_tx, | ||
1067 | dma_events[0], shared ? IMX_DMATYPE_SSI_SP : IMX_DMATYPE_SSI); | ||
1068 | imx_pcm_dma_params_init_data(&ssi_private->filter_data_rx, | ||
1069 | dma_events[1], shared ? IMX_DMATYPE_SSI_SP : IMX_DMATYPE_SSI); | ||
1070 | |||
1071 | return 0; | 1044 | return 0; |
1072 | |||
1073 | error_dma_events: | ||
1074 | if (!IS_ERR(ssi_private->baudclk)) | ||
1075 | clk_disable_unprepare(ssi_private->baudclk); | ||
1076 | clk_disable_unprepare(ssi_private->clk); | ||
1077 | |||
1078 | return ret; | ||
1079 | } | 1045 | } |
1080 | 1046 | ||
1081 | static void fsl_ssi_imx_clean(struct platform_device *pdev, | 1047 | static void fsl_ssi_imx_clean(struct platform_device *pdev, |