cmos_do_remove(&pnp->dev);
 }
 
-#ifdef CONFIG_PM
-
-static int cmos_pnp_suspend(struct pnp_dev *pnp, pm_message_t mesg)
-{
-       return cmos_suspend(&pnp->dev);
-}
-
-static int cmos_pnp_resume(struct pnp_dev *pnp)
-{
-       return cmos_resume(&pnp->dev);
-}
-
-#else
-#define        cmos_pnp_suspend        NULL
-#define        cmos_pnp_resume         NULL
-#endif
-
 static void cmos_pnp_shutdown(struct pnp_dev *pnp)
 {
        if (system_state == SYSTEM_POWER_OFF && !cmos_poweroff(&pnp->dev))
 
        /* flag ensures resume() gets called, and stops syslog spam */
        .flags          = PNP_DRIVER_RES_DO_NOT_CHANGE,
-       .suspend        = cmos_pnp_suspend,
-       .resume         = cmos_pnp_resume,
+#ifdef CONFIG_PM_SLEEP
+       .driver         = {
+                       .pm = &cmos_pm_ops,
+       },
+#endif
 };
 
 #endif /* CONFIG_PNP */