diff --git a/drivers/acpi/glue.c b/drivers/acpi/glue.c index 83768e9cf296..41427a41f620 100644 --- a/drivers/acpi/glue.c +++ b/drivers/acpi/glue.c @@ -316,13 +316,20 @@ static int __init acpi_rtc_init(void) rtc_info.wake_on = rtc_wake_on; rtc_info.wake_off = rtc_wake_off; + /* workaround bug in some ACPI tables */ + if (acpi_gbl_FADT.month_alarm && !acpi_gbl_FADT.day_alarm) { + DBG("bogus FADT month_alarm\n"); + acpi_gbl_FADT.month_alarm = 0; + } + rtc_info.rtc_day_alarm = acpi_gbl_FADT.day_alarm; rtc_info.rtc_mon_alarm = acpi_gbl_FADT.month_alarm; rtc_info.rtc_century = acpi_gbl_FADT.century; /* NOTE: S4_RTC_WAKE is NOT currently useful to Linux */ if (acpi_gbl_FADT.flags & ACPI_FADT_S4_RTC_WAKE) - printk("ACPI: RTC can wake from S4\n"); + printk(PREFIX "RTC can wake from S4\n"); + dev->platform_data = &rtc_info; @@ -331,7 +338,7 @@ static int __init acpi_rtc_init(void) put_device(dev); } else - pr_debug("ACPI: RTC unavailable?\n"); + DBG("RTC unavailable?\n"); return 0; } /* do this between RTC subsys_initcall() and rtc_cmos driver_initcall() */