diff options
author | gs150176 <none@none> | 2008-03-18 11:36:57 -0700 |
---|---|---|
committer | gs150176 <none@none> | 2008-03-18 11:36:57 -0700 |
commit | b3dbb6932199b903c8e4810daf2711d60b89e00d (patch) | |
tree | eb9f30fb3f94911c30e5c42a414e33aad71c4357 /usr/src | |
parent | 349233ace357d403f2fb770a150c3150994ac8ab (diff) | |
download | illumos-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.c | 7 | ||||
-rw-r--r-- | usr/src/uts/i86pc/io/ppm/acpisleep.c | 4 | ||||
-rw-r--r-- | usr/src/uts/i86pc/io/psm/psm_common.c | 20 |
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); } |