OSDN Git Service

Merge remote-tracking branch 'asoc/fix/fsl' into asoc-devm
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / sound / soc / fsl / imx-sgtl5000.c
index 78f86d8..6f4bdc8 100644 (file)
@@ -62,7 +62,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
        struct device_node *ssi_np, *codec_np;
        struct platform_device *ssi_pdev;
        struct i2c_client *codec_dev;
-       struct imx_sgtl5000_data *data;
+       struct imx_sgtl5000_data *data = NULL;
        int int_port, ext_port;
        int ret;
 
@@ -128,7 +128,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
                goto fail;
        }
 
-       data->codec_clk = devm_clk_get(&codec_dev->dev, NULL);
+       data->codec_clk = clk_get(&codec_dev->dev, NULL);
        if (IS_ERR(data->codec_clk)) {
                ret = PTR_ERR(data->codec_clk);
                goto fail;
@@ -172,6 +172,8 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
        return 0;
 
 fail:
+       if (data && !IS_ERR(data->codec_clk))
+               clk_put(data->codec_clk);
        if (ssi_np)
                of_node_put(ssi_np);
        if (codec_np)
@@ -180,6 +182,15 @@ fail:
        return ret;
 }
 
+static int imx_sgtl5000_remove(struct platform_device *pdev)
+{
+       struct imx_sgtl5000_data *data = platform_get_drvdata(pdev);
+
+       clk_put(data->codec_clk);
+
+       return 0;
+}
+
 static const struct of_device_id imx_sgtl5000_dt_ids[] = {
        { .compatible = "fsl,imx-audio-sgtl5000", },
        { /* sentinel */ }