summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/acpica/Osd/OsdMemory.c10
-rw-r--r--sys/dev/acpica/Osd/OsdTable.c8
-rw-r--r--sys/dev/acpica/acpi.c7
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) {
OpenPOWER on IntegriCloud