Commit 762f9b18 authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branch 'asoc/fix/fsl' into asoc-linus

parents 61e6cfa8 5a6e19be
...@@ -936,7 +936,7 @@ static int fsl_ssi_probe(struct platform_device *pdev) ...@@ -936,7 +936,7 @@ static int fsl_ssi_probe(struct platform_device *pdev)
ssi_private->ssi_phys = res.start; ssi_private->ssi_phys = res.start;
ssi_private->irq = irq_of_parse_and_map(np, 0); ssi_private->irq = irq_of_parse_and_map(np, 0);
if (ssi_private->irq == NO_IRQ) { if (ssi_private->irq == 0) {
dev_err(&pdev->dev, "no irq for node %s\n", np->full_name); dev_err(&pdev->dev, "no irq for node %s\n", np->full_name);
return -ENXIO; return -ENXIO;
} }
......
...@@ -112,7 +112,7 @@ static int imx_mc13783_probe(struct platform_device *pdev) ...@@ -112,7 +112,7 @@ static int imx_mc13783_probe(struct platform_device *pdev)
return ret; return ret;
} }
if (machine_is_mx31_3ds()) { if (machine_is_mx31_3ds() || machine_is_mx31moboard()) {
imx_audmux_v2_configure_port(MX31_AUDMUX_PORT4_SSI_PINS_4, imx_audmux_v2_configure_port(MX31_AUDMUX_PORT4_SSI_PINS_4,
IMX_AUDMUX_V2_PTCR_SYN, IMX_AUDMUX_V2_PTCR_SYN,
IMX_AUDMUX_V2_PDCR_RXDSEL(MX31_AUDMUX_PORT1_SSI0) | IMX_AUDMUX_V2_PDCR_RXDSEL(MX31_AUDMUX_PORT1_SSI0) |
......
...@@ -600,19 +600,17 @@ static int imx_ssi_probe(struct platform_device *pdev) ...@@ -600,19 +600,17 @@ static int imx_ssi_probe(struct platform_device *pdev)
ssi->fiq_params.dma_params_rx = &ssi->dma_params_rx; ssi->fiq_params.dma_params_rx = &ssi->dma_params_rx;
ssi->fiq_params.dma_params_tx = &ssi->dma_params_tx; ssi->fiq_params.dma_params_tx = &ssi->dma_params_tx;
ret = imx_pcm_fiq_init(pdev, &ssi->fiq_params); ssi->fiq_init = imx_pcm_fiq_init(pdev, &ssi->fiq_params);
if (ret) ssi->dma_init = imx_pcm_dma_init(pdev);
goto failed_pcm_fiq;
ret = imx_pcm_dma_init(pdev); if (ssi->fiq_init && ssi->dma_init) {
if (ret) ret = ssi->fiq_init;
goto failed_pcm_dma; goto failed_pcm;
}
return 0; return 0;
failed_pcm_dma: failed_pcm:
imx_pcm_fiq_exit(pdev);
failed_pcm_fiq:
snd_soc_unregister_component(&pdev->dev); snd_soc_unregister_component(&pdev->dev);
failed_register: failed_register:
release_mem_region(res->start, resource_size(res)); release_mem_region(res->start, resource_size(res));
...@@ -628,7 +626,10 @@ static int imx_ssi_remove(struct platform_device *pdev) ...@@ -628,7 +626,10 @@ static int imx_ssi_remove(struct platform_device *pdev)
struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
struct imx_ssi *ssi = platform_get_drvdata(pdev); struct imx_ssi *ssi = platform_get_drvdata(pdev);
if (!ssi->dma_init)
imx_pcm_dma_exit(pdev); imx_pcm_dma_exit(pdev);
if (!ssi->fiq_init)
imx_pcm_fiq_exit(pdev); imx_pcm_fiq_exit(pdev);
snd_soc_unregister_component(&pdev->dev); snd_soc_unregister_component(&pdev->dev);
......
...@@ -211,6 +211,8 @@ struct imx_ssi { ...@@ -211,6 +211,8 @@ struct imx_ssi {
struct imx_dma_data filter_data_rx; struct imx_dma_data filter_data_rx;
struct imx_pcm_fiq_params fiq_params; struct imx_pcm_fiq_params fiq_params;
int fiq_init;
int dma_init;
int enabled; int enabled;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment