blob: f8006e643ebc33bdacf02f0d94483ff59bdaf11c [file] [log] [blame]
.. _OPAL_XSCOM_READ:
OPAL_XSCOM_READ
===============
.. code-block:: c
#define OPAL_XSCOM_READ 65
int xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val);
This low level call will read XSCOM values directly.
They should only be used by low level manufacturing/debug tools.
"Normal" host OS kernel code should not know about XSCOM.
This is also needed by HBRT/`opal-prd`.
Returns
-------
:ref:`OPAL_SUCCESS`
Success!
:ref:`OPAL_HARDWARE`
if operation failed
:ref:`OPAL_WRONG_STATE`
if CPU is asleep
:ref:`OPAL_XSCOM_BUSY`
Alias for :ref:`OPAL_BUSY`.
:ref:`OPAL_XSCOM_CHIPLET_OFF`
Alias for :ref:`OPAL_WRONG_STATE`
:ref:`OPAL_XSCOM_PARTIAL_GOOD`
XSCOM Partial Good
:ref:`OPAL_XSCOM_ADDR_ERROR`
XSCOM Address Error
:ref:`OPAL_XSCOM_CLOCK_ERROR`
XSCOM Clock Error
:ref:`OPAL_XSCOM_PARITY_ERROR`
XSCOM Parity Error
:ref:`OPAL_XSCOM_TIMEOUT`
XSCOM Timeout
:ref:`OPAL_XSCOM_CTR_OFFLINED`
XSCOM Controller Offlined due to too many errors.
.. _OPAL_XSCOM_WRITE:
OPAL_XSCOM_WRITE
================
.. code-block:: c
#define OPAL_XSCOM_WRITE 66
int xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val);
This low level call will write an XSCOM value directly.
They should only be used by low level manufacturing/debug tools.
"Normal" host OS kernel code should not know about XSCOM.
This is also needed by HBRT/`opal-prd`.
Returns
-------
:ref:`OPAL_SUCCESS`
Success!
:ref:`OPAL_HARDWARE`
if operation failed
:ref:`OPAL_WRONG_STATE`
if CPU is asleep
:ref:`OPAL_XSCOM_BUSY`
Alias for :ref:`OPAL_BUSY`.
:ref:`OPAL_XSCOM_CHIPLET_OFF`
Alias for :ref:`OPAL_WRONG_STATE`
:ref:`OPAL_XSCOM_PARTIAL_GOOD`
XSCOM Partial Good
:ref:`OPAL_XSCOM_ADDR_ERROR`
XSCOM Address Error
:ref:`OPAL_XSCOM_CLOCK_ERROR`
XSCOM Clock Error
:ref:`OPAL_XSCOM_PARITY_ERROR`
XSCOM Parity Error
:ref:`OPAL_XSCOM_TIMEOUT`
XSCOM Timeout
:ref:`OPAL_XSCOM_CTR_OFFLINED`
XSCOM Controller Offlined due to too many errors.