--- zzzz-none-000/linux-2.6.39.4/drivers/rtc/rtc-cmos.c 2011-08-03 19:43:28.000000000 +0000 +++ puma6-atom-6490-729/linux-2.6.39.4/drivers/rtc/rtc-cmos.c 2021-11-10 13:38:15.000000000 +0000 @@ -143,6 +143,17 @@ return 0; } +#ifdef CONFIG_ARCH_GEN3 +static inline void hpet_enable_legacy_int(void) +{ + return; +} +static inline void hpet_disable_legacy_int(void) +{ + return; +} +#endif + #endif /*----------------------------------------------------------------*/ @@ -307,7 +318,6 @@ rtc_control |= mask; CMOS_WRITE(rtc_control, RTC_CONTROL); hpet_set_rtc_irq_bit(mask); - cmos_checkintr(cmos, rtc_control); } @@ -819,7 +829,9 @@ else enable_irq_wake(cmos->irq); } - +#ifdef CONFIG_ARCH_GEN3 + hpet_disable_legacy_int(); +#endif pr_debug("%s: suspend%s, ctrl %02x\n", dev_name(&cmos_rtc.rtc->dev), (tmp & RTC_AIE) ? ", alarm may wake" : "", @@ -844,6 +856,9 @@ struct cmos_rtc *cmos = dev_get_drvdata(dev); unsigned char tmp = cmos->suspend_ctrl; +#ifdef CONFIG_ARCH_GEN3 + hpet_enable_legacy_int(); +#endif /* re-enable any irqs previously active */ if (tmp & RTC_IRQMASK) { unsigned char mask;