}
 
        /* Request the alarm IRQ */
-       rc = request_any_context_irq(rtc_dd->rtc_alarm_irq,
-                                    pm8xxx_alarm_trigger, IRQF_TRIGGER_RISING,
-                                    "pm8xxx_rtc_alarm", rtc_dd);
+       rc = devm_request_any_context_irq(&pdev->dev, rtc_dd->rtc_alarm_irq,
+                                         pm8xxx_alarm_trigger,
+                                         IRQF_TRIGGER_RISING,
+                                         "pm8xxx_rtc_alarm", rtc_dd);
        if (rc < 0) {
                dev_err(&pdev->dev, "Request IRQ failed (%d)\n", rc);
                return rc;
        return 0;
 }
 
-static int pm8xxx_rtc_remove(struct platform_device *pdev)
-{
-       struct pm8xxx_rtc *rtc_dd = platform_get_drvdata(pdev);
-
-       device_init_wakeup(&pdev->dev, 0);
-       free_irq(rtc_dd->rtc_alarm_irq, rtc_dd);
-
-       return 0;
-}
-
 #ifdef CONFIG_PM_SLEEP
 static int pm8xxx_rtc_resume(struct device *dev)
 {
 
 static struct platform_driver pm8xxx_rtc_driver = {
        .probe          = pm8xxx_rtc_probe,
-       .remove         = pm8xxx_rtc_remove,
        .driver = {
                .name   = PM8XXX_RTC_DEV_NAME,
                .owner  = THIS_MODULE,