ACPI/Board-EC interaction

From coreboot
Revision as of 18:38, 8 April 2014 by MrNuke (talk | contribs)
Jump to navigation Jump to search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!

This page details the required interface and implementation details for connecting embedded controller ASL files to mainboard ASL files. Implementing this specification is mandatory for every new mainboard/EC added to the tree.

WARNING! The rules presented here are still a work-in-progress and should not yet be taken as as mandatory. However, if you are implementing a new EC, mainboard, or are interested in refactoring existing ASL files, you should join in the conversation and get this specification finalized.

EC ASL files should be self-contained, and not depend on the specific chipset or mainboard. As a result all variables and methods which are used must be standardized to foster interoperability and modularity. This specification details how to achieve those points.

Hotkey event methods

Two proposals exist:

The hammer method

Define a set of common ACPI method names which the mainboard code should define, and the EC code can always use.

The mainboard must #define these to an existing method. The actual ASL methods must not use these long names in ASL. The "MB_" prefix indicates that the mainboard is providing these methods.

Notice that these methods are only called on hotkey events. As such, unless the user has really fast fingers, there isn't a huge ACPI overhead as opposed to setting/clearing the needed bits directly in the caller.

  • MB_TOGGLE_WLAN() or MB_TOGGLE_WIRELESS() (TODO: only one method should be defined!!!)
    • Toggle wireless LAN on and off, or wireless LAN and bluetooth (respectively). EC calls this on hotkey events.
  • MB_INCREASE_BRIGHTNESS() and MB_DECREASE_BRIGHTNESS()
    • Increase or decrease screen brightness. EC calls this on hotkey events.
  • MB_SWITCH_DISPLAY()
    • Switch the active display. EC calls this on hotkey events.
  • MB_NOTIFY_POWER_EVENT()
    • Handle power state notifications and notify CPU device objects to re-evaluate their _PPC and _CST tables.

The mainboard handler method