diff options
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/acpica/Osd/OsdMemory.c | 10 | ||||
-rw-r--r-- | sys/dev/acpica/Osd/OsdTable.c | 8 | ||||
-rw-r--r-- | sys/dev/acpica/acpi.c | 7 |
3 files changed, 21 insertions, 4 deletions
diff --git a/sys/dev/acpica/Osd/OsdMemory.c b/sys/dev/acpica/Osd/OsdMemory.c index 615c4b5..b806642 100644 --- a/sys/dev/acpica/Osd/OsdMemory.c +++ b/sys/dev/acpica/Osd/OsdMemory.c @@ -87,7 +87,7 @@ AcpiOsWritable (void *Pointer, ACPI_SIZE Length) } ACPI_STATUS -AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 *Value, UINT32 Width) +AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT32 Width) { void *LogicalAddress; @@ -105,6 +105,9 @@ AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 *Value, UINT32 Width) case 32: *Value = *(volatile uint32_t *)LogicalAddress; break; + case 64: + *Value = *(volatile uint64_t *)LogicalAddress; + break; } pmap_unmapdev((vm_offset_t)LogicalAddress, Width / 8); @@ -113,7 +116,7 @@ AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 *Value, UINT32 Width) } ACPI_STATUS -AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 Value, UINT32 Width) +AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT32 Width) { void *LogicalAddress; @@ -131,6 +134,9 @@ AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 Value, UINT32 Width) case 32: *(volatile uint32_t *)LogicalAddress = Value; break; + case 64: + *(volatile uint64_t *)LogicalAddress = Value; + break; } pmap_unmapdev((vm_offset_t)LogicalAddress, Width / 8); diff --git a/sys/dev/acpica/Osd/OsdTable.c b/sys/dev/acpica/Osd/OsdTable.c index def88c6..da220e5 100644 --- a/sys/dev/acpica/Osd/OsdTable.c +++ b/sys/dev/acpica/Osd/OsdTable.c @@ -96,3 +96,11 @@ AcpiOsTableOverride(ACPI_TABLE_HEADER *ExistingTable, return (AE_OK); } + +ACPI_STATUS +AcpiOsPhysicalTableOverride(ACPI_TABLE_HEADER *ExistingTable, + ACPI_PHYSICAL_ADDRESS *NewAddress, UINT32 *NewTableLength) +{ + + return (AE_SUPPORT); +} diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index c613461..fc5fec1 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -2715,7 +2715,8 @@ acpi_EnterSleepState(struct acpi_softc *sc, int state) DELAY(sc->acpi_sleep_delay * 1000000); if (state != ACPI_STATE_S1) { - acpi_sleep_machdep(sc, state); + if (acpi_sleep_machdep(sc, state)) + goto backout; /* Re-enable ACPI hardware on wakeup from sleep state 4. */ if (state == ACPI_STATE_S4) @@ -2740,8 +2741,10 @@ backout: acpi_wake_prep_walk(state); sc->acpi_sstate = ACPI_STATE_S0; } - if (slp_state >= ACPI_SS_SLP_PREP) + if (slp_state >= ACPI_SS_SLP_PREP) { + AcpiLeaveSleepStatePrep(state); AcpiLeaveSleepState(state); + } if (slp_state >= ACPI_SS_DEV_SUSPEND) DEVICE_RESUME(root_bus); if (slp_state >= ACPI_SS_SLEPT) { |