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;
 }