OPAL Timed Power On and Delayed Power Off¶
#define OPAL_WRITE_TPO 103
#define OPAL_READ_TPO 104
#define OPAL_GET_DPO_STATUS 105
TPO is a Timed Power On facility, and DPO is Delayed Power Off.
It is an OPTIONAL part of the OPAL spec.
If a platform supports Timed Power On (TPO), the RTC node in the device tree (itself under the “ibm,opal” node will have the has-tpo property:
rtc {
compatible = "ibm,opal-rtc";
has-tpo;
};
If the “has-tpo” proprety is NOT present then OPAL does NOT support TPO.
OPAL_READ_TPO¶
#define OPAL_READ_TPO 104
static int64_t opal_read_tpo(uint64_t async_token, uint32_t *y_m_d, uint32_t *hr_min);
OPAL_WRITE_TPO¶
#define OPAL_WRITE_TPO 103
int64_t fsp_opal_tpo_write(uint64_t async_token, uint32_t y_m_d, uint32_t hr_min);
OPAL_GET_DPO_STATUS¶
#define OPAL_GET_DPO_STATUS 105
static int64_t opal_get_dpo_status(int64_t *dpo_timeout);
A OPAL_MSG_DPO message may be sent to indicate that there will shortly be a forced system shutdown. In this case, an OS can call OPAL_GET_DPO_STATUS to find out how many seconds it has before power is cut to the system.
This call could be present on systems where the service processor is integrated with a UPS or similar.
Returns zero if Delayed Power Off is not active, positive value indicating number of seconds remaining for a forced system shutdown. This will enable the host to schedule for shutdown voluntarily before timeout occurs.
Returns¶
- OPAL_SUCCESS
dpo_timeout
is set to the number of seconds remaining before power is cut.- OPAL_WRONG_STATE
A Delayed Power Off is not pending,
dpo_timeout
is set to zero.