ASoC: rsnd: call clk_prepare/unprepare() in probe/remove
[deliverable/linux.git] / sound / soc / sh / rcar / ssi.c
index 9e7b627c08e2256dbe09acd063432b7b3b7c1107..f7cb1fd635a0eb32e9e17f82e411356fea3532d7 100644 (file)
@@ -697,7 +697,7 @@ int rsnd_ssi_probe(struct platform_device *pdev,
        struct clk *clk;
        struct rsnd_ssi *ssi;
        char name[RSND_SSI_NAME_SIZE];
-       int i, nr;
+       int i, nr, ret;
 
        rsnd_of_parse_ssi(pdev, of_data, priv);
 
@@ -732,10 +732,23 @@ int rsnd_ssi_probe(struct platform_device *pdev,
                else if (rsnd_ssi_pio_available(ssi))
                        ops = &rsnd_ssi_pio_ops;
 
-               rsnd_mod_init(&ssi->mod, ops, clk, RSND_MOD_SSI, i);
+               ret = rsnd_mod_init(&ssi->mod, ops, clk, RSND_MOD_SSI, i);
+               if (ret)
+                       return ret;
 
                rsnd_ssi_parent_clk_setup(priv, ssi);
        }
 
        return 0;
 }
+
+void rsnd_ssi_remove(struct platform_device *pdev,
+                    struct rsnd_priv *priv)
+{
+       struct rsnd_ssi *ssi;
+       int i;
+
+       for_each_rsnd_ssi(ssi, priv, i) {
+               rsnd_mod_quit(&ssi->mod);
+       }
+}
This page took 0.047176 seconds and 5 git commands to generate.