57 lines
1.7 KiB
ReStructuredText
57 lines
1.7 KiB
ReStructuredText
.. _OPAL_PCI_SET_POWER_STATE:
|
|
|
|
OPAL_PCI_SET_POWER_STATE
|
|
========================
|
|
|
|
.. code-block:: c
|
|
|
|
#define OPAL_PCI_SET_POWER_STATE 121
|
|
|
|
int64_t opal_pci_set_power_state(uint64_t async_token, uint64_t id, uint64_t data);
|
|
|
|
Set PCI slot power state
|
|
|
|
Parameters
|
|
----------
|
|
|
|
``uint64_t async_token``
|
|
Token of asynchronous message to be sent
|
|
on completion of OPAL_PCI_SLOT_POWER_{OFF, ON}. It is
|
|
ignored when @data is OPAL_PCI_SLOT_{OFFLINE, ONLINE}.
|
|
|
|
``uint64_t id``
|
|
PCI slot ID
|
|
|
|
``uint64_t data``
|
|
memory buffer pointer for the power state which
|
|
can be one of OPAL_PCI_SLOT_POWER_{OFF, ON, OFFLINE, ONLINE}.
|
|
|
|
Calling
|
|
-------
|
|
|
|
Set PCI slot's power state. The power state is stored in buffer pointed
|
|
by @data. The typical use is to hot add or remove adapters behind the
|
|
indicated PCI slot (by @id) in PCI hotplug path.
|
|
|
|
User will receive an asychronous message after calling the API. The message
|
|
contains the API completion status: event (Power off or on), device node's
|
|
phandle identifying the PCI slot, errcode (e.g. :ref:`OPAL_SUCCESS`). The API returns
|
|
:ref:`OPAL_ASYNC_COMPLETION` for the case.
|
|
|
|
The states OPAL_PCI_SLOT_OFFLINE and OPAL_PCI_SLOT_ONLINE are used for removing
|
|
or adding devices behind the slot. The device nodes in the device tree are
|
|
removed or added accordingly, without actually changing the slot's power state.
|
|
The API call will return OPAL_SUCCESS immediately and no further asynchronous
|
|
message will be sent.
|
|
|
|
Return Codes
|
|
------------
|
|
|
|
:ref:`OPAL_SUCCESS`
|
|
PCI hotplug on the slot is completed successfully
|
|
:ref:`OPAL_ASYNC_COMPLETION`
|
|
PCI hotplug needs further message to confirm
|
|
:ref:`OPAL_PARAMETER`
|
|
The indicated PCI slot isn't found
|
|
:ref:`OPAL_UNSUPPORTED`
|
|
Setting power state not supported on the PCI slot
|