}
 #endif
 
+#ifdef CONFIG_PM_SLEEP
+static int tpm_tis_resume(struct device *dev)
+{
+       struct tpm_chip *chip = dev_get_drvdata(dev);
+       int ret;
+
+       if (chip->vendor.irq)
+               tpm_tis_reenable_interrupts(chip);
+
+       ret = tpm_pm_resume(dev);
+       if (!ret)
+               tpm_do_selftest(chip);
+
+       return ret;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(tpm_tis_pm, tpm_pm_suspend, tpm_tis_resume);
+
 #ifdef CONFIG_PNP
 static int tpm_tis_pnp_init(struct pnp_dev *pnp_dev,
                                      const struct pnp_device_id *pnp_id)
        return tpm_tis_init(&pnp_dev->dev, start, len, irq);
 }
 
-static int tpm_tis_pnp_suspend(struct pnp_dev *dev, pm_message_t msg)
-{
-       return tpm_pm_suspend(&dev->dev);
-}
-
-static int tpm_tis_pnp_resume(struct pnp_dev *dev)
-{
-       struct tpm_chip *chip = pnp_get_drvdata(dev);
-       int ret;
-
-       if (chip->vendor.irq)
-               tpm_tis_reenable_interrupts(chip);
-
-       ret = tpm_pm_resume(&dev->dev);
-       if (!ret)
-               tpm_do_selftest(chip);
-
-       return ret;
-}
-
 static struct pnp_device_id tpm_pnp_tbl[] = {
        {"PNP0C31", 0},         /* TPM */
        {"ATM1200", 0},         /* Atmel */
        .name = "tpm_tis",
        .id_table = tpm_pnp_tbl,
        .probe = tpm_tis_pnp_init,
-       .suspend = tpm_tis_pnp_suspend,
-       .resume = tpm_tis_pnp_resume,
        .remove = tpm_tis_pnp_remove,
+#ifdef CONFIG_PM_SLEEP
+       .driver = {
+               .pm = &tpm_tis_pm,
+       },
+#endif
 };
 
 #define TIS_HID_USR_IDX sizeof(tpm_pnp_tbl)/sizeof(struct pnp_device_id) -2
 MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe");
 #endif
 
-#ifdef CONFIG_PM_SLEEP
-static int tpm_tis_resume(struct device *dev)
-{
-       struct tpm_chip *chip = dev_get_drvdata(dev);
-
-       if (chip->vendor.irq)
-               tpm_tis_reenable_interrupts(chip);
-
-       return tpm_pm_resume(dev);
-}
-#endif
-
-static SIMPLE_DEV_PM_OPS(tpm_tis_pm, tpm_pm_suspend, tpm_tis_resume);
-
 static struct platform_driver tis_drv = {
        .driver = {
                .name = "tpm_tis",