diff options
Diffstat (limited to 'sound/soc/kirkwood/kirkwood-i2s.c')
-rw-r--r-- | sound/soc/kirkwood/kirkwood-i2s.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sound/soc/kirkwood/kirkwood-i2s.c b/sound/soc/kirkwood/kirkwood-i2s.c index 3cb9aa4299d3..fa4556750451 100644 --- a/sound/soc/kirkwood/kirkwood-i2s.c +++ b/sound/soc/kirkwood/kirkwood-i2s.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/mbus.h> | 18 | #include <linux/mbus.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/clk.h> | ||
20 | #include <sound/pcm.h> | 21 | #include <sound/pcm.h> |
21 | #include <sound/pcm_params.h> | 22 | #include <sound/pcm_params.h> |
22 | #include <sound/soc.h> | 23 | #include <sound/soc.h> |
@@ -449,6 +450,14 @@ static __devinit int kirkwood_i2s_dev_probe(struct platform_device *pdev) | |||
449 | 450 | ||
450 | priv->burst = data->burst; | 451 | priv->burst = data->burst; |
451 | 452 | ||
453 | priv->clk = clk_get(&pdev->dev, NULL); | ||
454 | if (IS_ERR(priv->clk)) { | ||
455 | dev_err(&pdev->dev, "no clock\n"); | ||
456 | err = PTR_ERR(priv->clk); | ||
457 | goto err_ioremap; | ||
458 | } | ||
459 | clk_prepare_enable(priv->clk); | ||
460 | |||
452 | return snd_soc_register_dai(&pdev->dev, &kirkwood_i2s_dai); | 461 | return snd_soc_register_dai(&pdev->dev, &kirkwood_i2s_dai); |
453 | 462 | ||
454 | err_ioremap: | 463 | err_ioremap: |
@@ -466,6 +475,10 @@ static __devexit int kirkwood_i2s_dev_remove(struct platform_device *pdev) | |||
466 | struct kirkwood_dma_data *priv = dev_get_drvdata(&pdev->dev); | 475 | struct kirkwood_dma_data *priv = dev_get_drvdata(&pdev->dev); |
467 | 476 | ||
468 | snd_soc_unregister_dai(&pdev->dev); | 477 | snd_soc_unregister_dai(&pdev->dev); |
478 | |||
479 | clk_disable_unprepare(priv->clk); | ||
480 | clk_put(priv->clk); | ||
481 | |||
469 | iounmap(priv->io); | 482 | iounmap(priv->io); |
470 | release_mem_region(priv->mem->start, SZ_16K); | 483 | release_mem_region(priv->mem->start, SZ_16K); |
471 | kfree(priv); | 484 | kfree(priv); |