static void i2s_delete_secondary_device(struct samsung_i2s_priv *priv)
{
- if (priv->pdev_sec) {
- platform_device_del(priv->pdev_sec);
- priv->pdev_sec = NULL;
- }
+ platform_device_unregister(priv->pdev_sec);
+ priv->pdev_sec = NULL;
}
+
static int samsung_i2s_probe(struct platform_device *pdev)
{
struct i2s_dai *pri_dai, *sec_dai = NULL;
sec_dai->filter, "tx-sec", NULL,
&pdev->dev);
if (ret < 0)
- goto err_disable_clk;
+ goto err_del_sec;
}
if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) {
dev_err(&pdev->dev, "Unable to configure gpio\n");
ret = -EINVAL;
- goto err_disable_clk;
+ goto err_del_sec;
}
dev_set_drvdata(&pdev->dev, priv);
&samsung_i2s_component,
priv->dai_drv, num_dais);
if (ret < 0)
- goto err_disable_clk;
+ goto err_del_sec;
pm_runtime_set_active(&pdev->dev);
pm_runtime_enable(&pdev->dev);
err_disable_pm:
pm_runtime_disable(&pdev->dev);
+err_del_sec:
+ i2s_delete_secondary_device(priv);
err_disable_clk:
clk_disable_unprepare(priv->clk);
- i2s_delete_secondary_device(priv);
return ret;
}
pm_runtime_disable(&pdev->dev);
i2s_unregister_clock_provider(priv);
+ i2s_delete_secondary_device(priv);
clk_disable_unprepare(priv->clk);
+
pm_runtime_put_noidle(&pdev->dev);
- i2s_delete_secondary_device(priv);
return 0;
}