Skip to content

Commit

Permalink
ASoC: tegra-ac97: Do common and clock init prior to component registr…
Browse files Browse the repository at this point in the history
…ation

Otherwise we may instantiate and hence have something try to access the
device while it is still completing initialisation.

Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Mark Brown committed Jun 27, 2013
1 parent 2def251 commit 65fb3e7
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions sound/soc/tegra/tegra20_ac97.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,23 +395,9 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev)
ac97->capture_dma_data.maxburst = 4;
ac97->capture_dma_data.slave_id = of_dma[0];

ret = snd_soc_register_component(&pdev->dev, &tegra20_ac97_component,
&tegra20_ac97_dai, 1);
if (ret) {
dev_err(&pdev->dev, "Could not register DAI: %d\n", ret);
ret = -ENOMEM;
goto err_clk_put;
}

ret = tegra_pcm_platform_register(&pdev->dev);
if (ret) {
dev_err(&pdev->dev, "Could not register PCM: %d\n", ret);
goto err_unregister_component;
}

ret = tegra_asoc_utils_init(&ac97->util_data, &pdev->dev);
if (ret)
goto err_unregister_pcm;
goto err_clk_put;

ret = tegra_asoc_utils_set_ac97_rate(&ac97->util_data);
if (ret)
Expand All @@ -423,17 +409,31 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev)
goto err_asoc_utils_fini;
}

ret = snd_soc_register_component(&pdev->dev, &tegra20_ac97_component,
&tegra20_ac97_dai, 1);
if (ret) {
dev_err(&pdev->dev, "Could not register DAI: %d\n", ret);
ret = -ENOMEM;
goto err_asoc_utils_fini;
}

ret = tegra_pcm_platform_register(&pdev->dev);
if (ret) {
dev_err(&pdev->dev, "Could not register PCM: %d\n", ret);
goto err_unregister_component;
}

/* XXX: crufty ASoC AC97 API - only one AC97 codec allowed */
workdata = ac97;

return 0;

err_asoc_utils_fini:
tegra_asoc_utils_fini(&ac97->util_data);
err_unregister_pcm:
tegra_pcm_platform_unregister(&pdev->dev);
err_unregister_component:
snd_soc_unregister_component(&pdev->dev);
err_asoc_utils_fini:
tegra_asoc_utils_fini(&ac97->util_data);
err_clk_put:
err:
return ret;
Expand Down

0 comments on commit 65fb3e7

Please sign in to comment.