|
@@ -100,8 +100,13 @@ acpi_status acpi_get_timer(u32 * ticks)
|
|
|
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
|
|
}
|
|
|
|
|
|
- status = acpi_hw_read(ticks, &acpi_gbl_FADT.xpm_timer_block);
|
|
|
+ /* ACPI 5.0A: PM Timer is optional */
|
|
|
+
|
|
|
+ if (!acpi_gbl_FADT.xpm_timer_block.address) {
|
|
|
+ return_ACPI_STATUS(AE_SUPPORT);
|
|
|
+ }
|
|
|
|
|
|
+ status = acpi_hw_read(ticks, &acpi_gbl_FADT.xpm_timer_block);
|
|
|
return_ACPI_STATUS(status);
|
|
|
}
|
|
|
|
|
@@ -148,6 +153,12 @@ acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed)
|
|
|
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
|
|
}
|
|
|
|
|
|
+ /* ACPI 5.0A: PM Timer is optional */
|
|
|
+
|
|
|
+ if (!acpi_gbl_FADT.xpm_timer_block.address) {
|
|
|
+ return_ACPI_STATUS(AE_SUPPORT);
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Compute Tick Delta:
|
|
|
* Handle (max one) timer rollovers on 24-bit versus 32-bit timers.
|