static inline void rtc_wake_setup(struct device *dev)
 {
+       if (acpi_disabled)
+               return;
+
        acpi_install_fixed_event_handler(ACPI_EVENT_RTC, rtc_handler, dev);
        /*
         * After the RTC handler is installed, the Fixed_RTC event should
 
        use_acpi_alarm_quirks();
 
-       rtc_wake_setup(dev);
        acpi_rtc_info.wake_on = rtc_wake_on;
        acpi_rtc_info.wake_off = rtc_wake_off;
 
 {
        int irq, ret;
 
+       cmos_wake_setup(&pnp->dev);
+
        if (pnp_port_start(pnp, 0) == 0x70 && !pnp_irq_valid(pnp, 0)) {
                irq = 0;
 #ifdef CONFIG_X86
        if (ret)
                return ret;
 
-       cmos_wake_setup(&pnp->dev);
+       rtc_wake_setup(&pnp->dev);
 
        return 0;
 }
        int irq, ret;
 
        cmos_of_init(pdev);
+       cmos_wake_setup(&pdev->dev);
 
        if (RTC_IOMAPPED)
                resource = platform_get_resource(pdev, IORESOURCE_IO, 0);
        if (ret)
                return ret;
 
-       cmos_wake_setup(&pdev->dev);
+       rtc_wake_setup(&pdev->dev);
 
        return 0;
 }