return ret;
 }
 
-static int wm97xx_ac97_remove(struct ac97_codec_device *adev)
+static void wm97xx_ac97_remove(struct ac97_codec_device *adev)
 {
        struct wm97xx_priv *wm97xx = ac97_get_drvdata(adev);
 
        snd_ac97_compat_release(wm97xx->ac97);
-
-       return 0;
 }
 
 static const struct ac97_id wm97xx_ac97_ids[] = {
 
 struct ac97_codec_driver {
        struct device_driver    driver;
        int                     (*probe)(struct ac97_codec_device *);
-       int                     (*remove)(struct ac97_codec_device *);
+       void                    (*remove)(struct ac97_codec_device *dev);
        void                    (*shutdown)(struct ac97_codec_device *);
        const struct ac97_id    *id_table;
 };
 
        if (ret < 0)
                return;
 
-       ret = adrv->remove(adev);
+       adrv->remove(adev);
        pm_runtime_put_noidle(dev);
-       if (ret == 0)
-               ac97_put_disable_clk(adev);
+       ac97_put_disable_clk(adev);
 
        pm_runtime_disable(dev);
 }