提交 1d82980c 编写于 作者: B Bob Moore 提交者: Rafael J. Wysocki

ACPICA: Make ACPI Power Management Timer (PM Timer) optional.

PM Timer is now optional.
This support is already in Windows8 and "SHOULD" come out in ACPI 5.0A
(if all goes well).

The change doesn't affect Linux directly, because it does not rely
on the presence of the PM timer.
Signed-off-by: NBob Moore <robert.moore@intel.com>
Signed-off-by: NLv Zheng <lv.zheng@intel.com>
Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
上级 2641f540
...@@ -100,8 +100,13 @@ acpi_status acpi_get_timer(u32 * ticks) ...@@ -100,8 +100,13 @@ acpi_status acpi_get_timer(u32 * ticks)
return_ACPI_STATUS(AE_BAD_PARAMETER); 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); return_ACPI_STATUS(status);
} }
...@@ -148,6 +153,12 @@ acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed) ...@@ -148,6 +153,12 @@ acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed)
return_ACPI_STATUS(AE_BAD_PARAMETER); 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: * Compute Tick Delta:
* Handle (max one) timer rollovers on 24-bit versus 32-bit timers. * Handle (max one) timer rollovers on 24-bit versus 32-bit timers.
......
...@@ -117,7 +117,7 @@ static struct acpi_fadt_info fadt_info_table[] = { ...@@ -117,7 +117,7 @@ static struct acpi_fadt_info fadt_info_table[] = {
ACPI_FADT_OFFSET(pm_timer_block), ACPI_FADT_OFFSET(pm_timer_block),
ACPI_FADT_OFFSET(pm_timer_length), ACPI_FADT_OFFSET(pm_timer_length),
ACPI_PM_TIMER_WIDTH, ACPI_PM_TIMER_WIDTH,
ACPI_FADT_REQUIRED}, ACPI_FADT_SEPARATE_LENGTH}, /* ACPI 5.0A: Timer is optional */
{"Gpe0Block", {"Gpe0Block",
ACPI_FADT_OFFSET(xgpe0_block), ACPI_FADT_OFFSET(xgpe0_block),
...@@ -574,7 +574,7 @@ static void acpi_tb_validate_fadt(void) ...@@ -574,7 +574,7 @@ static void acpi_tb_validate_fadt(void)
if (fadt_info_table[i].type & ACPI_FADT_REQUIRED) { if (fadt_info_table[i].type & ACPI_FADT_REQUIRED) {
/* /*
* Field is required (Pm1a_event, Pm1a_control, pm_timer). * Field is required (Pm1a_event, Pm1a_control).
* Both the address and length must be non-zero. * Both the address and length must be non-zero.
*/ */
if (!address64->address || !length) { if (!address64->address || !length) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册