From: Hanjun Guo [mailto:hanjun.guo@linaro.org] Sent: Sunday, September 22, 2013 11:27 AM
On 2013-9-19 10:37, Moore, Robert wrote:
While we are at it, here is the *complete* list of ACPICA interfaces that are meaningless on a hardware-reduced platform. If we are going to dynamically disable some of these interfaces, we will need to disable all of them -- for completeness. So, this is actually not a trivial change.
Yes, you are right. Actually, before I send this patch out, I searched all the ACPICA API on a hardware-reduced platform as you did, I found some of them will finally call acpi_hw_register_read/write(), so some of the ACPICA API do not need to change.
I agreed.
My idea is to keep the call path implemented using non-HWREDUCED ACPI silicon not-changed, but changing the code inside of a function implemented with the non-HWREDUCED logic to contain a HWREDUCED logic. This might be more reasonable. So IMO, it is not a good idea to reduce the APIs, but need to re-implement the APIs using HWREDUCED logic. And the non-HWREDUCED code inside of an API should be marked with ACPI_HARDWARE_REDUCED macro rather than the API itself be marked out. If the APIs (aka., ACPI functionalities) are kept un-modified, the device drivers can be kept un-modified on HWREDUCED platforms.
Thanks -Lv
Some of these APIs are already disabled in linux kernel tree now, such as acpi_enable(): acpi_status acpi_enable(void) { acpi_status status; int retry;
ACPI_FUNCTION_TRACE(acpi_enable);
/* ACPI tables must be present */
if (!acpi_tb_tables_loaded()) { return_ACPI_STATUS(AE_NO_ACPI_TABLES); }
/* If the Hardware Reduced flag is set, machine is always in acpi mode */
if (acpi_gbl_reduced_hardware) { return_ACPI_STATUS(AE_OK); } ... }
and some of them need to be disabled as you said.
I'll let the linux experts chime in on this one. Bob
AcpiInstallSciHandler AcpiRemoveSciHandler AcpiInstallGlobalEventHandler AcpiInstallFixedEventHandler AcpiRemoveFixedEventHandler AcpiInstallGpeHandler AcpiRemoveGpeHandler AcpiAcquireGlobalLock AcpiReleaseGlobalLock AcpiEnable AcpiDisable AcpiEnableEvent AcpiDisableEvent AcpiClearEvent AcpiGetEventStatus AcpiUpdateAllGpes AcpiEnableGpe AcpiDisableGpe AcpiSetGpe AcpiSetupGpeForWake AcpiSetGpeWakeMask AcpiClearGpe AcpiGetGpeStatus AcpiFinishGpe AcpiDisableAllGpes AcpiEnableAllRuntimeGpes AcpiInstallGpeBlock AcpiRemoveGpeBlock AcpiGetGpeDevice AcpiGetTimerResolution AcpiGetTimer AcpiGetTimerDuration AcpiReadBitRegister AcpiWriteBitRegister AcpiSetFirmwareWakingVector AcpiSetFirmwareWakingVector64 AcpiEnterSleepStateS4bios