diff --git a/doc/opal-api/opal-i2c-request-109.rst b/doc/opal-api/opal-i2c-request-109.rst new file mode 100644 index 000000000000..edcde4bcb094 --- /dev/null +++ b/doc/opal-api/opal-i2c-request-109.rst @@ -0,0 +1,64 @@ +.. _OPAL_I2C_REQUEST: + +OPAL_I2C_REQUEST +================ + +.. code-block:: c + + #define OPAL_I2C_REQUEST 109 + + /* OPAL I2C request */ + struct opal_i2c_request { + uint8_t type; + #define OPAL_I2C_RAW_READ 0 + #define OPAL_I2C_RAW_WRITE 1 + #define OPAL_I2C_SM_READ 2 + #define OPAL_I2C_SM_WRITE 3 + uint8_t flags; + #define OPAL_I2C_ADDR_10 0x01 /* Not supported yet */ + uint8_t subaddr_sz; /* Max 4 */ + uint8_t reserved; + __be16 addr; /* 7 or 10 bit address */ + __be16 reserved2; + __be32 subaddr; /* Sub-address if any */ + __be32 size; /* Data size */ + __be64 buffer_ra; /* Buffer real address */ + }; + + int opal_i2c_request(uint64_t async_token, uint32_t bus_id, + struct opal_i2c_request *oreq); + +Initiate I2C request using i2c master that OPAL controls. + +Return Codes +------------ + +Most return codes will come through as part of async completion. + +:ref:`OPAL_PARAMETER` + Invalid request pointer, or bus ID. +:ref:`OPAL_UNSUPPORTED` + Unsupported operation. e.g. 10 bit addresses not yet supported. +:ref:`OPAL_NO_MEM` + Not enough free memory in OPAL to initiate request. +:ref:`OPAL_ASYNC_COMPLETION` + Operation will complete asynchronously. +:ref:`OPAL_I2C_TIMEOUT` + I2C operation initiated successfully, but timed out. +:ref:`OPAL_I2C_INVALID_CMD` + Invalid i2c Command. +:ref:`OPAL_I2C_LBUS_PARITY` + I2C LBUS Parity error +:ref:`OPAL_I2C_BKEND_OVERRUN` + I2C Backend overrun. +:ref:`OPAL_I2C_BKEND_ACCESS` + I2C Backend Access error. +:ref:`OPAL_I2C_ARBT_LOST` + I2C Bus Arbitration lost. +:ref:`OPAL_I2C_NACK_RCVD` + I2C NACK received. +:ref:`OPAL_I2C_STOP_ERR` + I2C STOP error. +:ref:`OPAL_SUCCESS` + I2C operation completed successfully. Typically only as part of + async completion.