platform_set_drvdata(pdev, wd);
 
-       return snd_soc_register_component(&pdev->dev, &au1xpsc_i2s_component,
-                                         &wd->dai_drv, 1);
+       return devm_snd_soc_register_component(&pdev->dev,
+                               &au1xpsc_i2s_component, &wd->dai_drv, 1);
 }
 
 static int au1xpsc_i2s_drvremove(struct platform_device *pdev)
 {
        struct au1xpsc_audio_data *wd = platform_get_drvdata(pdev);
 
-       snd_soc_unregister_component(&pdev->dev);
-
        __raw_writel(0, I2S_CFG(wd));
        wmb(); /* drain writebuffer */
        __raw_writel(PSC_CTRL_DISABLE, PSC_CTRL(wd));