-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ACPI: Implement a generic FFH Opregion handler
This registers the FFH OpRegion handler before ACPI tables are loaded. The platform support for the same is checked via Platform-Wide OSPM Capabilities(OSC) before registering the OpRegion handler. It relies on the special context data passed to offset and the length. However the interpretation of the values is platform/architecture specific. This generic handler just passed all the information to the platform/architecture specific callback. It also implements the default callbacks which return as not supported. Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
- Loading branch information
Sudeep Holla
authored and
Rafael J. Wysocki
committed
Nov 14, 2022
1 parent
094226a
commit e81c782
Showing
5 changed files
with
79 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* Author: Sudeep Holla <sudeep.holla@arm.com> | ||
* Copyright 2022 Arm Limited | ||
*/ | ||
#include <linux/kernel.h> | ||
#include <linux/acpi.h> | ||
#include <linux/completion.h> | ||
#include <linux/idr.h> | ||
#include <linux/io.h> | ||
|
||
#include <linux/arm-smccc.h> | ||
|
||
static struct acpi_ffh_info ffh_ctx; | ||
|
||
int __weak acpi_ffh_address_space_arch_setup(void *handler_ctxt, | ||
void **region_ctxt) | ||
{ | ||
return -EOPNOTSUPP; | ||
} | ||
|
||
int __weak acpi_ffh_address_space_arch_handler(acpi_integer *value, | ||
void *region_context) | ||
{ | ||
return -EOPNOTSUPP; | ||
} | ||
|
||
static acpi_status | ||
acpi_ffh_address_space_setup(acpi_handle region_handle, u32 function, | ||
void *handler_context, void **region_context) | ||
{ | ||
return acpi_ffh_address_space_arch_setup(handler_context, | ||
region_context); | ||
} | ||
|
||
static acpi_status | ||
acpi_ffh_address_space_handler(u32 function, acpi_physical_address addr, | ||
u32 bits, acpi_integer *value, | ||
void *handler_context, void *region_context) | ||
{ | ||
return acpi_ffh_address_space_arch_handler(value, region_context); | ||
} | ||
|
||
void __init acpi_init_ffh(void) | ||
{ | ||
acpi_status status; | ||
|
||
status = acpi_install_address_space_handler(ACPI_ROOT_OBJECT, | ||
ACPI_ADR_SPACE_FIXED_HARDWARE, | ||
&acpi_ffh_address_space_handler, | ||
&acpi_ffh_address_space_setup, | ||
&ffh_ctx); | ||
if (ACPI_FAILURE(status)) | ||
pr_alert("OperationRegion handler could not be installed\n"); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters