> +static int snd_acp5x_suspend(struct device *dev) > +{ > + int ret; > + struct acp5x_dev_data *adata; > + > + adata = dev_get_drvdata(dev); > + ret = acp5x_deinit(adata->acp5x_base); > + if (ret) > + dev_err(dev, "ACP de-init failed\n"); > + else > + dev_dbg(dev, "ACP de-initialized\n"); > + > + return ret; > +} > + > +static int snd_acp5x_resume(struct device *dev) > +{ > + int ret; > + struct acp5x_dev_data *adata; > + > + adata = dev_get_drvdata(dev); > + ret = acp5x_init(adata->acp5x_base); > + if (ret) { > + dev_err(dev, "ACP init failed\n"); > + return ret; > + } > + return 0; > +} > + > +static const struct dev_pm_ops acp5x_pm = { > + .runtime_suspend = snd_acp5x_suspend, > + .runtime_resume = snd_acp5x_resume, > + .resume = snd_acp5x_resume, use SET_SYSTEM_SLEEP_PM_OPS and SET_RUNTIME_PM_OPS? also not clear why you don't have a .suspend here? And to avoid warnings use __maybe_unused for those callbacks when PM is disabled?