summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorgs150176 <none@none>2008-03-18 11:36:57 -0700
committergs150176 <none@none>2008-03-18 11:36:57 -0700
commitb3dbb6932199b903c8e4810daf2711d60b89e00d (patch)
treeeb9f30fb3f94911c30e5c42a414e33aad71c4357 /usr/src
parent349233ace357d403f2fb770a150c3150994ac8ab (diff)
downloadillumos-joyent-b3dbb6932199b903c8e4810daf2711d60b89e00d.tar.gz
6653323 acpi_rtc_wake does not work on Toshiba M5/M8/M9
6671779 pcplusmp warning messages after S/R on Toshiba M5/M8/M9
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/i86pc/io/ppm/acpippm.c7
-rw-r--r--usr/src/uts/i86pc/io/ppm/acpisleep.c4
-rw-r--r--usr/src/uts/i86pc/io/psm/psm_common.c20
3 files changed, 20 insertions, 11 deletions
diff --git a/usr/src/uts/i86pc/io/ppm/acpippm.c b/usr/src/uts/i86pc/io/ppm/acpippm.c
index a8e5019e50..2f1e50ee55 100644
--- a/usr/src/uts/i86pc/io/ppm/acpippm.c
+++ b/usr/src/uts/i86pc/io/ppm/acpippm.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -51,6 +51,7 @@
* acpippm driver is loaded because it is listed as a platform driver
* It is initially configured as a pseudo driver.
*/
+extern void pc_tod_set_rtc_offsets(FADT_DESCRIPTOR *);
/*
* Configuration Function prototypes and data structures
@@ -104,7 +105,7 @@ extern struct mod_ops mod_driverops;
static struct modldrv modldrv = {
&mod_driverops,
- "ACPI ppm driver v1.8",
+ "ACPI ppm driver v1.9",
&appm_ops,
};
@@ -252,6 +253,8 @@ appm_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
if (rv != DDI_SUCCESS)
goto doerrs;
+ pc_tod_set_rtc_offsets(AcpiGbl_FADT); /* init the RTC offsets */
+
return (rv);
doerrs:
diff --git a/usr/src/uts/i86pc/io/ppm/acpisleep.c b/usr/src/uts/i86pc/io/ppm/acpisleep.c
index f6a6898224..66b8513be1 100644
--- a/usr/src/uts/i86pc/io/ppm/acpisleep.c
+++ b/usr/src/uts/i86pc/io/ppm/acpisleep.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -125,6 +125,8 @@ acpi_enter_sleepstate(s3a_t *s3ap)
PMD(PMD_SX, ("Can't EnableEvent(POWER_BUTTON)\n"))
}
if (acpi_rtc_wake > 0) {
+ (void) AcpiSetRegister(ACPI_BITREG_RT_CLOCK_STATUS, 1,
+ ACPI_MTX_DO_NOT_LOCK); /* clear the RTC bit first */
PT(PT_RTCW);
if (AcpiEnableEvent(ACPI_EVENT_RTC, 0) != AE_OK) {
PT(PT_RTCW_FAIL);
diff --git a/usr/src/uts/i86pc/io/psm/psm_common.c b/usr/src/uts/i86pc/io/psm/psm_common.c
index bfbcfcb1be..676a545b14 100644
--- a/usr/src/uts/i86pc/io/psm/psm_common.c
+++ b/usr/src/uts/i86pc/io/psm/psm_common.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -940,13 +940,17 @@ acpi_restore_link_devices(void)
mutex_enter(&acpi_irq_cache_mutex);
for (irqcachep = irq_cache_table, i = 0; i < irq_cache_valid;
irqcachep++, i++) {
- /* only field used from psmlnk in set_irq is lnkobj */
- psmlnk.lnkobj = irqcachep->lnkobj;
- status = acpi_set_irq_resource(&psmlnk, irqcachep->irq);
- /* warn if set_irq failed; soldier on */
- if (status != ACPI_PSM_SUCCESS)
- cmn_err(CE_WARN, "restore_link failed for IRQ 0x%x\n",
- irqcachep->irq);
+ if (irqcachep->lnkobj != NULL) {
+ /* only field used from psmlnk in set_irq is lnkobj */
+ psmlnk.lnkobj = irqcachep->lnkobj;
+ status = acpi_set_irq_resource(&psmlnk, irqcachep->irq);
+ /* warn if set_irq failed; soldier on */
+ if (status != ACPI_PSM_SUCCESS)
+ cmn_err(CE_WARN, "Could not restore interrupt "
+ "link device for IRQ 0x%x: Devices using "
+ "this IRQ may no longer function properly."
+ "\n", irqcachep->irq);
+ }
}
mutex_exit(&acpi_irq_cache_mutex);
}